UNPKG

@robertprp/intents-sdk

Version:

Shogun Network Intent-based cross-chain swaps SDK

130 lines 4.53 kB
import { encodeFunctionData } from 'viem'; const CROSS_CHAIN_CANCEL_ORDER_ABI = [ { inputs: [ { components: [ { name: 'user', type: 'address' }, { name: 'tokenIn', type: 'address' }, { name: 'srcChainId', type: 'uint256' }, { name: 'deadline', type: 'uint256' }, { name: 'amountIn', type: 'uint256' }, { name: 'minStablecoinsAmount', type: 'uint256' }, { name: 'executionDetailsHash', type: 'bytes32' }, { name: 'nonce', type: 'uint256' }, ], name: 'orderInfo', type: 'tuple', }, ], name: 'cancelOrder', outputs: [], stateMutability: 'nonpayable', type: 'function', }, ]; const SINGLE_CHAIN_CANCEL_ORDER_ABI = [ { inputs: [ { components: [ { name: 'amountIn', type: 'uint256' }, { name: 'tokenIn', type: 'address' }, { name: 'deadline', type: 'uint256' }, { name: 'nonce', type: 'uint256' }, { name: 'encodedExternalCallData', type: 'bytes' }, { components: [ { name: 'amount', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'token', type: 'address' }, ], name: 'extraTransfers', type: 'tuple[]', }, { components: [ { name: 'amount', type: 'uint256' }, { name: 'receiver', type: 'address' }, { name: 'token', type: 'address' }, ], name: 'requestedOutput', type: 'tuple', }, { name: 'user', type: 'address' }, ], name: 'order', type: 'tuple', }, ], name: 'cancelManuallyCreatedOrder', outputs: [], stateMutability: 'nonpayable', type: 'function', }, ]; const PERMIT2_INVALIDATE_NONCES_ABI = [ { inputs: [ { name: 'wordPos', type: 'uint256' }, { name: 'mask', type: 'uint256' }, ], name: 'invalidateUnorderedNonces', outputs: [], stateMutability: 'nonpayable', type: 'function', }, ]; export async function getCancelCrossChainOrderRawData(params) { const orderInfo = { user: params.user, tokenIn: params.tokenIn, srcChainId: BigInt(params.srcChainId), deadline: BigInt(params.deadline), amountIn: params.amountIn, minStablecoinsAmount: params.minStablecoinsAmount, executionDetailsHash: params.executionDetailsHash, nonce: params.nonce, }; return encodeFunctionData({ abi: CROSS_CHAIN_CANCEL_ORDER_ABI, functionName: 'cancelOrder', args: [orderInfo], }); } export async function getCancelSingleChainOrderRawData(params) { const order = { amountIn: params.amountIn, tokenIn: params.tokenIn, deadline: BigInt(params.deadline), nonce: params.nonce, encodedExternalCallData: params.encodedExternalCallData, extraTransfers: params.extraTransfers.map((transfer) => ({ amount: transfer.amount, receiver: transfer.receiver, token: transfer.token, })), requestedOutput: { amount: params.requestedOutput.amount, receiver: params.requestedOutput.receiver, token: params.requestedOutput.token, }, user: params.user, }; return encodeFunctionData({ abi: SINGLE_CHAIN_CANCEL_ORDER_ABI, functionName: 'cancelManuallyCreatedOrder', args: [order], }); } export function getInvalidateNoncesRawData(nonce) { const nonceWordPos = nonce >> 8n; const nonceBitPos = nonce - nonceWordPos * 256n; const mask = 1n << nonceBitPos; return encodeFunctionData({ abi: PERMIT2_INVALIDATE_NONCES_ABI, functionName: 'invalidateUnorderedNonces', args: [nonceWordPos, mask], }); } //# sourceMappingURL=cancel-order.js.map