@shogun-sdk/intents-sdk 1.2.1 → 1.2.3
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/README.md +616 -55
- package/dist/esm/constants.js +21 -26
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/core/evm/abi/source-chain-guard.js +32 -628
- package/dist/esm/core/evm/abi/source-chain-guard.js.map +1 -1
- package/dist/esm/core/evm/cross-chain-limit-order.js +43 -0
- package/dist/esm/core/evm/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/evm/intent-helpers.js +130 -0
- package/dist/esm/core/evm/intent-helpers.js.map +1 -0
- package/dist/esm/core/evm/single-chain-dca-order.js +49 -0
- package/dist/esm/core/evm/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/evm/single-chain-limit-order.js +45 -0
- package/dist/esm/core/evm/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/evm/types.js +8 -0
- package/dist/esm/core/evm/types.js.map +1 -0
- package/dist/esm/core/orders/common.js +3 -3
- package/dist/esm/core/orders/common.js.map +1 -1
- package/dist/esm/core/orders/cross-chain.js +2 -2
- package/dist/esm/core/orders/cross-chain.js.map +1 -1
- package/dist/esm/core/orders/dca-single-chain.js +4 -1
- package/dist/esm/core/orders/dca-single-chain.js.map +1 -1
- package/dist/esm/core/orders/single-chain.js +8 -1
- package/dist/esm/core/orders/single-chain.js.map +1 -1
- package/dist/esm/core/solana/cancel-order.js.map +1 -1
- package/dist/esm/core/solana/client.js +1 -1
- package/dist/esm/core/solana/client.js.map +1 -1
- package/dist/esm/core/solana/cross-chain-limit-order.js +18 -0
- package/dist/esm/core/solana/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/solana/dca/cancel-order.js.map +1 -1
- package/dist/esm/core/solana/dca/create-order.js.map +1 -1
- package/dist/esm/core/solana/dca/single-chain-dca-order.js +23 -0
- package/dist/esm/core/solana/dca/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/solana/dca/single-chain-limit-order.js +29 -0
- package/dist/esm/core/solana/dca/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js +6 -4
- package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js +90 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js +6 -4
- package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/index.js +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/order.js +3 -3
- package/dist/esm/core/solana/generated/cross-chain/accounts/order.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js +111 -6
- package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js +118 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js +170 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js +10 -16
- package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js +8 -6
- package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/index.js +2 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js +11 -12
- package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js +4 -4
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js +17 -7
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js +7 -5
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js +28 -16
- package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/shared/index.js +5 -5
- package/dist/esm/core/solana/generated/cross-chain/shared/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/adminUpdateStarted.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js +32 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js +42 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js +26 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js +28 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js +26 -0
- package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/index.js +5 -0
- package/dist/esm/core/solana/generated/cross-chain/types/index.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js +6 -4
- package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/guard.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/guard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js +5 -8
- package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js +9 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js +9 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js +9 -10
- package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js +4 -4
- package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js +17 -7
- package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js +2 -2
- package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/shared/index.js +5 -5
- package/dist/esm/core/solana/generated/single-chain/shared/index.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/adminUpdateStarted.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/dcaOrderFulfilled.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/limitOrderCreated.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/limitOrderFulfilled.js.map +1 -1
- package/dist/esm/core/solana/inspect.js +1 -1
- package/dist/esm/core/solana/intent-helpers.js +177 -0
- package/dist/esm/core/solana/intent-helpers.js.map +1 -0
- package/dist/esm/core/solana/order-instructions.js.map +1 -1
- package/dist/esm/core/solana/sdk.js +4 -1
- package/dist/esm/core/solana/sdk.js.map +1 -1
- package/dist/esm/core/sui/cancel.js +1 -1
- package/dist/esm/core/sui/cancel.js.map +1 -1
- package/dist/esm/core/sui/cross-chain-limit-order.js +26 -0
- package/dist/esm/core/sui/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/sui/intent-helpers.js +136 -0
- package/dist/esm/core/sui/intent-helpers.js.map +1 -0
- package/dist/esm/core/sui/order-transaction.js +5 -4
- package/dist/esm/core/sui/order-transaction.js.map +1 -1
- package/dist/esm/core/sui/sdk.js +1 -1
- package/dist/esm/core/sui/sdk.js.map +1 -1
- package/dist/esm/core/sui/single-chain-dca-order.js +99 -0
- package/dist/esm/core/sui/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/sui/single-chain-limit-order.js +103 -0
- package/dist/esm/core/sui/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/sui/validator.js +1 -2
- package/dist/esm/core/sui/validator.js.map +1 -1
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/constants.d.ts +3 -4
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/core/evm/abi/source-chain-guard.d.ts +18 -484
- package/dist/types/core/evm/abi/source-chain-guard.d.ts.map +1 -1
- package/dist/types/core/evm/cross-chain-limit-order.d.ts +22 -0
- package/dist/types/core/evm/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/evm/intent-helpers.d.ts +105 -0
- package/dist/types/core/evm/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/evm/single-chain-dca-order.d.ts +26 -0
- package/dist/types/core/evm/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/evm/single-chain-limit-order.d.ts +23 -0
- package/dist/types/core/evm/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/evm/types.d.ts +8 -0
- package/dist/types/core/evm/types.d.ts.map +1 -0
- package/dist/types/core/orders/common.d.ts +2 -2
- package/dist/types/core/orders/common.d.ts.map +1 -1
- package/dist/types/core/orders/cross-chain.d.ts +1 -1
- package/dist/types/core/orders/cross-chain.d.ts.map +1 -1
- package/dist/types/core/orders/dca-single-chain.d.ts.map +1 -1
- package/dist/types/core/orders/single-chain.d.ts +1 -0
- package/dist/types/core/orders/single-chain.d.ts.map +1 -1
- package/dist/types/core/solana/cancel-order.d.ts +3 -3
- package/dist/types/core/solana/cancel-order.d.ts.map +1 -1
- package/dist/types/core/solana/cross-chain-limit-order.d.ts +9 -0
- package/dist/types/core/solana/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/solana/dca/cancel-order.d.ts +2 -2
- package/dist/types/core/solana/dca/cancel-order.d.ts.map +1 -1
- package/dist/types/core/solana/dca/single-chain-dca-order.d.ts +14 -0
- package/dist/types/core/solana/dca/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/solana/dca/single-chain-limit-order.d.ts +19 -0
- package/dist/types/core/solana/dca/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts +6 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts +110 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts +10 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts +6 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts +76 -6
- package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts +124 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts +15 -15
- package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts +130 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts +16 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts +2 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts +25 -18
- package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts +5 -5
- package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts +28 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts +38 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts +18 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts +24 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts +18 -0
- package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/index.d.ts +5 -0
- package/dist/types/core/solana/generated/cross-chain/types/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts +6 -6
- package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts +3 -3
- package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts +6 -6
- package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts +3 -3
- package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts +2 -2
- package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts +9 -9
- package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts +9 -9
- package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts +2 -2
- package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/shared/index.d.ts +5 -5
- package/dist/types/core/solana/generated/single-chain/shared/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts.map +1 -1
- package/dist/types/core/solana/intent-helpers.d.ts +120 -0
- package/dist/types/core/solana/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/solana/sdk.d.ts.map +1 -1
- package/dist/types/core/sui/cross-chain-limit-order.d.ts +14 -0
- package/dist/types/core/sui/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/sui/intent-helpers.d.ts +89 -0
- package/dist/types/core/sui/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/sui/order-transaction.d.ts +3 -1
- package/dist/types/core/sui/order-transaction.d.ts.map +1 -1
- package/dist/types/core/sui/single-chain-dca-order.d.ts +22 -0
- package/dist/types/core/sui/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/sui/single-chain-limit-order.d.ts +26 -0
- package/dist/types/core/sui/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/sui/validator.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/intent.d.ts +13 -4
- package/dist/types/types/intent.d.ts.map +1 -1
- package/package.json +19 -9
- package/src/constants.ts +17 -23
- package/src/core/evm/abi/source-chain-guard.ts +32 -628
- package/src/core/evm/cross-chain-limit-order.ts +76 -0
- package/src/core/evm/intent-helpers.ts +204 -0
- package/src/core/evm/single-chain-dca-order.ts +85 -0
- package/src/core/evm/single-chain-limit-order.ts +78 -0
- package/src/core/evm/types.ts +15 -0
- package/src/core/orders/common.ts +4 -4
- package/src/core/orders/cross-chain.ts +2 -2
- package/src/core/orders/dca-single-chain.ts +4 -1
- package/src/core/orders/single-chain.ts +10 -1
- package/src/core/solana/cancel-order.ts +5 -5
- package/src/core/solana/client.ts +1 -1
- package/src/core/solana/cross-chain-limit-order.ts +24 -0
- package/src/core/solana/dca/cancel-order.ts +3 -3
- package/src/core/solana/dca/create-order.ts +2 -2
- package/src/core/solana/dca/single-chain-dca-order.ts +32 -0
- package/src/core/solana/dca/single-chain-limit-order.ts +45 -0
- package/src/core/solana/generated/cross-chain/accounts/adminSingleton.ts +20 -18
- package/src/core/solana/generated/cross-chain/accounts/dcaOrder.ts +248 -0
- package/src/core/solana/generated/cross-chain/accounts/guard.ts +24 -18
- package/src/core/solana/generated/cross-chain/accounts/index.ts +1 -0
- package/src/core/solana/generated/cross-chain/accounts/order.ts +17 -17
- package/src/core/solana/generated/cross-chain/errors/sourceChainGuard.ts +154 -9
- package/src/core/solana/generated/cross-chain/instructions/acceptAdmin.ts +44 -34
- package/src/core/solana/generated/cross-chain/instructions/cancelDcaOrder.ts +409 -0
- package/src/core/solana/generated/cross-chain/instructions/cancelOrder.ts +49 -41
- package/src/core/solana/generated/cross-chain/instructions/claimTokens.ts +54 -44
- package/src/core/solana/generated/cross-chain/instructions/collectProtocolFees.ts +52 -43
- package/src/core/solana/generated/cross-chain/instructions/createDcaOrder.ts +496 -0
- package/src/core/solana/generated/cross-chain/instructions/createGuard.ts +72 -54
- package/src/core/solana/generated/cross-chain/instructions/createOrder.ts +60 -42
- package/src/core/solana/generated/cross-chain/instructions/index.ts +2 -0
- package/src/core/solana/generated/cross-chain/instructions/initialize.ts +60 -42
- package/src/core/solana/generated/cross-chain/instructions/preStartOrderExecution.ts +55 -45
- package/src/core/solana/generated/cross-chain/instructions/setAdmin.ts +48 -30
- package/src/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.ts +88 -40
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecution.ts +48 -39
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.ts +45 -37
- package/src/core/solana/generated/cross-chain/programs/sourceChainGuard.ts +118 -37
- package/src/core/solana/generated/cross-chain/shared/index.ts +23 -14
- package/src/core/solana/generated/cross-chain/types/adminUpdateStarted.ts +9 -6
- package/src/core/solana/generated/cross-chain/types/adminUpdated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.ts +9 -6
- package/src/core/solana/generated/cross-chain/types/dcaExecutionStarted.ts +70 -0
- package/src/core/solana/generated/cross-chain/types/dcaOrderCreated.ts +92 -0
- package/src/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.ts +52 -0
- package/src/core/solana/generated/cross-chain/types/dcaTokenInSwapped.ts +62 -0
- package/src/core/solana/generated/cross-chain/types/executionStarted.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.ts +55 -0
- package/src/core/solana/generated/cross-chain/types/guardCreated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/index.ts +5 -0
- package/src/core/solana/generated/cross-chain/types/orderCancelled.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/orderCreated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/orderFulfilled.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/tokenInSwapped.ts +6 -6
- package/src/core/solana/generated/single-chain/accounts/adminSingleton.ts +20 -18
- package/src/core/solana/generated/single-chain/accounts/dcaOrder.ts +11 -11
- package/src/core/solana/generated/single-chain/accounts/guard.ts +17 -17
- package/src/core/solana/generated/single-chain/accounts/limitOrder.ts +11 -11
- package/src/core/solana/generated/single-chain/errors/singleChainGuard.ts +10 -5
- package/src/core/solana/generated/single-chain/instructions/acceptAdmin.ts +44 -34
- package/src/core/solana/generated/single-chain/instructions/cancelDcaOrder.ts +54 -40
- package/src/core/solana/generated/single-chain/instructions/cancelLimitOrder.ts +51 -40
- package/src/core/solana/generated/single-chain/instructions/collectProtocolFees.ts +55 -42
- package/src/core/solana/generated/single-chain/instructions/createDcaOrder.ts +60 -38
- package/src/core/solana/generated/single-chain/instructions/createGuard.ts +69 -42
- package/src/core/solana/generated/single-chain/instructions/createLimitOrder.ts +57 -38
- package/src/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.ts +78 -55
- package/src/core/solana/generated/single-chain/instructions/fulfillLimitOrder.ts +81 -55
- package/src/core/solana/generated/single-chain/instructions/initialize.ts +58 -40
- package/src/core/solana/generated/single-chain/instructions/setAdmin.ts +48 -30
- package/src/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.ts +88 -40
- package/src/core/solana/generated/single-chain/programs/singleChainGuard.ts +76 -37
- package/src/core/solana/generated/single-chain/shared/index.ts +23 -14
- package/src/core/solana/generated/single-chain/types/adminUpdateStarted.ts +9 -6
- package/src/core/solana/generated/single-chain/types/adminUpdated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.ts +9 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderCreated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/guardCreated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/limitOrderCreated.ts +9 -6
- package/src/core/solana/generated/single-chain/types/limitOrderFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/orderCancelled.ts +6 -6
- package/src/core/solana/inspect.ts +1 -1
- package/src/core/solana/intent-helpers.ts +273 -0
- package/src/core/solana/order-instructions.ts +3 -3
- package/src/core/solana/sdk.ts +13 -4
- package/src/core/sui/cancel.ts +1 -1
- package/src/core/sui/cross-chain-limit-order.ts +34 -0
- package/src/core/sui/intent-helpers.ts +235 -0
- package/src/core/sui/order-transaction.ts +8 -4
- package/src/core/sui/sdk.ts +1 -1
- package/src/core/sui/single-chain-dca-order.ts +139 -0
- package/src/core/sui/single-chain-limit-order.ts +143 -0
- package/src/core/sui/validator.ts +1 -2
- package/src/index.ts +55 -0
- package/src/types/intent.ts +15 -4
package/README.md
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
-
# Intents SDK
|
|
1
|
+
# Shogun Intents SDK
|
|
2
2
|
|
|
3
|
-
A TypeScript SDK for
|
|
3
|
+
A comprehensive TypeScript SDK for intent-based cross-chain and single-chain token swaps across multiple blockchain ecosystems. Built on the Shogun Network, this SDK enables developers to create sophisticated trading strategies with advanced features like DCA (Dollar Cost Averaging), stop-loss, take-profit, and multi-chain routing.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### 🔄 Cross-Chain Swaps
|
|
8
|
+
- **Multi-chain Support**: Seamlessly swap tokens across EVM chains (Arbitrum, Optimism, Base, Hyperliquid), Solana, and Sui
|
|
9
|
+
- **Intent-based Architecture**: Express trading intentions rather than executing complex multi-step transactions
|
|
10
|
+
- **Automatic Routing**: Intelligent routing through multiple DEXs and bridges for optimal execution
|
|
11
|
+
- **Stablecoin Intermediary**: Uses stablecoins as intermediate assets for efficient cross-chain swaps
|
|
12
|
+
|
|
13
|
+
### 📈 Single-Chain Trading
|
|
14
|
+
- **Limit Orders**: Set specific price targets for token swaps
|
|
15
|
+
- **DCA Orders**: Dollar Cost Averaging with configurable intervals and amounts
|
|
16
|
+
- **Stop-Loss & Take-Profit**: Advanced risk management with automatic execution
|
|
17
|
+
- **Extra Transfers**: Include additional token transfers in your orders
|
|
18
|
+
|
|
19
|
+
### 🛡️ Advanced Risk Management
|
|
20
|
+
- **Stop-Loss Protection**: Automatically sell when price drops below threshold
|
|
21
|
+
- **Take-Profit Orders**: Lock in profits when price reaches target
|
|
22
|
+
- **Slippage Protection**: Built-in slippage controls and price impact calculations
|
|
23
|
+
- **Deadline Management**: Time-based order expiration
|
|
24
|
+
|
|
25
|
+
### 🔌 Multi-Provider Integration
|
|
26
|
+
- **EVM Chains**: ParaSwap integration for optimal routing
|
|
27
|
+
- **Solana**: Jupiter aggregator for best prices
|
|
28
|
+
- **Sui**: Aftermath and LiquidSwap integration
|
|
29
|
+
- **Cross-Chain**: DefiLlama price feeds and stablecoin routing
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
6
32
|
|
|
7
33
|
```bash
|
|
8
34
|
npm install @shogun-sdk/intents-sdk
|
|
@@ -10,114 +36,649 @@ pnpm install @shogun-sdk/intents-sdk
|
|
|
10
36
|
yarn add @shogun-sdk/intents-sdk
|
|
11
37
|
```
|
|
12
38
|
|
|
39
|
+
## Constants & Configuration
|
|
40
|
+
|
|
41
|
+
The SDK provides important constants for guard addresses, stablecoins, and chain configurations:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import {
|
|
45
|
+
// Guard addresses for different order types
|
|
46
|
+
CROSS_CHAIN_GUARD_ADDRESSES,
|
|
47
|
+
SINGLE_CHAIN_GUARD_ADDRESSES,
|
|
48
|
+
DCA_SINGLE_CHAIN_GUARD_ADDRESSES,
|
|
49
|
+
|
|
50
|
+
// Stablecoin configurations
|
|
51
|
+
SOLANA_USDC_MINT,
|
|
52
|
+
SUI_GUARD_COLLATERAL_TYPE,
|
|
53
|
+
SUI_GUARD_STABLECOIN_TYPE,
|
|
54
|
+
|
|
55
|
+
// Package and contract IDs
|
|
56
|
+
SUI_PACKAGE_ID,
|
|
57
|
+
PERMIT2_ADDRESS,
|
|
58
|
+
|
|
59
|
+
// Native token addresses
|
|
60
|
+
NATIVE_SOLANA_TOKEN_ADDRESS,
|
|
61
|
+
WRAPPED_SOL_MINT_ADDRESS,
|
|
62
|
+
NATIVE_SUI_TOKEN_ADDRESS,
|
|
63
|
+
WRAPPED_ETH_ADDRESSES,
|
|
64
|
+
|
|
65
|
+
// Utility functions
|
|
66
|
+
isNativeEvmToken,
|
|
67
|
+
|
|
68
|
+
// Chain IDs
|
|
69
|
+
ChainID,
|
|
70
|
+
} from "@shogun-sdk/intents-sdk";
|
|
71
|
+
|
|
72
|
+
// Example: Get guard address for specific chain and order type
|
|
73
|
+
const arbitrumCrossChainGuard = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Arbitrum];
|
|
74
|
+
const baseSingleChainGuard = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Base];
|
|
75
|
+
const hyperliquidDcaGuard = DCA_SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Hyperliquid];
|
|
76
|
+
|
|
77
|
+
// Example: Use Solana stablecoin configuration
|
|
78
|
+
console.log('Solana USDC:', SOLANA_USDC_MINT.mint, 'Decimals:', SOLANA_USDC_MINT.decimals);
|
|
79
|
+
|
|
80
|
+
// Example: Check if token is native ETH
|
|
81
|
+
const isNativeEth = isNativeEvmToken('0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee');
|
|
82
|
+
```
|
|
83
|
+
|
|
13
84
|
## Architecture
|
|
14
85
|
|
|
15
86
|
The SDK uses a modular architecture with chain-specific implementations:
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
87
|
+
|
|
88
|
+
- **`EVMSDK`**: Ethereum Virtual Machine chains (Arbitrum, Optimism, Base, Hyperliquid)
|
|
89
|
+
- **`SolanaSDK`**: Solana blockchain with Jupiter integration
|
|
90
|
+
- **`SuiSDK`**: Sui blockchain with Aftermath and LiquidSwap support
|
|
19
91
|
|
|
20
92
|
## Usage
|
|
21
93
|
|
|
22
|
-
###
|
|
94
|
+
### SDK Setup (server-side)
|
|
23
95
|
|
|
24
96
|
```typescript
|
|
25
97
|
import { ChainID, EVMSDK, SolanaSDK, SuiSDK } from "@shogun-sdk/intents-sdk";
|
|
26
98
|
|
|
27
|
-
//
|
|
99
|
+
// EVM (Arbitrum, Optimism, Base, Hyperliquid)
|
|
28
100
|
const evmSdk = new EVMSDK({
|
|
29
101
|
chainId: ChainID.Arbitrum,
|
|
30
|
-
privateKey: '0x...',
|
|
31
|
-
rpcProviderUrl: 'https://arbitrum-mainnet.public.blastapi.io', //
|
|
102
|
+
privateKey: '0x...',
|
|
103
|
+
rpcProviderUrl: 'https://arbitrum-mainnet.public.blastapi.io', // optional
|
|
32
104
|
});
|
|
33
105
|
|
|
34
|
-
//
|
|
106
|
+
// Solana
|
|
35
107
|
const solanaSdk = new SolanaSDK({
|
|
36
|
-
privateKey: '...',
|
|
37
|
-
commitment: 'finalized', //
|
|
38
|
-
rpcProviderUrl: 'https://api.mainnet-beta.solana.com', //
|
|
108
|
+
privateKey: '...',
|
|
109
|
+
commitment: 'finalized', // 'confirmed' | 'finalized'
|
|
110
|
+
rpcProviderUrl: 'https://api.mainnet-beta.solana.com', // optional
|
|
39
111
|
});
|
|
40
112
|
|
|
41
|
-
//
|
|
113
|
+
// Sui
|
|
42
114
|
const suiSdk = new SuiSDK({
|
|
43
|
-
privateKey: '...',
|
|
115
|
+
privateKey: '...',
|
|
44
116
|
});
|
|
45
117
|
```
|
|
46
118
|
|
|
47
|
-
###
|
|
119
|
+
### Cross-chain order (one call)
|
|
48
120
|
|
|
49
121
|
```typescript
|
|
50
|
-
|
|
51
|
-
|
|
122
|
+
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
123
|
+
|
|
124
|
+
const response = await evmSdk.createAndSendCrossChainOrder({
|
|
52
125
|
sourceChainId: ChainID.Arbitrum,
|
|
53
|
-
sourceTokenAddress: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
|
|
54
|
-
sourceTokenAmount: BigInt(
|
|
126
|
+
sourceTokenAddress: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT
|
|
127
|
+
sourceTokenAmount: BigInt(10_000_000),
|
|
55
128
|
destinationChainId: ChainID.Solana,
|
|
56
|
-
destinationTokenAddress: '
|
|
57
|
-
destinationTokenMinAmount: BigInt(10000),
|
|
129
|
+
destinationTokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
|
|
58
130
|
destinationAddress: '3Kiz4oBXpR9YuPNsVfvE5XnNzgwjrM9m2CbRzyyEVkpQ',
|
|
59
|
-
|
|
60
|
-
deadline: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now
|
|
131
|
+
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
61
132
|
});
|
|
133
|
+
```
|
|
62
134
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
135
|
+
### Single-chain limit order (one call)
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
139
|
+
|
|
140
|
+
const response = await solanaSdk.createAndSendSingleChainOrder({
|
|
141
|
+
chainId: ChainID.Solana,
|
|
142
|
+
amountIn: BigInt(1_000_000), // 1 SOL (6 decimals)
|
|
143
|
+
tokenIn: 'So11111111111111111111111111111111111111112',
|
|
144
|
+
tokenOut: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
145
|
+
amountOutMin: BigInt(100_000_000), // 100 USDC
|
|
71
146
|
destinationAddress: '3Kiz4oBXpR9YuPNsVfvE5XnNzgwjrM9m2CbRzyyEVkpQ',
|
|
72
|
-
|
|
73
|
-
|
|
147
|
+
deadline: Math.floor(Date.now() / 1000) + 86400,
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### DCA order (EVM, one call)
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
155
|
+
|
|
156
|
+
const response = await evmSdk.createAndSendDcaSingleChainOrder({
|
|
157
|
+
chainId: ChainID.Arbitrum,
|
|
158
|
+
tokenIn: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // WETH
|
|
159
|
+
tokenOut: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT
|
|
160
|
+
destinationAddress: '0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6',
|
|
161
|
+
startTime: Math.floor(Date.now() / 1000),
|
|
162
|
+
amountInPerInterval: BigInt(100_000_000),
|
|
163
|
+
totalIntervals: 10,
|
|
164
|
+
intervalDuration: 3600,
|
|
165
|
+
deadline: Math.floor(Date.now() / 1000) + 86400 * 7,
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Sui Single-Chain Orders (Manual Transaction Building)
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
import {
|
|
173
|
+
ChainID,
|
|
174
|
+
createSuiClient,
|
|
175
|
+
getSuiSingleChainLimitOrderTransaction,
|
|
176
|
+
getSuiSingleChainDcaOrderTransaction,
|
|
177
|
+
generateSuiLimitOrderSecretData,
|
|
178
|
+
generateSuiDcaOrderSecretData,
|
|
179
|
+
createSuiSingleChainLimitOrderIntentRequest,
|
|
180
|
+
createSuiSingleChainDcaOrderIntentRequest,
|
|
181
|
+
// Import guard addresses and stablecoin configurations
|
|
182
|
+
CROSS_CHAIN_GUARD_ADDRESSES,
|
|
183
|
+
SUI_GUARD_STABLECOIN_TYPE,
|
|
184
|
+
SUI_PACKAGE_ID,
|
|
185
|
+
} from "@shogun-sdk/intents-sdk";
|
|
186
|
+
|
|
187
|
+
// Create Sui client
|
|
188
|
+
const client = createSuiClient();
|
|
189
|
+
// Use the correct guard address from constants
|
|
190
|
+
const guardAddress = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Sui];
|
|
191
|
+
|
|
192
|
+
// Example: Sui Single-Chain Limit Order
|
|
193
|
+
const limitOrder = await SingleChainOrder.create({
|
|
194
|
+
chainId: ChainID.Sui,
|
|
195
|
+
amountIn: BigInt(200_000),
|
|
196
|
+
tokenIn: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
197
|
+
tokenOut: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
|
|
198
|
+
amountOutMin: BigInt(1),
|
|
199
|
+
destinationAddress: "0x...",
|
|
200
|
+
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
201
|
+
user: "0x...",
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// Generate secret data
|
|
205
|
+
const { secretNumber, secretHash } = generateSuiLimitOrderSecretData(
|
|
206
|
+
limitOrder.tokenOut,
|
|
207
|
+
limitOrder.destinationAddress,
|
|
208
|
+
undefined, // auto-generate secret number
|
|
209
|
+
limitOrder.extraTransfers
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
// Build transaction
|
|
213
|
+
const tx = await getSuiSingleChainLimitOrderTransaction(
|
|
214
|
+
limitOrder,
|
|
215
|
+
secretHash,
|
|
216
|
+
guardAddress,
|
|
217
|
+
client
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
// Sign and execute transaction
|
|
221
|
+
const result = await client.signAndExecuteTransaction({
|
|
222
|
+
signer: keypair,
|
|
223
|
+
transaction: tx,
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// Create intent request for auctioneer
|
|
227
|
+
const intentRequest = createSuiSingleChainLimitOrderIntentRequest({
|
|
228
|
+
user: limitOrder.user,
|
|
229
|
+
tokenIn: limitOrder.tokenIn,
|
|
230
|
+
tokenOut: limitOrder.tokenOut,
|
|
231
|
+
amountIn: limitOrder.amountIn,
|
|
232
|
+
amountOutMin: limitOrder.amountOutMin,
|
|
233
|
+
destinationAddress: limitOrder.destinationAddress,
|
|
234
|
+
deadline: limitOrder.deadline,
|
|
235
|
+
transactionHash: result.digest,
|
|
236
|
+
secretNumber,
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Example: Sui Single-Chain DCA Order
|
|
240
|
+
const dcaOrder = await DcaSingleChainOrder.create({
|
|
241
|
+
chainId: ChainID.Sui,
|
|
242
|
+
tokenIn: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
|
|
243
|
+
tokenOut: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
|
|
244
|
+
destinationAddress: "0x...",
|
|
245
|
+
startTime: Math.floor(Date.now() / 1000),
|
|
246
|
+
amountInPerInterval: BigInt(1_932_100),
|
|
247
|
+
totalIntervals: 2,
|
|
248
|
+
intervalDuration: 300, // 5 minutes
|
|
249
|
+
deadline: Math.floor(Date.now() / 1000) + 1200, // 20 minutes
|
|
250
|
+
user: "0x...",
|
|
74
251
|
});
|
|
252
|
+
|
|
253
|
+
// Generate DCA secret data
|
|
254
|
+
const { secretNumber: dcaSecretNumber, secretHash: dcaSecretHash } = generateSuiDcaOrderSecretData(
|
|
255
|
+
dcaOrder.tokenOut,
|
|
256
|
+
dcaOrder.destinationAddress
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
// Build DCA transaction
|
|
260
|
+
const dcaTx = await getSuiSingleChainDcaOrderTransaction(
|
|
261
|
+
dcaOrder,
|
|
262
|
+
dcaSecretHash,
|
|
263
|
+
guardAddress,
|
|
264
|
+
client
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
// Create DCA intent request
|
|
268
|
+
const dcaIntentRequest = createSuiSingleChainDcaOrderIntentRequest({
|
|
269
|
+
user: dcaOrder.user,
|
|
270
|
+
tokenIn: dcaOrder.tokenIn,
|
|
271
|
+
tokenOut: dcaOrder.tokenOut,
|
|
272
|
+
amountInPerInterval: dcaOrder.amountInPerInterval,
|
|
273
|
+
totalIntervals: dcaOrder.totalIntervals,
|
|
274
|
+
intervalDuration: dcaOrder.intervalDuration,
|
|
275
|
+
amountOutMin: dcaOrder.amountOutMin,
|
|
276
|
+
destinationAddress: dcaOrder.destinationAddress,
|
|
277
|
+
startTime: dcaOrder.startTime,
|
|
278
|
+
deadline: dcaOrder.deadline,
|
|
279
|
+
transactionHash: result.digest,
|
|
280
|
+
secretNumber: dcaSecretNumber,
|
|
281
|
+
});
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Advanced risk management (stop-loss / take-profit)
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
import { ChainID } from "@shogun-sdk/intents-sdk";
|
|
288
|
+
|
|
289
|
+
await evmSdk.createAndSendCrossChainOrder({
|
|
290
|
+
sourceChainId: ChainID.Base,
|
|
291
|
+
sourceTokenAddress: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC
|
|
292
|
+
sourceTokenAmount: BigInt(1_000_000_000), // 1000 USDC (6dp)
|
|
293
|
+
destinationChainId: ChainID.Arbitrum,
|
|
294
|
+
destinationTokenAddress: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', // WETH
|
|
295
|
+
destinationAddress: '0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6',
|
|
296
|
+
stopLossMaxOut: BigInt(2_500_000_000),
|
|
297
|
+
takeProfitMinOut: BigInt(3_500_000_000),
|
|
298
|
+
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
299
|
+
});
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### EVM Guard Addresses and Configuration
|
|
303
|
+
|
|
304
|
+
When working with EVM chains, you can access guard addresses for different order types:
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
import {
|
|
308
|
+
CROSS_CHAIN_GUARD_ADDRESSES,
|
|
309
|
+
SINGLE_CHAIN_GUARD_ADDRESSES,
|
|
310
|
+
DCA_SINGLE_CHAIN_GUARD_ADDRESSES,
|
|
311
|
+
PERMIT2_ADDRESS,
|
|
312
|
+
WRAPPED_ETH_ADDRESSES,
|
|
313
|
+
ChainID,
|
|
314
|
+
} from "@shogun-sdk/intents-sdk";
|
|
315
|
+
|
|
316
|
+
// Get guard addresses for different chains and order types
|
|
317
|
+
const arbitrumCrossChain = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Arbitrum];
|
|
318
|
+
const baseSingleChain = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Base];
|
|
319
|
+
const hyperliquidDca = DCA_SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Hyperliquid];
|
|
320
|
+
|
|
321
|
+
// Get Permit2 address for token approvals
|
|
322
|
+
const permit2Address = PERMIT2_ADDRESS[ChainID.Arbitrum];
|
|
323
|
+
|
|
324
|
+
// Get wrapped ETH address for each chain
|
|
325
|
+
const wrappedEthArbitrum = WRAPPED_ETH_ADDRESSES[ChainID.Arbitrum];
|
|
326
|
+
const wrappedEthBase = WRAPPED_ETH_ADDRESSES[ChainID.Base];
|
|
327
|
+
|
|
328
|
+
console.log('Arbitrum Cross-chain Guard:', arbitrumCrossChain);
|
|
329
|
+
console.log('Base Single-chain Guard:', baseSingleChain);
|
|
330
|
+
console.log('Hyperliquid DCA Guard:', hyperliquidDca);
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Solana Configuration
|
|
334
|
+
|
|
335
|
+
For Solana integration, use the provided mint addresses and configurations:
|
|
336
|
+
|
|
337
|
+
```typescript
|
|
338
|
+
import {
|
|
339
|
+
SOLANA_USDC_MINT,
|
|
340
|
+
NATIVE_SOLANA_TOKEN_ADDRESS,
|
|
341
|
+
WRAPPED_SOL_MINT_ADDRESS,
|
|
342
|
+
CROSS_CHAIN_GUARD_ADDRESSES,
|
|
343
|
+
SINGLE_CHAIN_GUARD_ADDRESSES,
|
|
344
|
+
ChainID,
|
|
345
|
+
} from "@shogun-sdk/intents-sdk";
|
|
346
|
+
|
|
347
|
+
// Solana USDC mint configuration
|
|
348
|
+
console.log('USDC Mint:', SOLANA_USDC_MINT.mint);
|
|
349
|
+
console.log('USDC Decimals:', SOLANA_USDC_MINT.decimals);
|
|
350
|
+
|
|
351
|
+
// Native and wrapped SOL addresses
|
|
352
|
+
console.log('Native SOL:', NATIVE_SOLANA_TOKEN_ADDRESS);
|
|
353
|
+
console.log('Wrapped SOL:', WRAPPED_SOL_MINT_ADDRESS);
|
|
354
|
+
|
|
355
|
+
// Guard addresses for Solana
|
|
356
|
+
const solanaCrossChainGuard = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Solana];
|
|
357
|
+
const solanaSingleChainGuard = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana];
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Browser integration (manual signing)
|
|
361
|
+
|
|
362
|
+
For browser wallets, prepare the order and sign manually, then submit:
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
import {
|
|
366
|
+
ChainID,
|
|
367
|
+
CrossChainOrder,
|
|
368
|
+
getEVMCrossChainOrderTypedData,
|
|
369
|
+
} from "@shogun-sdk/intents-sdk";
|
|
370
|
+
import { createWalletClient, custom } from 'viem';
|
|
371
|
+
|
|
372
|
+
// 1) Build order (user address is inferred by SDK when using high-level APIs).
|
|
373
|
+
const order = await CrossChainOrder.create({
|
|
374
|
+
sourceChainId: ChainID.Arbitrum,
|
|
375
|
+
sourceTokenAddress: '0xfd086...bb9',
|
|
376
|
+
sourceTokenAmount: BigInt(10_000_000),
|
|
377
|
+
destinationChainId: ChainID.Base,
|
|
378
|
+
destinationTokenAddress: '0x833589...2913',
|
|
379
|
+
destinationAddress: '0xYourDest',
|
|
380
|
+
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
381
|
+
user: '0xYourEoa', // required when not using EVMSDK.create* helpers
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
// 2) Get EIP-712 typed data + random nonce
|
|
385
|
+
const { orderTypedData, nonce } = await getEVMCrossChainOrderTypedData(order);
|
|
386
|
+
|
|
387
|
+
// 3) Sign with wallet client (e.g. window.ethereum)
|
|
388
|
+
const walletClient = createWalletClient({ transport: custom(window.ethereum!) });
|
|
389
|
+
const signature = await walletClient.signTypedData({
|
|
390
|
+
account: order.user as `0x${string}`,
|
|
391
|
+
domain: orderTypedData.domain,
|
|
392
|
+
types: orderTypedData.types,
|
|
393
|
+
primaryType: orderTypedData.primaryType,
|
|
394
|
+
message: orderTypedData.message,
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
// 4) Submit to auctioneer
|
|
398
|
+
await order.sendToAuctioneer({ nonce: nonce.toString(), signature: signature.slice(2) });
|
|
75
399
|
```
|
|
76
400
|
|
|
77
401
|
## Supported Chains
|
|
78
402
|
|
|
79
|
-
| Chain | Chain ID | Status |
|
|
80
|
-
|
|
81
|
-
| Arbitrum | 42161 | ✅ Supported |
|
|
82
|
-
| Optimism | 10 | ✅ Supported |
|
|
83
|
-
| Base | 8453 | ✅ Supported |
|
|
84
|
-
|
|
|
85
|
-
|
|
|
403
|
+
| Chain | Chain ID | Type | Features | Status |
|
|
404
|
+
|-------|----------|------|----------|--------|
|
|
405
|
+
| Arbitrum | 42161 | EVM | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
406
|
+
| Optimism | 10 | EVM | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
407
|
+
| Base | 8453 | EVM | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
408
|
+
| Hyperliquid | 999 | EVM | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
409
|
+
| Solana | 7565164 | Solana | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
410
|
+
| Sui | 101 | Sui | Cross-chain, Single-chain, DCA | ✅ Supported |
|
|
411
|
+
|
|
412
|
+
## Use Cases
|
|
413
|
+
|
|
414
|
+
### 🏦 DeFi Applications
|
|
415
|
+
- **Cross-chain DEX Aggregation**: Build applications that find the best prices across multiple chains
|
|
416
|
+
- **Portfolio Management**: Automate rebalancing across different blockchain ecosystems
|
|
417
|
+
- **Yield Farming**: Move assets between chains to optimize yield opportunities
|
|
418
|
+
|
|
419
|
+
### 📊 Trading Platforms
|
|
420
|
+
- **Advanced Order Types**: Implement sophisticated trading strategies with stop-loss and take-profit
|
|
421
|
+
- **DCA Strategies**: Allow users to dollar-cost average into positions over time
|
|
422
|
+
- **Cross-chain Arbitrage**: Execute arbitrage opportunities across different chains
|
|
423
|
+
|
|
424
|
+
### 🔄 Bridge Applications
|
|
425
|
+
- **Intent-based Bridging**: Let users express their destination intent rather than complex multi-step processes
|
|
426
|
+
- **Multi-hop Routing**: Automatically find optimal paths through multiple chains and DEXs
|
|
427
|
+
- **Stablecoin Routing**: Use stablecoins as intermediate assets for efficient cross-chain transfers
|
|
428
|
+
|
|
429
|
+
### 🎯 Automated Trading
|
|
430
|
+
- **Bot Integration**: Build trading bots that can operate across multiple chains
|
|
431
|
+
- **Strategy Execution**: Implement complex trading strategies that span multiple ecosystems
|
|
432
|
+
- **Risk Management**: Automate stop-loss and take-profit execution across chains
|
|
433
|
+
|
|
434
|
+
## Order Management
|
|
435
|
+
|
|
436
|
+
### Fetching User Orders
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
import { fetchUserOrders } from "@shogun-sdk/intents-sdk";
|
|
440
|
+
|
|
441
|
+
// Authenticate and fetch user orders
|
|
442
|
+
const jwt = await evmSdk.authenticate(); // or solanaSdk.authenticate(), suiSdk.authenticate()
|
|
443
|
+
const orders = await fetchUserOrders(jwt);
|
|
444
|
+
|
|
445
|
+
console.log('Cross-chain orders:', orders.crossChainLimitOrders);
|
|
446
|
+
console.log('Single-chain orders:', orders.singleChainLimitOrders);
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Canceling Orders
|
|
86
450
|
|
|
87
|
-
|
|
451
|
+
```typescript
|
|
452
|
+
// Cancel a cross-chain order
|
|
453
|
+
const cancelTxHash = await evmSdk.cancelCrossChainOrder({
|
|
454
|
+
orderId: '0x...',
|
|
455
|
+
user: '0x...',
|
|
456
|
+
tokenIn: '0x...',
|
|
457
|
+
amountIn: BigInt(1000),
|
|
458
|
+
srcChainId: ChainID.Arbitrum,
|
|
459
|
+
deadline: 1234567890,
|
|
460
|
+
minStablecoinsAmount: BigInt(1000),
|
|
461
|
+
executionDetailsHash: '0x...',
|
|
462
|
+
nonce: BigInt(123)
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
// Cancel a single-chain order
|
|
466
|
+
const cancelTxHash2 = await evmSdk.cancelSingleChainOrder({
|
|
467
|
+
orderId: '0x...',
|
|
468
|
+
user: '0x...',
|
|
469
|
+
tokenIn: '0x...',
|
|
470
|
+
amountIn: BigInt(1000),
|
|
471
|
+
requestedOutput: { token: '0x...', receiver: '0x...', amount: BigInt(1000) },
|
|
472
|
+
extraTransfers: [],
|
|
473
|
+
encodedExternalCallData: '0x',
|
|
474
|
+
deadline: 1234567890,
|
|
475
|
+
nonce: BigInt(123)
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
// Solana cancellations use order public keys
|
|
479
|
+
await solanaSdk.cancelCrossChainOrder('OrderPubkeyBase58');
|
|
480
|
+
await solanaSdk.cancelSingleChainOrder('OrderPubkeyBase58');
|
|
88
481
|
|
|
89
|
-
|
|
482
|
+
// Sui cancellations use digest/hash
|
|
483
|
+
await suiSdk.cancelCrossChainOrder('TransactionDigest');
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
## Quotes & pricing
|
|
487
|
+
|
|
488
|
+
You can fetch rough price/amount estimates without creating orders using the built-in quote aggregator:
|
|
489
|
+
|
|
490
|
+
```typescript
|
|
491
|
+
import { ChainID, QuoteProvider } from "@shogun-sdk/intents-sdk";
|
|
492
|
+
|
|
493
|
+
// Cross-chain quote (uses routers with DefiLlama fallback)
|
|
494
|
+
const quote = await QuoteProvider.getQuote({
|
|
495
|
+
sourceChainId: ChainID.Arbitrum,
|
|
496
|
+
destChainId: ChainID.Base,
|
|
497
|
+
amount: BigInt(10_000_000), // 10 USDT
|
|
498
|
+
tokenIn: '0xfd086...bb9',
|
|
499
|
+
tokenOut: '0x833589...2913', // USDC on Base
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
console.log({
|
|
503
|
+
amountInUsd: quote.amountInUsd,
|
|
504
|
+
estimatedAmountOut: quote.estimatedAmountOut.toString(),
|
|
505
|
+
estimatedAmountOutReduced: quote.estimatedAmountOutReduced.toString(),
|
|
506
|
+
});
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
## Quote Providers
|
|
510
|
+
|
|
511
|
+
The SDK integrates with multiple quote providers for optimal pricing:
|
|
512
|
+
|
|
513
|
+
- **ParaSwap**: EVM chain routing and pricing
|
|
514
|
+
- **Jupiter**: Solana DEX aggregation
|
|
515
|
+
- **Aftermath**: Sui DEX integration
|
|
516
|
+
- **LiquidSwap**: Sui native DEX
|
|
517
|
+
- **DefiLlama**: Cross-chain price feeds
|
|
518
|
+
|
|
519
|
+
## Error Handling
|
|
520
|
+
|
|
521
|
+
```typescript
|
|
522
|
+
import { ValidationError } from "@shogun-sdk/intents-sdk";
|
|
523
|
+
|
|
524
|
+
try {
|
|
525
|
+
const order = await CrossChainOrder.create(params);
|
|
526
|
+
} catch (error) {
|
|
527
|
+
if (error instanceof ValidationError) {
|
|
528
|
+
console.error("Order validation failed:", error.message);
|
|
529
|
+
} else {
|
|
530
|
+
console.error("Unexpected error:", error);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## Complete example
|
|
90
536
|
|
|
91
537
|
```typescript
|
|
92
538
|
import { ChainID, EVMSDK, ValidationError } from "@shogun-sdk/intents-sdk";
|
|
93
539
|
|
|
94
|
-
async function
|
|
540
|
+
async function createAdvancedCrossChainOrder() {
|
|
95
541
|
try {
|
|
96
542
|
const sdk = new EVMSDK({
|
|
97
543
|
chainId: ChainID.Arbitrum,
|
|
98
544
|
privateKey: process.env.PRIVATE_KEY as `0x${string}`,
|
|
99
545
|
});
|
|
100
546
|
|
|
101
|
-
const response = await sdk.
|
|
547
|
+
const response = await sdk.createAndSendCrossChainOrder({
|
|
102
548
|
sourceChainId: ChainID.Arbitrum,
|
|
103
|
-
sourceTokenAddress: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
|
|
104
|
-
sourceTokenAmount: BigInt(10_000_000),
|
|
549
|
+
sourceTokenAddress: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9',
|
|
550
|
+
sourceTokenAmount: BigInt(10_000_000),
|
|
105
551
|
destinationChainId: ChainID.Solana,
|
|
106
|
-
destinationTokenAddress: '
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
552
|
+
destinationTokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
553
|
+
destinationAddress: '3Kiz4oBXpR9YuPNsVfvE5XnNzgwjrM9m2CbRzyyEVkpQ',
|
|
554
|
+
stopLossMaxOut: BigInt(9_000_000),
|
|
555
|
+
takeProfitMinOut: BigInt(11_000_000),
|
|
556
|
+
deadline: Math.floor(Date.now() / 1000) + 3600,
|
|
111
557
|
});
|
|
112
558
|
|
|
559
|
+
console.log('Order created successfully:', response);
|
|
113
560
|
return response;
|
|
114
561
|
} catch (error) {
|
|
115
562
|
if (error instanceof ValidationError) {
|
|
116
563
|
console.error("Invalid order parameters:", error.message);
|
|
117
564
|
} else {
|
|
118
|
-
console.error("Failed to create
|
|
565
|
+
console.error("Failed to create order:", error);
|
|
119
566
|
}
|
|
120
567
|
throw error;
|
|
121
568
|
}
|
|
122
569
|
}
|
|
123
|
-
```
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
## Advanced Sui Integration
|
|
573
|
+
|
|
574
|
+
The SDK provides comprehensive Sui blockchain support with both high-level SDK methods and low-level transaction builders:
|
|
575
|
+
|
|
576
|
+
### High-Level SDK Usage (Recommended)
|
|
577
|
+
|
|
578
|
+
```typescript
|
|
579
|
+
import { ChainID, SuiSDK } from "@shogun-sdk/intents-sdk";
|
|
580
|
+
|
|
581
|
+
const suiSdk = new SuiSDK({
|
|
582
|
+
privateKey: '...',
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
// Cross-chain order (one call)
|
|
586
|
+
const crossChainResponse = await suiSdk.createAndSendCrossChainOrder({
|
|
587
|
+
sourceChainId: ChainID.Sui,
|
|
588
|
+
sourceTokenAddress: '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC',
|
|
589
|
+
sourceTokenAmount: BigInt(500_000),
|
|
590
|
+
destinationChainId: ChainID.Base,
|
|
591
|
+
destinationTokenAddress: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
|
|
592
|
+
destinationAddress: '0xD022311DAcaa30f8396cA9d2C4662a2eF083A1Dd',
|
|
593
|
+
deadline: Math.floor(Date.now() / 1000) + 1200,
|
|
594
|
+
});
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
### Low-Level Transaction Builders
|
|
598
|
+
|
|
599
|
+
For advanced use cases, you can use the low-level transaction builders:
|
|
600
|
+
|
|
601
|
+
```typescript
|
|
602
|
+
import {
|
|
603
|
+
createSuiClient,
|
|
604
|
+
getSuiOrderTransaction,
|
|
605
|
+
getSuiSingleChainLimitOrderTransaction,
|
|
606
|
+
getSuiSingleChainDcaOrderTransaction,
|
|
607
|
+
createSuiCrossChainOrderIntentRequest,
|
|
608
|
+
generateExecutionDetailsHash,
|
|
609
|
+
// Import constants for proper configuration
|
|
610
|
+
CROSS_CHAIN_GUARD_ADDRESSES,
|
|
611
|
+
SUI_GUARD_STABLECOIN_TYPE,
|
|
612
|
+
SUI_PACKAGE_ID,
|
|
613
|
+
ChainID,
|
|
614
|
+
} from "@shogun-sdk/intents-sdk";
|
|
615
|
+
|
|
616
|
+
// Create client with optional custom configuration
|
|
617
|
+
const client = createSuiClient();
|
|
618
|
+
const guardAddress = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Sui];
|
|
619
|
+
|
|
620
|
+
// Cross-chain transaction builder
|
|
621
|
+
const crossChainTx = await getSuiOrderTransaction(crossChainOrder, client);
|
|
622
|
+
|
|
623
|
+
// Single-chain limit order transaction builder
|
|
624
|
+
const limitOrderTx = await getSuiSingleChainLimitOrderTransaction(
|
|
625
|
+
singleChainOrder,
|
|
626
|
+
secretHash,
|
|
627
|
+
guardAddress, // Using CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Sui]
|
|
628
|
+
client
|
|
629
|
+
);
|
|
630
|
+
|
|
631
|
+
// Single-chain DCA order transaction builder
|
|
632
|
+
const dcaTx = await getSuiSingleChainDcaOrderTransaction(
|
|
633
|
+
dcaOrder,
|
|
634
|
+
secretHash,
|
|
635
|
+
guardAddress, // Using CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Sui]
|
|
636
|
+
client
|
|
637
|
+
);
|
|
638
|
+
|
|
639
|
+
// Cross-chain intent request builder
|
|
640
|
+
const crossChainIntent = createSuiCrossChainOrderIntentRequest({
|
|
641
|
+
user: "0x...",
|
|
642
|
+
srcChainId: ChainID.Sui,
|
|
643
|
+
tokenIn: "0x...",
|
|
644
|
+
amountIn: BigInt(500_000),
|
|
645
|
+
minStablecoinsAmount: BigInt(1),
|
|
646
|
+
deadline: Math.floor(Date.now() / 1000) + 1200,
|
|
647
|
+
destChainId: ChainID.Base,
|
|
648
|
+
destinationAddress: "0x...",
|
|
649
|
+
tokenOut: "0x...",
|
|
650
|
+
amountOutMin: BigInt(1),
|
|
651
|
+
transactionHash: "FQWndwYJhNQUoHyvR8UuhGURC2EKx9eWErFm9Tc2DggF",
|
|
652
|
+
});
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
### Sui-Specific Features
|
|
656
|
+
|
|
657
|
+
- **Secret Hash Generation**: Automatic generation of cryptographic hashes for order security
|
|
658
|
+
- **Gas Optimization**: Smart coin merging and splitting to minimize gas costs
|
|
659
|
+
- **Native SUI Support**: Handles native SUI token transactions with gas considerations
|
|
660
|
+
- **Extra Transfers**: Support for additional token transfers within orders (limited to 1 per order)
|
|
661
|
+
- **Guard Contract Integration**: Seamless integration with Sui guard contracts
|
|
662
|
+
- **Transaction Validation**: Built-in validation and balance checking
|
|
663
|
+
|
|
664
|
+
### Available Sui Functions
|
|
665
|
+
|
|
666
|
+
| Function | Description | Use Case |
|
|
667
|
+
|----------|-------------|----------|
|
|
668
|
+
| `getSuiOrderTransaction` | Cross-chain order transaction | Cross-chain swaps from Sui |
|
|
669
|
+
| `getSuiSingleChainLimitOrderTransaction` | Single-chain limit order | Limit orders on Sui |
|
|
670
|
+
| `getSuiSingleChainDcaOrderTransaction` | Single-chain DCA order | DCA strategies on Sui |
|
|
671
|
+
| `createSuiCrossChainOrderIntentRequest` | Cross-chain intent payload | Manual cross-chain order submission |
|
|
672
|
+
| `createSuiSingleChainLimitOrderIntentRequest` | Limit order intent payload | Manual limit order submission |
|
|
673
|
+
| `createSuiSingleChainDcaOrderIntentRequest` | DCA order intent payload | Manual DCA order submission |
|
|
674
|
+
| `generateSuiLimitOrderSecretData` | Secret hash for limit orders | Security for limit orders |
|
|
675
|
+
| `generateSuiDcaOrderSecretData` | Secret hash for DCA orders | Security for DCA orders |
|
|
676
|
+
| `generateExecutionDetailsHash` | Execution details hash | Cross-chain order verification |
|
|
677
|
+
| `getSuiRandomU64Number` | Random number generation | Cryptographic randomness |
|
|
678
|
+
|
|
679
|
+
## Notes
|
|
680
|
+
|
|
681
|
+
- Server-side usage is recommended for EVM/Sui/Solana private keys. In browsers, use the manual signing flow with the exported helpers and never expose raw private keys.
|
|
682
|
+
- Non‑EVM chains (Solana, Sui) perform on-chain preparation during create/send flows; validation is handled for you when using the high-level methods.
|
|
683
|
+
- Sui orders support up to 1 extra transfer per order due to Move language constraints.
|
|
684
|
+
- All Sui transaction builders accept an optional `client` parameter for better dependency injection and performance optimization.
|