Using the full ERC20 or Native balance in a call
The Squid Multicall can update the value of a param on-chain before or after the Swap or bridge has occurred. This lets you do the following:
Send the remainder of tokens to the user's address, after minting or buying something at a fixed price
Stake the full amount received from a swap
Unstake, then swap the full amount across chains
This is designated by using callType
export enum SquidCallType {
DEFAULT = 0,
FULL_TOKEN_BALANCE = 1,
FULL_NATIVE_BALANCE = 2,
COLLECT_TOKEN_BALANCE = 3, // unused in hooks
}const sendRemainderToUserCall = {
callType: SquidCallType.FULL_TOKEN_BALANCE, // transfer any remaining MAGIC to the user's account
target: magicToken,
value: "0",
callData: transferMagicEncodeData,
payload: {
tokenAddress: magicToken,
inputPos: 1,
},
estimatedGas: "50000",
},const mintLoanWithFullNativeBalanceCall = {
callType: SquidCallType.FULL_NATIVE_BALANCE,
target: moonwellGlmrAddress,
value: "0", // this will be replaced by the full native balance of the multicall after the swap
callData: mintEncodeData,
payload: {
tokenAddress: "0x", // unused in callType 2, dummy value
inputPos: 1, // unused
},
estimatedGas: "250000",
},const repayLoanCall = {
callType: SquidCallType.DEFAULT, 0
target: aavePoolAddress,
value: '0',
callData: repayEncodedData,
estimatedGas: '50000',
payload: {
tokenAddress: "", // unused in callType 0, dummy value
inputPos: 0, // unused in callType 0, dummy value
}Last updated