ISynapseIntentRouter

Git Source

Functions

completeIntentWithBalanceChecks

Kindly ask SIR to complete the provided intent by completing a series of Zap steps using the provided ZapRecipient contract.

  • Each step is verified to be a correct Zap as per IZapRecipient specification.
  • The amounts used for each step can be predetermined or based on the proceeds from the previous steps.
  • SIR does not perform any checks on the Zap Data; the user is responsible for ensuring correct encoding.
  • The user is responsible for selecting the correct ZapRecipient for their intent: ZapRecipient must be able to modify the Zap Data to adjust to possible changes in the passed amount value.
  • SIR checks that the ZapRecipient balance for every token in steps has not increased after the last step.

Typical workflow involves a series of preparation steps followed by the last step representing the user intent such as bridging, depositing, or a simple transfer to the final recipient. The ZapRecipient must be the funds recipient for the preparation steps, while the final recipient must be used for the last step.

*This function will revert in any of the following cases:

  • The deadline has passed.
  • The array of StepParams is empty.
  • The amount of tokens to use for the last step is below the specified minimum.
  • Any step fails.
  • msg.value does not match sum(steps[i].msgValue).*
function completeIntentWithBalanceChecks(
    address zapRecipient,
    uint256 amountIn,
    uint256 minLastStepAmountIn,
    uint256 deadline,
    StepParams[] memory steps
)
    external
    payable;

Parameters

NameTypeDescription
zapRecipientaddressAddress of the IZapRecipient contract to use for the Zap steps
amountInuint256Initial amount of tokens (steps[0].token) to transfer into ZapRecipient
minLastStepAmountInuint256Minimum amount of tokens (steps[N-1].token) to use for the last step
deadlineuint256Deadline for the intent to be completed
stepsStepParams[]Parameters for each step. Use amount = type(uint256).max for steps that should use the full ZapRecipient balance.

completeIntent

Kindly ask SIR to complete the provided intent by completing a series of Zap steps using the provided ZapRecipient contract.

This function is identical to completeIntentWithBalanceChecks except that it does not verify that the ZapRecipient balance for every token in steps has not increased after the last Zap. Anyone using this function must validate that the funds are fully spent by ZapRecipient using other means like separate on-chain checks or off-chain simulation.

function completeIntent(
    address zapRecipient,
    uint256 amountIn,
    uint256 minLastStepAmountIn,
    uint256 deadline,
    StepParams[] memory steps
)
    external
    payable;

Structs

StepParams

Parameters for a single Zap step.

struct StepParams {
    address token;
    uint256 amount;
    uint256 msgValue;
    bytes zapData;
}