@shogun-sdk/intents-sdk 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{_esm → esm}/chains.js +12 -14
- package/dist/esm/chains.js.map +1 -0
- package/dist/{_esm → esm}/constants.js +5 -1
- package/dist/{_esm → esm}/constants.js.map +1 -1
- package/dist/esm/core/evm/abi/permit2.js +395 -0
- package/dist/esm/core/evm/abi/permit2.js.map +1 -0
- package/dist/{_esm → esm}/core/evm/abi/source-chain-guard.js +2 -1
- package/dist/esm/core/evm/abi/source-chain-guard.js.map +1 -0
- package/dist/{_esm → esm}/core/evm/intent-provider.js.map +1 -1
- package/dist/{_esm → esm}/core/evm/order-signature.js +11 -0
- package/dist/esm/core/evm/order-signature.js.map +1 -0
- package/dist/esm/core/evm/sdk.js +154 -0
- package/dist/esm/core/evm/sdk.js.map +1 -0
- package/dist/{_esm → esm}/core/evm/viem-provider.js +27 -0
- package/dist/esm/core/evm/viem-provider.js.map +1 -0
- package/dist/{_esm → esm}/core/sdk.js +9 -6
- package/dist/esm/core/sdk.js.map +1 -0
- package/dist/{_esm → esm}/core/solana/order-instructions.js +10 -0
- package/dist/esm/core/solana/order-instructions.js.map +1 -0
- package/dist/{_esm → esm}/core/solana/sdk.js +11 -1
- package/dist/esm/core/solana/sdk.js.map +1 -0
- package/dist/{_esm → esm}/core/sui/order-transaction.js +10 -0
- package/dist/esm/core/sui/order-transaction.js.map +1 -0
- package/dist/{_esm → esm}/core/sui/sdk.js +3 -0
- package/dist/esm/core/sui/sdk.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/api.js +2 -0
- package/dist/esm/types/api.js.map +1 -0
- package/dist/esm/types/user-order.js +16 -0
- package/dist/esm/types/user-order.js.map +1 -0
- package/dist/{_esm → esm}/utils/defillama.js +4 -4
- package/dist/esm/utils/defillama.js.map +1 -0
- package/dist/{_esm → esm}/utils/order-validator.js +1 -1
- package/dist/{_esm → esm}/utils/order-validator.js.map +1 -1
- package/dist/{_esm → esm}/utils/parsers.js +1 -1
- package/dist/esm/utils/parsers.js.map +1 -0
- package/dist/{_types → types}/chains.d.ts +12 -22
- package/dist/types/chains.d.ts.map +1 -0
- package/dist/{_types → types}/constants.d.ts +2 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/core/evm/abi/permit2.d.ts +304 -0
- package/dist/types/core/evm/abi/permit2.d.ts.map +1 -0
- package/dist/{_types → types}/core/evm/abi/source-chain-guard.d.ts +1 -1
- package/dist/{_types → types}/core/evm/abi/source-chain-guard.d.ts.map +1 -1
- package/dist/{_types → types}/core/evm/intent-provider.d.ts +2 -1
- package/dist/{_types → types}/core/evm/intent-provider.d.ts.map +1 -1
- package/dist/{_types → types}/core/evm/order-signature.d.ts +6 -0
- package/dist/types/core/evm/order-signature.d.ts.map +1 -0
- package/dist/{_types → types}/core/evm/sdk.d.ts +4 -0
- package/dist/types/core/evm/sdk.d.ts.map +1 -0
- package/dist/types/core/evm/viem-provider.d.ts +19304 -0
- package/dist/{_types → types}/core/evm/viem-provider.d.ts.map +1 -1
- package/dist/{_types → types}/core/sdk.d.ts +7 -4
- package/dist/types/core/sdk.d.ts.map +1 -0
- package/dist/{_types → types}/core/solana/order-instructions.d.ts +5 -0
- package/dist/types/core/solana/order-instructions.d.ts.map +1 -0
- package/dist/{_types → types}/core/solana/sdk.d.ts +1 -0
- package/dist/{_types → types}/core/solana/sdk.d.ts.map +1 -1
- package/dist/{_types → types}/core/sui/order-transaction.d.ts +5 -0
- package/dist/types/core/sui/order-transaction.d.ts.map +1 -0
- package/dist/{_types → types}/core/sui/sdk.d.ts +1 -0
- package/dist/types/core/sui/sdk.d.ts.map +1 -0
- package/dist/{_types → types}/index.d.ts +6 -3
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/api.d.ts +8 -0
- package/dist/types/types/api.d.ts.map +1 -0
- package/dist/types/types/user-order.d.ts +37 -0
- package/dist/types/types/user-order.d.ts.map +1 -0
- package/dist/{_types → types}/utils/defillama.d.ts +1 -1
- package/dist/types/utils/defillama.d.ts.map +1 -0
- package/dist/{_types → types}/utils/parsers.d.ts.map +1 -1
- package/package.json +9 -10
- package/src/chains.ts +16 -30
- package/src/constants.ts +7 -1
- package/src/core/evm/abi/permit2.ts +394 -0
- package/src/core/evm/abi/source-chain-guard.ts +2 -1
- package/src/core/evm/intent-provider.ts +1 -1
- package/src/core/evm/order-signature.ts +23 -0
- package/src/core/evm/sdk.ts +96 -0
- package/src/core/evm/viem-provider.ts +29 -0
- package/src/core/sdk.ts +20 -12
- package/src/core/solana/order-instructions.ts +20 -0
- package/src/core/solana/sdk.ts +14 -0
- package/src/core/sui/order-transaction.ts +20 -0
- package/src/core/sui/sdk.ts +4 -0
- package/src/index.ts +12 -3
- package/src/types/api.ts +9 -0
- package/src/types/user-order.ts +74 -0
- package/src/utils/defillama.ts +52 -46
- package/src/utils/order-validator.ts +1 -1
- package/src/utils/parsers.ts +1 -2
- package/dist/_esm/chains.js.map +0 -1
- package/dist/_esm/core/evm/abi/source-chain-guard.js.map +0 -1
- package/dist/_esm/core/evm/order-signature.js.map +0 -1
- package/dist/_esm/core/evm/sdk.js +0 -79
- package/dist/_esm/core/evm/sdk.js.map +0 -1
- package/dist/_esm/core/evm/viem-provider.js.map +0 -1
- package/dist/_esm/core/sdk.js.map +0 -1
- package/dist/_esm/core/solana/order-instructions.js.map +0 -1
- package/dist/_esm/core/solana/sdk.js.map +0 -1
- package/dist/_esm/core/sui/order-transaction.js.map +0 -1
- package/dist/_esm/core/sui/sdk.js.map +0 -1
- package/dist/_esm/index.js +0 -8
- package/dist/_esm/index.js.map +0 -1
- package/dist/_esm/package.json +0 -1
- package/dist/_esm/utils/defillama.js.map +0 -1
- package/dist/_esm/utils/parsers.js.map +0 -1
- package/dist/_types/chains.d.ts.map +0 -1
- package/dist/_types/constants.d.ts.map +0 -1
- package/dist/_types/core/evm/order-signature.d.ts.map +0 -1
- package/dist/_types/core/evm/sdk.d.ts.map +0 -1
- package/dist/_types/core/evm/viem-provider.d.ts +0 -9657
- package/dist/_types/core/sdk.d.ts.map +0 -1
- package/dist/_types/core/solana/order-instructions.d.ts.map +0 -1
- package/dist/_types/core/sui/order-transaction.d.ts.map +0 -1
- package/dist/_types/core/sui/sdk.d.ts.map +0 -1
- package/dist/_types/index.d.ts.map +0 -1
- package/dist/_types/utils/defillama.d.ts.map +0 -1
- /package/dist/{_esm → esm}/config.js +0 -0
- /package/dist/{_esm → esm}/config.js.map +0 -0
- /package/dist/{_esm → esm}/core/evm/abi/erc20.js +0 -0
- /package/dist/{_esm → esm}/core/evm/abi/erc20.js.map +0 -0
- /package/dist/{_esm → esm}/core/evm/intent-provider.js +0 -0
- /package/dist/{_esm → esm}/core/evm/permit2.js +0 -0
- /package/dist/{_esm → esm}/core/evm/permit2.js.map +0 -0
- /package/dist/{_esm → esm}/core/evm/validator.js +0 -0
- /package/dist/{_esm → esm}/core/evm/validator.js.map +0 -0
- /package/dist/{_esm → esm}/core/order.js +0 -0
- /package/dist/{_esm → esm}/core/order.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/client.js +0 -0
- /package/dist/{_esm → esm}/core/solana/client.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/adminSingleton.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/adminSingleton.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/guard.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/guard.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/order.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/accounts/order.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/errors/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/errors/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/errors/sourceChainGuard.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/errors/sourceChainGuard.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/cancelOrder.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/cancelOrder.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/claimTokens.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/claimTokens.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/collectProtocolFees.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/collectProtocolFees.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/createGuard.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/createGuard.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/createOrder.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/createOrder.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/initialize.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/initialize.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/preStartOrderExecution.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/preStartOrderExecution.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/setAdmin.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/setAdmin.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/setAuctioneerPubKey.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/setAuctioneerPubKey.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/startOrderExecution.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/startOrderExecution.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/startOrderExecutionAfterSwap.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/instructions/startOrderExecutionAfterSwap.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/programs/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/programs/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/programs/sourceChainGuard.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/programs/sourceChainGuard.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/shared/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/shared/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/adminUpdated.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/adminUpdated.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/auctioneerPubkeyUpdated.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/auctioneerPubkeyUpdated.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/executionStarted.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/executionStarted.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/guardCreated.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/guardCreated.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/index.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/index.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderCancelled.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderCancelled.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderCreated.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderCreated.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderFulfilled.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/orderFulfilled.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/tokenInSwapped.js +0 -0
- /package/dist/{_esm → esm}/core/solana/generated/types/tokenInSwapped.js.map +0 -0
- /package/dist/{_esm → esm}/core/solana/validator.js +0 -0
- /package/dist/{_esm → esm}/core/solana/validator.js.map +0 -0
- /package/dist/{_esm → esm}/core/sui/client.js +0 -0
- /package/dist/{_esm → esm}/core/sui/client.js.map +0 -0
- /package/dist/{_esm → esm}/core/sui/validator.js +0 -0
- /package/dist/{_esm → esm}/core/sui/validator.js.map +0 -0
- /package/dist/{_esm → esm}/errors/index.js +0 -0
- /package/dist/{_esm → esm}/errors/index.js.map +0 -0
- /package/dist/{_esm → esm}/types/intent.js +0 -0
- /package/dist/{_esm → esm}/types/intent.js.map +0 -0
- /package/dist/{_esm → esm}/utils/base-validator.js +0 -0
- /package/dist/{_esm → esm}/utils/base-validator.js.map +0 -0
- /package/dist/{_esm → esm}/utils/logger.js +0 -0
- /package/dist/{_esm → esm}/utils/logger.js.map +0 -0
- /package/dist/{_esm → esm}/utils/type-utils.js +0 -0
- /package/dist/{_esm → esm}/utils/type-utils.js.map +0 -0
- /package/dist/{_types → types}/config.d.ts +0 -0
- /package/dist/{_types → types}/config.d.ts.map +0 -0
- /package/dist/{_types → types}/core/evm/abi/erc20.d.ts +0 -0
- /package/dist/{_types → types}/core/evm/abi/erc20.d.ts.map +0 -0
- /package/dist/{_types → types}/core/evm/permit2.d.ts +0 -0
- /package/dist/{_types → types}/core/evm/permit2.d.ts.map +0 -0
- /package/dist/{_types → types}/core/evm/validator.d.ts +0 -0
- /package/dist/{_types → types}/core/evm/validator.d.ts.map +0 -0
- /package/dist/{_types → types}/core/order.d.ts +0 -0
- /package/dist/{_types → types}/core/order.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/client.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/client.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/adminSingleton.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/adminSingleton.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/guard.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/guard.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/order.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/accounts/order.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/errors/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/errors/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/errors/sourceChainGuard.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/errors/sourceChainGuard.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/cancelOrder.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/cancelOrder.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/claimTokens.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/claimTokens.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/collectProtocolFees.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/collectProtocolFees.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/createGuard.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/createGuard.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/createOrder.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/createOrder.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/initialize.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/initialize.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/preStartOrderExecution.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/preStartOrderExecution.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/setAdmin.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/setAdmin.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/setAuctioneerPubKey.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/setAuctioneerPubKey.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/startOrderExecution.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/startOrderExecution.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/programs/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/programs/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/programs/sourceChainGuard.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/programs/sourceChainGuard.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/shared/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/shared/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/adminUpdated.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/adminUpdated.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/executionStarted.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/executionStarted.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/guardCreated.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/guardCreated.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/index.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/index.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderCancelled.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderCancelled.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderCreated.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderCreated.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderFulfilled.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/orderFulfilled.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/tokenInSwapped.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/generated/types/tokenInSwapped.d.ts.map +0 -0
- /package/dist/{_types → types}/core/solana/validator.d.ts +0 -0
- /package/dist/{_types → types}/core/solana/validator.d.ts.map +0 -0
- /package/dist/{_types → types}/core/sui/client.d.ts +0 -0
- /package/dist/{_types → types}/core/sui/client.d.ts.map +0 -0
- /package/dist/{_types → types}/core/sui/validator.d.ts +0 -0
- /package/dist/{_types → types}/core/sui/validator.d.ts.map +0 -0
- /package/dist/{_types → types}/errors/index.d.ts +0 -0
- /package/dist/{_types → types}/errors/index.d.ts.map +0 -0
- /package/dist/{_types → types}/types/intent.d.ts +0 -0
- /package/dist/{_types → types}/types/intent.d.ts.map +0 -0
- /package/dist/{_types → types}/utils/base-validator.d.ts +0 -0
- /package/dist/{_types → types}/utils/base-validator.d.ts.map +0 -0
- /package/dist/{_types → types}/utils/logger.d.ts +0 -0
- /package/dist/{_types → types}/utils/logger.d.ts.map +0 -0
- /package/dist/{_types → types}/utils/order-validator.d.ts +0 -0
- /package/dist/{_types → types}/utils/order-validator.d.ts.map +0 -0
- /package/dist/{_types → types}/utils/parsers.d.ts +0 -0
- /package/dist/{_types → types}/utils/type-utils.d.ts +0 -0
- /package/dist/{_types → types}/utils/type-utils.d.ts.map +0 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
export const PERMIT2_ABI = [
|
|
2
|
+
{
|
|
3
|
+
inputs: [
|
|
4
|
+
{
|
|
5
|
+
internalType: 'uint256',
|
|
6
|
+
name: 'maxAmount',
|
|
7
|
+
type: 'uint256',
|
|
8
|
+
},
|
|
9
|
+
],
|
|
10
|
+
name: 'InvalidAmount',
|
|
11
|
+
type: 'error',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
inputs: [],
|
|
15
|
+
name: 'LengthMismatch',
|
|
16
|
+
type: 'error',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
anonymous: false,
|
|
20
|
+
inputs: [
|
|
21
|
+
{
|
|
22
|
+
indexed: true,
|
|
23
|
+
internalType: 'address',
|
|
24
|
+
name: 'owner',
|
|
25
|
+
type: 'address',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
indexed: false,
|
|
29
|
+
internalType: 'uint256',
|
|
30
|
+
name: 'word',
|
|
31
|
+
type: 'uint256',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
indexed: false,
|
|
35
|
+
internalType: 'uint256',
|
|
36
|
+
name: 'mask',
|
|
37
|
+
type: 'uint256',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
name: 'UnorderedNonceInvalidation',
|
|
41
|
+
type: 'event',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
inputs: [],
|
|
45
|
+
name: 'DOMAIN_SEPARATOR',
|
|
46
|
+
outputs: [
|
|
47
|
+
{
|
|
48
|
+
internalType: 'bytes32',
|
|
49
|
+
name: '',
|
|
50
|
+
type: 'bytes32',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
stateMutability: 'view',
|
|
54
|
+
type: 'function',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
inputs: [
|
|
58
|
+
{
|
|
59
|
+
internalType: 'uint256',
|
|
60
|
+
name: 'wordPos',
|
|
61
|
+
type: 'uint256',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
internalType: 'uint256',
|
|
65
|
+
name: 'mask',
|
|
66
|
+
type: 'uint256',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
name: 'invalidateUnorderedNonces',
|
|
70
|
+
outputs: [],
|
|
71
|
+
stateMutability: 'nonpayable',
|
|
72
|
+
type: 'function',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
inputs: [
|
|
76
|
+
{
|
|
77
|
+
internalType: 'address',
|
|
78
|
+
name: '',
|
|
79
|
+
type: 'address',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
internalType: 'uint256',
|
|
83
|
+
name: '',
|
|
84
|
+
type: 'uint256',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
name: 'nonceBitmap',
|
|
88
|
+
outputs: [
|
|
89
|
+
{
|
|
90
|
+
internalType: 'uint256',
|
|
91
|
+
name: '',
|
|
92
|
+
type: 'uint256',
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
stateMutability: 'view',
|
|
96
|
+
type: 'function',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
inputs: [
|
|
100
|
+
{
|
|
101
|
+
components: [
|
|
102
|
+
{
|
|
103
|
+
components: [
|
|
104
|
+
{
|
|
105
|
+
internalType: 'address',
|
|
106
|
+
name: 'token',
|
|
107
|
+
type: 'address',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
internalType: 'uint256',
|
|
111
|
+
name: 'amount',
|
|
112
|
+
type: 'uint256',
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
internalType: 'struct ISignatureTransfer.TokenPermissions',
|
|
116
|
+
name: 'permitted',
|
|
117
|
+
type: 'tuple',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
internalType: 'uint256',
|
|
121
|
+
name: 'nonce',
|
|
122
|
+
type: 'uint256',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
internalType: 'uint256',
|
|
126
|
+
name: 'deadline',
|
|
127
|
+
type: 'uint256',
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
internalType: 'struct ISignatureTransfer.PermitTransferFrom',
|
|
131
|
+
name: 'permit',
|
|
132
|
+
type: 'tuple',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
components: [
|
|
136
|
+
{
|
|
137
|
+
internalType: 'address',
|
|
138
|
+
name: 'to',
|
|
139
|
+
type: 'address',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
internalType: 'uint256',
|
|
143
|
+
name: 'requestedAmount',
|
|
144
|
+
type: 'uint256',
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
internalType: 'struct ISignatureTransfer.SignatureTransferDetails',
|
|
148
|
+
name: 'transferDetails',
|
|
149
|
+
type: 'tuple',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
internalType: 'address',
|
|
153
|
+
name: 'owner',
|
|
154
|
+
type: 'address',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
internalType: 'bytes',
|
|
158
|
+
name: 'signature',
|
|
159
|
+
type: 'bytes',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
name: 'permitTransferFrom',
|
|
163
|
+
outputs: [],
|
|
164
|
+
stateMutability: 'nonpayable',
|
|
165
|
+
type: 'function',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
inputs: [
|
|
169
|
+
{
|
|
170
|
+
components: [
|
|
171
|
+
{
|
|
172
|
+
components: [
|
|
173
|
+
{
|
|
174
|
+
internalType: 'address',
|
|
175
|
+
name: 'token',
|
|
176
|
+
type: 'address',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
internalType: 'uint256',
|
|
180
|
+
name: 'amount',
|
|
181
|
+
type: 'uint256',
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
internalType: 'struct ISignatureTransfer.TokenPermissions[]',
|
|
185
|
+
name: 'permitted',
|
|
186
|
+
type: 'tuple[]',
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
internalType: 'uint256',
|
|
190
|
+
name: 'nonce',
|
|
191
|
+
type: 'uint256',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
internalType: 'uint256',
|
|
195
|
+
name: 'deadline',
|
|
196
|
+
type: 'uint256',
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',
|
|
200
|
+
name: 'permit',
|
|
201
|
+
type: 'tuple',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
components: [
|
|
205
|
+
{
|
|
206
|
+
internalType: 'address',
|
|
207
|
+
name: 'to',
|
|
208
|
+
type: 'address',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
internalType: 'uint256',
|
|
212
|
+
name: 'requestedAmount',
|
|
213
|
+
type: 'uint256',
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',
|
|
217
|
+
name: 'transferDetails',
|
|
218
|
+
type: 'tuple[]',
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
internalType: 'address',
|
|
222
|
+
name: 'owner',
|
|
223
|
+
type: 'address',
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
internalType: 'bytes',
|
|
227
|
+
name: 'signature',
|
|
228
|
+
type: 'bytes',
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
name: 'permitTransferFrom',
|
|
232
|
+
outputs: [],
|
|
233
|
+
stateMutability: 'nonpayable',
|
|
234
|
+
type: 'function',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
inputs: [
|
|
238
|
+
{
|
|
239
|
+
components: [
|
|
240
|
+
{
|
|
241
|
+
components: [
|
|
242
|
+
{
|
|
243
|
+
internalType: 'address',
|
|
244
|
+
name: 'token',
|
|
245
|
+
type: 'address',
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
internalType: 'uint256',
|
|
249
|
+
name: 'amount',
|
|
250
|
+
type: 'uint256',
|
|
251
|
+
},
|
|
252
|
+
],
|
|
253
|
+
internalType: 'struct ISignatureTransfer.TokenPermissions',
|
|
254
|
+
name: 'permitted',
|
|
255
|
+
type: 'tuple',
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
internalType: 'uint256',
|
|
259
|
+
name: 'nonce',
|
|
260
|
+
type: 'uint256',
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
internalType: 'uint256',
|
|
264
|
+
name: 'deadline',
|
|
265
|
+
type: 'uint256',
|
|
266
|
+
},
|
|
267
|
+
],
|
|
268
|
+
internalType: 'struct ISignatureTransfer.PermitTransferFrom',
|
|
269
|
+
name: 'permit',
|
|
270
|
+
type: 'tuple',
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
components: [
|
|
274
|
+
{
|
|
275
|
+
internalType: 'address',
|
|
276
|
+
name: 'to',
|
|
277
|
+
type: 'address',
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
internalType: 'uint256',
|
|
281
|
+
name: 'requestedAmount',
|
|
282
|
+
type: 'uint256',
|
|
283
|
+
},
|
|
284
|
+
],
|
|
285
|
+
internalType: 'struct ISignatureTransfer.SignatureTransferDetails',
|
|
286
|
+
name: 'transferDetails',
|
|
287
|
+
type: 'tuple',
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
internalType: 'address',
|
|
291
|
+
name: 'owner',
|
|
292
|
+
type: 'address',
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
internalType: 'bytes32',
|
|
296
|
+
name: 'witness',
|
|
297
|
+
type: 'bytes32',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
internalType: 'string',
|
|
301
|
+
name: 'witnessTypeString',
|
|
302
|
+
type: 'string',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
internalType: 'bytes',
|
|
306
|
+
name: 'signature',
|
|
307
|
+
type: 'bytes',
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
name: 'permitWitnessTransferFrom',
|
|
311
|
+
outputs: [],
|
|
312
|
+
stateMutability: 'nonpayable',
|
|
313
|
+
type: 'function',
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
inputs: [
|
|
317
|
+
{
|
|
318
|
+
components: [
|
|
319
|
+
{
|
|
320
|
+
components: [
|
|
321
|
+
{
|
|
322
|
+
internalType: 'address',
|
|
323
|
+
name: 'token',
|
|
324
|
+
type: 'address',
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
internalType: 'uint256',
|
|
328
|
+
name: 'amount',
|
|
329
|
+
type: 'uint256',
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
internalType: 'struct ISignatureTransfer.TokenPermissions[]',
|
|
333
|
+
name: 'permitted',
|
|
334
|
+
type: 'tuple[]',
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
internalType: 'uint256',
|
|
338
|
+
name: 'nonce',
|
|
339
|
+
type: 'uint256',
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
internalType: 'uint256',
|
|
343
|
+
name: 'deadline',
|
|
344
|
+
type: 'uint256',
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',
|
|
348
|
+
name: 'permit',
|
|
349
|
+
type: 'tuple',
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
components: [
|
|
353
|
+
{
|
|
354
|
+
internalType: 'address',
|
|
355
|
+
name: 'to',
|
|
356
|
+
type: 'address',
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
internalType: 'uint256',
|
|
360
|
+
name: 'requestedAmount',
|
|
361
|
+
type: 'uint256',
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',
|
|
365
|
+
name: 'transferDetails',
|
|
366
|
+
type: 'tuple[]',
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
internalType: 'address',
|
|
370
|
+
name: 'owner',
|
|
371
|
+
type: 'address',
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
internalType: 'bytes32',
|
|
375
|
+
name: 'witness',
|
|
376
|
+
type: 'bytes32',
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
internalType: 'string',
|
|
380
|
+
name: 'witnessTypeString',
|
|
381
|
+
type: 'string',
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
internalType: 'bytes',
|
|
385
|
+
name: 'signature',
|
|
386
|
+
type: 'bytes',
|
|
387
|
+
},
|
|
388
|
+
],
|
|
389
|
+
name: 'permitWitnessTransferFrom',
|
|
390
|
+
outputs: [],
|
|
391
|
+
stateMutability: 'nonpayable',
|
|
392
|
+
type: 'function',
|
|
393
|
+
},
|
|
394
|
+
] as const;
|
|
@@ -9,7 +9,7 @@ import { type PermitTransferFrom } from './permit2.js';
|
|
|
9
9
|
import { ChainProvider } from './viem-provider.js';
|
|
10
10
|
|
|
11
11
|
export class EVMIntentProvider {
|
|
12
|
-
|
|
12
|
+
public provider: ChainProvider;
|
|
13
13
|
|
|
14
14
|
constructor(config: EVMConfig) {
|
|
15
15
|
this.provider = new ChainProvider(config);
|
|
@@ -3,6 +3,9 @@ import type { SupportedEvmChain } from '../../chains.js';
|
|
|
3
3
|
import type { Order } from '../order.js';
|
|
4
4
|
import { EVMIntentProvider } from './intent-provider.js';
|
|
5
5
|
import { PERMIT2_DOMAIN, PERMIT2_TYPES, type PermitTransferFrom } from './permit2.js';
|
|
6
|
+
import type { ApiResponse } from '../../types/api.js';
|
|
7
|
+
import type { PreparedOrder } from '../../types/intent.js';
|
|
8
|
+
import { BaseSDK } from '../sdk.js';
|
|
6
9
|
|
|
7
10
|
export type EvmOrderTypedData = {
|
|
8
11
|
domain: TypedDataDomain;
|
|
@@ -31,3 +34,23 @@ export async function getEvmOrderTypedData(
|
|
|
31
34
|
|
|
32
35
|
return { orderTypedData, nonce: randomNonce };
|
|
33
36
|
}
|
|
37
|
+
|
|
38
|
+
export async function sendEvmRequest({
|
|
39
|
+
order,
|
|
40
|
+
signature,
|
|
41
|
+
nonce,
|
|
42
|
+
}: {
|
|
43
|
+
order: Order;
|
|
44
|
+
signature: string;
|
|
45
|
+
nonce: bigint;
|
|
46
|
+
}): Promise<ApiResponse> {
|
|
47
|
+
const preparedOrder: PreparedOrder = {
|
|
48
|
+
order,
|
|
49
|
+
preparedData: {
|
|
50
|
+
signature,
|
|
51
|
+
nonce: nonce.toString(),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return BaseSDK.sendOrder(preparedOrder);
|
|
56
|
+
}
|
package/src/core/evm/sdk.ts
CHANGED
|
@@ -7,6 +7,10 @@ import type { PreparedOrder } from '../../types/intent.js';
|
|
|
7
7
|
import type { Order } from '../order.js';
|
|
8
8
|
import { BaseSDK } from '../sdk.js';
|
|
9
9
|
import { EVMIntentProvider } from './intent-provider.js';
|
|
10
|
+
import { type Hex } from 'viem';
|
|
11
|
+
import { AUCTIONEER_URL, PERMIT2_ADDRESS, SRC_CHAIN_GUARD } from '../../constants.js';
|
|
12
|
+
import type { SupportedEvmChain } from '../../chains.js';
|
|
13
|
+
import type { UserOrder } from '../../types/user-order.js';
|
|
10
14
|
|
|
11
15
|
/**
|
|
12
16
|
* EVM-specific SDK implementation
|
|
@@ -35,6 +39,98 @@ export class EVMSDK extends BaseSDK {
|
|
|
35
39
|
this.evmIntentProvider = new EVMIntentProvider(config);
|
|
36
40
|
}
|
|
37
41
|
|
|
42
|
+
protected async cancelOrderInternal(orderId: string): Promise<string> {
|
|
43
|
+
const chainId = this.config.chainId;
|
|
44
|
+
const auctioneerAddress = SRC_CHAIN_GUARD[chainId] as Hex;
|
|
45
|
+
const userAddress = (await this.getUserAddress()) as Hex;
|
|
46
|
+
const auctioneerContract = this.evmIntentProvider.provider.getAuctioneerContract(auctioneerAddress);
|
|
47
|
+
const permit2Contract = this.evmIntentProvider.provider.getPermit2Contract(PERMIT2_ADDRESS[chainId]);
|
|
48
|
+
|
|
49
|
+
const userOrders = await this.fetchUserOrders(chainId);
|
|
50
|
+
|
|
51
|
+
const userOrder = userOrders.find((order) => order.orderId === orderId);
|
|
52
|
+
|
|
53
|
+
if (!userOrder) {
|
|
54
|
+
throw new Error('Order not found');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const orderIdHex = orderId as Hex;
|
|
58
|
+
let [initialized, deactivated] = await auctioneerContract.read.orderData([orderIdHex]);
|
|
59
|
+
|
|
60
|
+
let txHash: Hex;
|
|
61
|
+
|
|
62
|
+
if (!userOrder.nonce) {
|
|
63
|
+
throw new Error('Nonce is required for cancellation');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (initialized) {
|
|
67
|
+
if (deactivated) {
|
|
68
|
+
throw new Error('Order is already deactivated');
|
|
69
|
+
}
|
|
70
|
+
const orderInfo = {
|
|
71
|
+
user: userOrder.user as `0x${string}`,
|
|
72
|
+
tokenIn: userOrder.tokenIn as `0x${string}`,
|
|
73
|
+
srcChainId: userOrder.srcChainId,
|
|
74
|
+
deadline: userOrder.deadline,
|
|
75
|
+
amountIn: BigInt(userOrder.amountIn),
|
|
76
|
+
minStablecoinsAmount: BigInt(userOrder.minStablecoinsAmount),
|
|
77
|
+
executionDetailsHash: userOrder.executionDetailsHash as `0x${string}`,
|
|
78
|
+
nonce: BigInt(userOrder.nonce!),
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const tx = await auctioneerContract.write.cancelOrder([orderInfo]);
|
|
82
|
+
txHash = tx;
|
|
83
|
+
} else {
|
|
84
|
+
const nonce = BigInt(userOrder.nonce);
|
|
85
|
+
let nonceWordPos = nonce >> 8n;
|
|
86
|
+
let nonceBitPos = nonce - nonceWordPos * 256n;
|
|
87
|
+
let mask = 1n << nonceBitPos;
|
|
88
|
+
|
|
89
|
+
const currentNonceBitmap = await permit2Contract.read.nonceBitmap([userAddress, nonceWordPos]);
|
|
90
|
+
|
|
91
|
+
if ((currentNonceBitmap & (1n << nonceBitPos)) !== 0n) {
|
|
92
|
+
throw new Error('Nonce is already invalidated');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const tx = await permit2Contract.write.invalidateUnorderedNonces([nonceWordPos, mask]);
|
|
96
|
+
txHash = tx;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return txHash;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public async fetchUserOrders(chainId: SupportedEvmChain): Promise<UserOrder[]> {
|
|
103
|
+
const userAddress = await this.getUserAddress();
|
|
104
|
+
const siweEndpoint = `${AUCTIONEER_URL}/siwe`;
|
|
105
|
+
const queryParams = `?chainId=${chainId}&wallet=${userAddress}`;
|
|
106
|
+
|
|
107
|
+
const response = await fetch(`${siweEndpoint}${queryParams}`);
|
|
108
|
+
const { data: message } = await response.json();
|
|
109
|
+
|
|
110
|
+
const signature = await this.evmIntentProvider.provider.walletClient.signMessage(message);
|
|
111
|
+
const jwt = await fetch(siweEndpoint, {
|
|
112
|
+
method: 'POST',
|
|
113
|
+
headers: {
|
|
114
|
+
'Content-Type': 'application/json',
|
|
115
|
+
},
|
|
116
|
+
body: JSON.stringify({ message, signature }),
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const { data: token } = await jwt.json();
|
|
120
|
+
|
|
121
|
+
const ordersUrl = `${AUCTIONEER_URL}/user_intent`;
|
|
122
|
+
const orders = await fetch(ordersUrl, {
|
|
123
|
+
method: 'GET',
|
|
124
|
+
headers: {
|
|
125
|
+
Authorization: `Bearer ${token}`,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
const { data: ordersData } = await orders.json();
|
|
130
|
+
|
|
131
|
+
return ordersData;
|
|
132
|
+
}
|
|
133
|
+
|
|
38
134
|
/**
|
|
39
135
|
* Gets the user's Ethereum address derived from their private key
|
|
40
136
|
*
|
|
@@ -16,6 +16,8 @@ import { arbitrum, base, optimism } from 'viem/chains';
|
|
|
16
16
|
import { ChainID, type SupportedEvmChain } from '../../chains.js';
|
|
17
17
|
import type { EVMConfig } from '../../config.js';
|
|
18
18
|
import { ERC20ABI } from './abi/erc20.js';
|
|
19
|
+
import { SOURCE_CHAIN_GUARD_ABI } from './abi/source-chain-guard.js';
|
|
20
|
+
import { PERMIT2_ABI } from './abi/permit2.js';
|
|
19
21
|
|
|
20
22
|
const chainIdToProviderChainMap = {
|
|
21
23
|
[ChainID.Arbitrum]: arbitrum,
|
|
@@ -64,6 +66,33 @@ export class ChainProvider {
|
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
68
|
|
|
69
|
+
getPermit2Contract(permit2Address: Address) {
|
|
70
|
+
return getContract({
|
|
71
|
+
address: permit2Address,
|
|
72
|
+
abi: PERMIT2_ABI,
|
|
73
|
+
client: {
|
|
74
|
+
wallet: this.walletClient,
|
|
75
|
+
public: this.publicClient,
|
|
76
|
+
chain: chainIdToProviderChainMap[this.chainId],
|
|
77
|
+
account: this.walletClient.account,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Any type since the inferred type of this node exceeds the maximum length the compiler will serialize
|
|
83
|
+
getAuctioneerContract(auctioneerAddress: Address): any {
|
|
84
|
+
return getContract({
|
|
85
|
+
address: auctioneerAddress,
|
|
86
|
+
abi: SOURCE_CHAIN_GUARD_ABI,
|
|
87
|
+
client: {
|
|
88
|
+
wallet: this.walletClient,
|
|
89
|
+
public: this.publicClient,
|
|
90
|
+
chain: chainIdToProviderChainMap[this.chainId],
|
|
91
|
+
account: this.walletClient.account,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
67
96
|
getERC20Contract(tokenAddress: Address) {
|
|
68
97
|
return getContract({
|
|
69
98
|
address: tokenAddress,
|
package/src/core/sdk.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { chainIdToChainTypeMap } from '../chains.js';
|
|
2
|
-
import { AUCTIONEER_URL
|
|
3
|
-
import {
|
|
2
|
+
import { AUCTIONEER_URL } from '../constants.js';
|
|
3
|
+
import { NetworkError } from '../errors/index.js';
|
|
4
|
+
import type { ApiResponse } from '../types/api.js';
|
|
4
5
|
import type { CreateOrderParams, PreparedOrder, UserIntentRequest } from '../types/intent.js';
|
|
5
6
|
import { calculateAmounts } from '../utils/defillama.js';
|
|
6
7
|
import { Parsers } from '../utils/parsers.js';
|
|
@@ -22,6 +23,8 @@ export abstract class BaseSDK {
|
|
|
22
23
|
*/
|
|
23
24
|
public abstract getUserAddress(): Promise<string>;
|
|
24
25
|
|
|
26
|
+
protected abstract cancelOrderInternal(orderId: string): Promise<string>;
|
|
27
|
+
|
|
25
28
|
/**
|
|
26
29
|
* Prepares an order for submission with chain-specific logic
|
|
27
30
|
*
|
|
@@ -58,14 +61,15 @@ export abstract class BaseSDK {
|
|
|
58
61
|
|
|
59
62
|
if (!params.minStablecoinAmount || !params.destinationTokenMinAmount) {
|
|
60
63
|
// Calculate missing values using DefiLlama
|
|
61
|
-
const { amountOut: calculatedAmountOut, minStablecoinsAmount: calculatedMinStablecoins } =
|
|
62
|
-
|
|
64
|
+
const { amountOut: calculatedAmountOut, minStablecoinsAmount: calculatedMinStablecoins } = await calculateAmounts(
|
|
65
|
+
{
|
|
63
66
|
srcChainId: params.sourceChainId,
|
|
64
67
|
tokenIn: params.sourceTokenAddress,
|
|
65
68
|
amountIn: params.sourceTokenAmount,
|
|
66
69
|
destChainId: params.destinationChainId,
|
|
67
70
|
tokenOut: params.destinationTokenAddress,
|
|
68
|
-
}
|
|
71
|
+
},
|
|
72
|
+
);
|
|
69
73
|
|
|
70
74
|
// Use provided values if available, otherwise use calculated ones
|
|
71
75
|
minStablecoinAmount = params.minStablecoinAmount ?? calculatedMinStablecoins;
|
|
@@ -94,6 +98,10 @@ export abstract class BaseSDK {
|
|
|
94
98
|
return this.prepareOrder(order);
|
|
95
99
|
}
|
|
96
100
|
|
|
101
|
+
public async cancelOrder(orderId: string): Promise<string> {
|
|
102
|
+
return this.cancelOrderInternal(orderId);
|
|
103
|
+
}
|
|
104
|
+
|
|
97
105
|
/**
|
|
98
106
|
* Creates an order and sends it to the auctioneer in a single call
|
|
99
107
|
*
|
|
@@ -105,9 +113,9 @@ export abstract class BaseSDK {
|
|
|
105
113
|
* @throws {OrderCreationError} If order creation fails
|
|
106
114
|
* @throws {NetworkError} If order submission fails
|
|
107
115
|
*/
|
|
108
|
-
public async createAndSendOrder(params: CreateOrderParams): Promise<
|
|
116
|
+
public async createAndSendOrder(params: CreateOrderParams): Promise<ApiResponse> {
|
|
109
117
|
const preparedOrder = await this.createOrder(params);
|
|
110
|
-
return
|
|
118
|
+
return BaseSDK.sendOrder(preparedOrder);
|
|
111
119
|
}
|
|
112
120
|
|
|
113
121
|
/**
|
|
@@ -122,7 +130,7 @@ export abstract class BaseSDK {
|
|
|
122
130
|
* @returns User intent request object ready for submission to the auctioneer
|
|
123
131
|
* @throws {BaseError} If conversion fails
|
|
124
132
|
*/
|
|
125
|
-
|
|
133
|
+
public static getUserIntentRequest(preparedOrder: PreparedOrder): UserIntentRequest {
|
|
126
134
|
const sourceChain = preparedOrder.order.sourceChainId;
|
|
127
135
|
const sourceChainType = chainIdToChainTypeMap[sourceChain];
|
|
128
136
|
const executionDetails = preparedOrder.order.getExecutionDetails();
|
|
@@ -149,8 +157,8 @@ export abstract class BaseSDK {
|
|
|
149
157
|
* @returns Promise resolving to the specific-chain tx hash
|
|
150
158
|
* @throws {NetworkError} If the network request fails or returns an error
|
|
151
159
|
*/
|
|
152
|
-
public async sendOrder(preparedOrder: PreparedOrder): Promise<
|
|
153
|
-
const intentRequest =
|
|
160
|
+
public static async sendOrder(preparedOrder: PreparedOrder): Promise<ApiResponse> {
|
|
161
|
+
const intentRequest = BaseSDK.getUserIntentRequest(preparedOrder);
|
|
154
162
|
const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
|
|
155
163
|
|
|
156
164
|
const url = `${AUCTIONEER_URL}/user_intent`;
|
|
@@ -163,7 +171,7 @@ export abstract class BaseSDK {
|
|
|
163
171
|
});
|
|
164
172
|
|
|
165
173
|
if (!response.ok) {
|
|
166
|
-
const errorJson = await response.json();
|
|
174
|
+
const errorJson: ApiResponse = await response.json();
|
|
167
175
|
|
|
168
176
|
const extraErrorData = errorJson.extra_error_data;
|
|
169
177
|
throw new NetworkError(`Server error`, {
|
|
@@ -173,6 +181,6 @@ export abstract class BaseSDK {
|
|
|
173
181
|
});
|
|
174
182
|
}
|
|
175
183
|
|
|
176
|
-
return response;
|
|
184
|
+
return response.json();
|
|
177
185
|
}
|
|
178
186
|
}
|