ISynapseIntentRouter
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 matchsum(steps[i].msgValue)
.*
function completeIntentWithBalanceChecks(
address zapRecipient,
uint256 amountIn,
uint256 minLastStepAmountIn,
uint256 deadline,
StepParams[] memory steps
)
external
payable;
Parameters
Name | Type | Description |
---|---|---|
zapRecipient | address | Address of the IZapRecipient contract to use for the Zap steps |
amountIn | uint256 | Initial amount of tokens (steps[0].token) to transfer into ZapRecipient |
minLastStepAmountIn | uint256 | Minimum amount of tokens (steps[N-1].token) to use for the last step |
deadline | uint256 | Deadline for the intent to be completed |
steps | StepParams[] | 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;
}