@shogun-sdk/intents-sdk 1.2.0 → 1.2.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/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/sdk.js +4 -4
- package/dist/esm/core/evm/sdk.js.map +1 -1
- 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 +3 -3
- 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 +10 -2
- 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 +10 -28
- 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 +9 -24
- 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 +12 -25
- 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 +24 -72
- 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 +14 -30
- 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 +12 -25
- 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 +18 -11
- 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 +10 -17
- 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 +10 -17
- 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 +7 -10
- 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/cross-chain/types/tokenInSwapped.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 +10 -17
- 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 +10 -17
- 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 +14 -33
- 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 +14 -30
- 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 +12 -22
- 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 +14 -30
- 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 +18 -42
- 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 +17 -38
- 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 +18 -11
- 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 +7 -10
- 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/guardCreated.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/esm/utils/quote/aggregator.js +2 -2
- package/dist/esm/utils/quote/aggregator.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/sdk.ts +4 -4
- 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 +3 -3
- package/src/core/orders/dca-single-chain.ts +4 -1
- package/src/core/orders/single-chain.ts +12 -2
- 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 +155 -12
- 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 +54 -61
- package/src/core/solana/generated/cross-chain/instructions/claimTokens.ts +58 -60
- package/src/core/solana/generated/cross-chain/instructions/collectProtocolFees.ts +57 -62
- package/src/core/solana/generated/cross-chain/instructions/createDcaOrder.ts +496 -0
- package/src/core/solana/generated/cross-chain/instructions/createGuard.ts +86 -110
- package/src/core/solana/generated/cross-chain/instructions/createOrder.ts +66 -66
- 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 +60 -64
- package/src/core/solana/generated/cross-chain/instructions/setAdmin.ts +49 -34
- package/src/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.ts +89 -46
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecution.ts +51 -50
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.ts +47 -48
- package/src/core/solana/generated/cross-chain/programs/sourceChainGuard.ts +118 -37
- package/src/core/solana/generated/cross-chain/shared/index.ts +25 -19
- 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 +10 -10
- 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 +7 -11
- 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 +11 -8
- package/src/core/solana/generated/single-chain/instructions/acceptAdmin.ts +44 -34
- package/src/core/solana/generated/single-chain/instructions/cancelDcaOrder.ts +57 -51
- package/src/core/solana/generated/single-chain/instructions/cancelLimitOrder.ts +54 -51
- package/src/core/solana/generated/single-chain/instructions/collectProtocolFees.ts +62 -69
- package/src/core/solana/generated/single-chain/instructions/createDcaOrder.ts +66 -62
- package/src/core/solana/generated/single-chain/instructions/createGuard.ts +74 -62
- package/src/core/solana/generated/single-chain/instructions/createLimitOrder.ts +63 -62
- package/src/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.ts +86 -90
- package/src/core/solana/generated/single-chain/instructions/fulfillLimitOrder.ts +89 -87
- package/src/core/solana/generated/single-chain/instructions/initialize.ts +58 -40
- package/src/core/solana/generated/single-chain/instructions/setAdmin.ts +49 -34
- package/src/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.ts +89 -46
- package/src/core/solana/generated/single-chain/programs/singleChainGuard.ts +76 -37
- package/src/core/solana/generated/single-chain/shared/index.ts +25 -19
- 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 +10 -10
- 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 +7 -11
- package/src/core/solana/generated/single-chain/types/limitOrderCreated.ts +9 -6
- package/src/core/solana/generated/single-chain/types/limitOrderFulfilled.ts +10 -10
- 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/src/utils/quote/aggregator.ts +2 -2
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { bcs, fromHex } from '@mysten/bcs';
|
|
2
|
+
import { keccak256 } from "js-sha3";
|
|
3
|
+
import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
|
|
4
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
5
|
+
import { ValidationError } from '../../errors/index.js';
|
|
6
|
+
import { createSuiClient } from './client.js';
|
|
7
|
+
import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
|
|
8
|
+
import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Generates secret hash based on types, addresses and secret number for single chain DCA orders
|
|
12
|
+
* @param coinOutType Type tag of Coin OUT
|
|
13
|
+
* @param receiver Main Coins OUT receiver
|
|
14
|
+
* @param secretNumber Secret number, for hash randomness
|
|
15
|
+
* @param extraTransferCoinOut Type tag of extra transfer coin OUT
|
|
16
|
+
* @param extraTransferReceiver Receiver of extra transfer
|
|
17
|
+
*/
|
|
18
|
+
export function getDcaSecretHash(
|
|
19
|
+
coinOutType: string,
|
|
20
|
+
receiver: string,
|
|
21
|
+
secretNumber: string,
|
|
22
|
+
extraTransferCoinOut?: string,
|
|
23
|
+
extraTransferReceiver?: string,
|
|
24
|
+
) {
|
|
25
|
+
const coinOutTypeBytes = Buffer.from(
|
|
26
|
+
normalizeStructTag(coinOutType).replace("0x", ""),
|
|
27
|
+
"utf8"
|
|
28
|
+
);
|
|
29
|
+
const receiverBytes = fromHex(normalizeSuiAddress(receiver));
|
|
30
|
+
|
|
31
|
+
let resBytes = [
|
|
32
|
+
...coinOutTypeBytes,
|
|
33
|
+
...receiverBytes,
|
|
34
|
+
];
|
|
35
|
+
if (extraTransferCoinOut && extraTransferReceiver) {
|
|
36
|
+
const extraTransferCoinOutBytes = Buffer.from(
|
|
37
|
+
normalizeStructTag(extraTransferCoinOut).replace("0x", ""),
|
|
38
|
+
"utf8"
|
|
39
|
+
);
|
|
40
|
+
const extraTransferReceiverBytes = fromHex(normalizeSuiAddress(extraTransferReceiver));
|
|
41
|
+
|
|
42
|
+
resBytes = [
|
|
43
|
+
...resBytes,
|
|
44
|
+
...extraTransferCoinOutBytes,
|
|
45
|
+
...extraTransferReceiverBytes,
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
resBytes = [
|
|
50
|
+
...resBytes,
|
|
51
|
+
...bcs.u64().serialize(secretNumber).toBytes(),
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
return keccak256.array(resBytes);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Generates Sui single-chain DCA order transaction
|
|
59
|
+
* @param order The DCA order to generate transaction for
|
|
60
|
+
* @param secretHash The secret hash for the order
|
|
61
|
+
* @param guardAddress The guard contract address
|
|
62
|
+
* @param client The Sui client instance
|
|
63
|
+
* @returns Transaction object for creating the DCA order
|
|
64
|
+
*/
|
|
65
|
+
export async function getSuiSingleChainDcaOrderTransaction(
|
|
66
|
+
order: DcaSingleChainOrder,
|
|
67
|
+
secretHash: Uint8Array,
|
|
68
|
+
guardAddress: string,
|
|
69
|
+
client?: ReturnType<typeof createSuiClient>
|
|
70
|
+
): Promise<Transaction> {
|
|
71
|
+
const userAddress = order.user;
|
|
72
|
+
const suiClient = client || createSuiClient();
|
|
73
|
+
const totalAmountIn = order.getTotalAmountIn();
|
|
74
|
+
|
|
75
|
+
const coins = await suiClient.getCoins({
|
|
76
|
+
owner: userAddress,
|
|
77
|
+
coinType: order.tokenIn,
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const sourceTokenInCoins = coins.data.sort((a, b) => Number(b.balance) - Number(a.balance));
|
|
81
|
+
|
|
82
|
+
if (sourceTokenInCoins.length === 0) {
|
|
83
|
+
throw new ValidationError(`No token (${order.tokenIn}) to create order`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const coinsInSum = sourceTokenInCoins.reduce((acc, coin) => acc + BigInt(coin.balance), 0n);
|
|
87
|
+
|
|
88
|
+
if (coinsInSum < totalAmountIn) {
|
|
89
|
+
throw new ValidationError(
|
|
90
|
+
`Insufficient balance to create order. Total coins is ${coinsInSum}, but order requires ${totalAmountIn}`,
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const spendingGasCoin =
|
|
95
|
+
normalizeSuiObjectId(order.tokenIn) === normalizeSuiObjectId(NATIVE_SUI_TOKEN_ADDRESS);
|
|
96
|
+
|
|
97
|
+
const tx = new Transaction();
|
|
98
|
+
const coinInArg = spendingGasCoin ? tx.gas : sourceTokenInCoins[0]!.coinObjectId;
|
|
99
|
+
|
|
100
|
+
if (sourceTokenInCoins.length > 1) {
|
|
101
|
+
// Merging coins IN into a single object just in case
|
|
102
|
+
tx.mergeCoins(
|
|
103
|
+
// merge into 1st coin object
|
|
104
|
+
coinInArg,
|
|
105
|
+
// merge the rest of coins
|
|
106
|
+
sourceTokenInCoins.slice(1).map((coin) => coin.coinObjectId),
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const [coinIn] = tx.splitCoins(coinInArg, [totalAmountIn]);
|
|
111
|
+
|
|
112
|
+
// Get extra transfer amount - only first extra transfer is supported on Sui
|
|
113
|
+
const extraTransferAmount = order.extraTransfers && order.extraTransfers.length > 0
|
|
114
|
+
? BigInt(order.extraTransfers[0]!.amount)
|
|
115
|
+
: 0n;
|
|
116
|
+
|
|
117
|
+
tx.moveCall({
|
|
118
|
+
package: SUI_PACKAGE_ID,
|
|
119
|
+
module: 'single_chain_dca_orders',
|
|
120
|
+
function: 'create_dca_order',
|
|
121
|
+
arguments: [
|
|
122
|
+
tx.object(guardAddress), // arg0: &Guard<T0, T2>
|
|
123
|
+
coinIn, // arg1: Coin<T1>
|
|
124
|
+
tx.pure.u64(order.amountInPerInterval), // arg2: amount_in_per_interval
|
|
125
|
+
tx.pure.u64(order.amountOutMin), // arg3: amount_out_min
|
|
126
|
+
tx.pure.u64(extraTransferAmount), // arg4: extra_transfer_amount_out_min
|
|
127
|
+
tx.pure.u64(order.deadline * 1000), // arg5: deadline (converted to milliseconds)
|
|
128
|
+
tx.pure.u32(order.totalIntervals), // arg6: total_intervals
|
|
129
|
+
tx.pure.u64(order.intervalDuration * 1000), // arg7: interval_duration (converted to milliseconds)
|
|
130
|
+
tx.pure.vector('u8', [...secretHash]), // arg8: secret_hash
|
|
131
|
+
tx.object.clock(), // arg9: &Clock
|
|
132
|
+
],
|
|
133
|
+
typeArguments: [SUI_GUARD_COLLATERAL_TYPE, order.tokenIn, SUI_GUARD_STABLECOIN_TYPE],
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
tx.setSender(userAddress);
|
|
137
|
+
|
|
138
|
+
return tx;
|
|
139
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { bcs, fromHex } from '@mysten/bcs';
|
|
2
|
+
import { keccak256 } from "js-sha3";
|
|
3
|
+
import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
|
|
4
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
5
|
+
import { ValidationError } from '../../errors/index.js';
|
|
6
|
+
import { createSuiClient } from './client.js';
|
|
7
|
+
import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
|
|
8
|
+
import type { SingleChainOrder } from '../orders/single-chain.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Generates random U64 number
|
|
12
|
+
*/
|
|
13
|
+
export function getRandomU64Number() {
|
|
14
|
+
return BigInt("0x" + [...crypto.getRandomValues(new Uint8Array(8))]
|
|
15
|
+
.map(n => n.toString(16))
|
|
16
|
+
.join("")).toString();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Generates secret hash based on types, addresses and secret number for single chain limit orders
|
|
21
|
+
* @param coinOutType Type tag of Coin OUT
|
|
22
|
+
* @param receiver Main Coins OUT receiver
|
|
23
|
+
* @param secretNumber Secret number, for hash randomness
|
|
24
|
+
* @param extraTransferCoinOut Type tag of extra transfer coin OUT
|
|
25
|
+
* @param extraTransferReceiver Receiver of extra transfer
|
|
26
|
+
*/
|
|
27
|
+
export function getSecretHash(
|
|
28
|
+
coinOutType: string,
|
|
29
|
+
receiver: string,
|
|
30
|
+
secretNumber: string,
|
|
31
|
+
extraTransferCoinOut?: string,
|
|
32
|
+
extraTransferReceiver?: string,
|
|
33
|
+
) {
|
|
34
|
+
const coinOutTypeBytes = Buffer.from(
|
|
35
|
+
normalizeStructTag(coinOutType).replace("0x", ""),
|
|
36
|
+
"utf8"
|
|
37
|
+
);
|
|
38
|
+
const receiverBytes = fromHex(normalizeSuiAddress(receiver));
|
|
39
|
+
|
|
40
|
+
let resBytes = [
|
|
41
|
+
...coinOutTypeBytes,
|
|
42
|
+
...receiverBytes,
|
|
43
|
+
];
|
|
44
|
+
if (extraTransferCoinOut && extraTransferReceiver) {
|
|
45
|
+
const extraTransferCoinOutBytes = Buffer.from(
|
|
46
|
+
normalizeStructTag(extraTransferCoinOut).replace("0x", ""),
|
|
47
|
+
"utf8"
|
|
48
|
+
);
|
|
49
|
+
const extraTransferReceiverBytes = fromHex(normalizeSuiAddress(extraTransferReceiver));
|
|
50
|
+
|
|
51
|
+
resBytes = [
|
|
52
|
+
...resBytes,
|
|
53
|
+
...extraTransferCoinOutBytes,
|
|
54
|
+
...extraTransferReceiverBytes,
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
resBytes = [
|
|
59
|
+
...resBytes,
|
|
60
|
+
...bcs.u64().serialize(secretNumber).toBytes(),
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
return keccak256.array(resBytes);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Generates Sui single-chain limit order transaction
|
|
68
|
+
* @param order The single-chain order to generate transaction for
|
|
69
|
+
* @param secretHash The secret hash for the order
|
|
70
|
+
* @param guardAddress The guard contract address
|
|
71
|
+
* @param client The Sui client instance
|
|
72
|
+
* @returns Transaction object for creating the limit order
|
|
73
|
+
*/
|
|
74
|
+
export async function getSuiSingleChainLimitOrderTransaction(
|
|
75
|
+
order: SingleChainOrder,
|
|
76
|
+
secretHash: Uint8Array,
|
|
77
|
+
guardAddress: string,
|
|
78
|
+
client?: ReturnType<typeof createSuiClient>
|
|
79
|
+
): Promise<Transaction> {
|
|
80
|
+
const userAddress = order.user;
|
|
81
|
+
const suiClient = client || createSuiClient();
|
|
82
|
+
const coins = await suiClient.getCoins({
|
|
83
|
+
owner: userAddress,
|
|
84
|
+
coinType: order.tokenIn,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const sourceTokenInCoins = coins.data.sort((a, b) => Number(b.balance) - Number(a.balance));
|
|
88
|
+
|
|
89
|
+
if (sourceTokenInCoins.length === 0) {
|
|
90
|
+
throw new ValidationError(`No token (${order.tokenIn}) to create order`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const coinsInSum = sourceTokenInCoins.reduce((acc, coin) => acc + BigInt(coin.balance), 0n);
|
|
94
|
+
|
|
95
|
+
if (coinsInSum < order.amountIn) {
|
|
96
|
+
throw new ValidationError(
|
|
97
|
+
`Insufficient balance to create order. Total coins is ${coinsInSum}, but order requires ${order.amountIn}`,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const spendingGasCoin =
|
|
102
|
+
normalizeSuiObjectId(order.tokenIn) === normalizeSuiObjectId(NATIVE_SUI_TOKEN_ADDRESS);
|
|
103
|
+
|
|
104
|
+
const tx = new Transaction();
|
|
105
|
+
const coinInArg = spendingGasCoin ? tx.gas : sourceTokenInCoins[0]!.coinObjectId;
|
|
106
|
+
|
|
107
|
+
if (sourceTokenInCoins.length > 1) {
|
|
108
|
+
// Merging coins IN into a single object just in case
|
|
109
|
+
tx.mergeCoins(
|
|
110
|
+
// merge into 1st coin object
|
|
111
|
+
coinInArg,
|
|
112
|
+
// merge the rest of coins
|
|
113
|
+
sourceTokenInCoins.slice(1).map((coin) => coin.coinObjectId),
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const [coinIn] = tx.splitCoins(coinInArg, [order.amountIn]);
|
|
118
|
+
|
|
119
|
+
// Get extra transfer amount - only first extra transfer is supported on Sui
|
|
120
|
+
const extraTransferAmount = order.extraTransfers && order.extraTransfers.length > 0
|
|
121
|
+
? BigInt(order.extraTransfers[0]!.amount)
|
|
122
|
+
: 0n;
|
|
123
|
+
|
|
124
|
+
tx.moveCall({
|
|
125
|
+
package: SUI_PACKAGE_ID,
|
|
126
|
+
module: 'single_chain_limit_orders',
|
|
127
|
+
function: 'create_limit_order',
|
|
128
|
+
arguments: [
|
|
129
|
+
tx.object(guardAddress), // arg0: &Guard<T0, T2>
|
|
130
|
+
coinIn, // arg1: Coin<T1>
|
|
131
|
+
tx.pure.u64(order.amountOutMin), // arg2: amount_out_min
|
|
132
|
+
tx.pure.u64(extraTransferAmount), // arg3: extra_transfer_amount_out_min
|
|
133
|
+
tx.pure.u64(order.deadline * 1000), // arg4: deadline (converted to milliseconds)
|
|
134
|
+
tx.pure.vector('u8', [...secretHash]), // arg5: secret_hash
|
|
135
|
+
tx.object.clock(), // arg6: &Clock
|
|
136
|
+
],
|
|
137
|
+
typeArguments: [SUI_GUARD_COLLATERAL_TYPE, order.tokenIn, SUI_GUARD_STABLECOIN_TYPE],
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
tx.setSender(userAddress);
|
|
141
|
+
|
|
142
|
+
return tx;
|
|
143
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils';
|
|
2
2
|
import { MAX_UINT_64 } from '../../constants.js';
|
|
3
3
|
import { BaseValidator } from '../../utils/base-validator.js';
|
|
4
|
-
import { ValidationError } from '../../errors/index.js';
|
|
5
4
|
|
|
6
5
|
const SUI_TOKEN_ADDRESS_REGEX = /^0x[a-fA-F0-9]{64}::\w+::\w+$/;
|
|
7
6
|
|
|
@@ -36,6 +35,6 @@ export class SuiValidator extends BaseValidator {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
override validateDcaSingleChainOrderFeasability(): Promise<void> {
|
|
39
|
-
|
|
38
|
+
return Promise.resolve();
|
|
40
39
|
}
|
|
41
40
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { DcaSingleChainOrder, type CreateDcaSingleChainOrderParams } from './core/orders/dca-single-chain.js';
|
|
2
|
+
|
|
1
3
|
export { ChainID, ChainType, SupportedChains, isSupportedChain, chainIdToChainTypeMap, isEvmChain } from './chains.js';
|
|
2
4
|
export type { SupportedEvmChain, SupportedChain } from './chains.js';
|
|
3
5
|
|
|
@@ -47,8 +49,61 @@ export {
|
|
|
47
49
|
} from './core/solana/cancel-order.js';
|
|
48
50
|
export { getSuiOrderTransaction } from './core/sui/order-transaction.js';
|
|
49
51
|
export { getSuiCancelCrossChainOrder } from './core/sui/cancel.js';
|
|
52
|
+
export { getDcaSecretHash, getSuiSingleChainDcaOrderTransaction } from './core/sui/single-chain-dca-order.js';
|
|
53
|
+
export { getSecretHash, getRandomU64Number as getSuiRandomU64Number, getSuiSingleChainLimitOrderTransaction } from './core/sui/single-chain-limit-order.js';
|
|
54
|
+
export { generateExecutionDetailsHash } from './core/sui/cross-chain-limit-order.js';
|
|
55
|
+
export {
|
|
56
|
+
createSuiSingleChainLimitOrderIntentRequest,
|
|
57
|
+
createSuiSingleChainDcaOrderIntentRequest,
|
|
58
|
+
createSuiCrossChainOrderIntentRequest,
|
|
59
|
+
generateSuiLimitOrderSecretData,
|
|
60
|
+
generateSuiDcaOrderSecretData,
|
|
61
|
+
type CreateSuiSingleChainLimitOrderIntentParams,
|
|
62
|
+
type CreateSuiSingleChainDcaOrderIntentParams,
|
|
63
|
+
type CreateSuiCrossChainOrderIntentParams,
|
|
64
|
+
} from './core/sui/intent-helpers.js';
|
|
65
|
+
|
|
66
|
+
export * from './constants.js'
|
|
67
|
+
|
|
68
|
+
export { getSolanaDcaSingleChainOrderInstructions } from './core/solana/dca/create-order.js';
|
|
69
|
+
|
|
70
|
+
export { signSingleChainDcaOrder } from './core/evm/single-chain-dca-order.js';
|
|
71
|
+
export { signSingleChainLimitOrder } from './core/evm/single-chain-limit-order.js';
|
|
50
72
|
|
|
51
73
|
export { QuoteProvider } from './utils/quote/aggregator.js';
|
|
52
74
|
export type { QuoteResponse } from './utils/quote/aggregator.js';
|
|
53
75
|
|
|
54
76
|
export { CROSS_CHAIN_GUARD_ADDRESSES, SINGLE_CHAIN_GUARD_ADDRESSES, PERMIT2_ADDRESS } from './constants.js';
|
|
77
|
+
|
|
78
|
+
export { prepareDcaSecretData, } from './core/solana/dca/single-chain-dca-order.js'
|
|
79
|
+
export { prepareSecretData } from './core/solana/dca/single-chain-limit-order.js'
|
|
80
|
+
|
|
81
|
+
// EVM Intent Helpers
|
|
82
|
+
export {
|
|
83
|
+
createEvmSingleChainLimitOrderIntentRequest,
|
|
84
|
+
createEvmSingleChainDcaOrderIntentRequest,
|
|
85
|
+
createEvmCrossChainOrderIntentRequest,
|
|
86
|
+
generateEvmSingleChainLimitOrderTypedData,
|
|
87
|
+
generateEvmSingleChainDcaOrderTypedData,
|
|
88
|
+
generateEvmCrossChainOrderTypedData,
|
|
89
|
+
generateEvmRandomNonce,
|
|
90
|
+
type CreateEvmSingleChainLimitOrderIntentParams,
|
|
91
|
+
type CreateEvmSingleChainDcaOrderIntentParams,
|
|
92
|
+
type CreateEvmCrossChainOrderIntentParams,
|
|
93
|
+
} from './core/evm/intent-helpers.js';
|
|
94
|
+
|
|
95
|
+
// Solana Intent Helpers
|
|
96
|
+
export {
|
|
97
|
+
createSolanaSingleChainLimitOrderIntentRequest,
|
|
98
|
+
createSolanaSingleChainDcaOrderIntentRequest,
|
|
99
|
+
createSolanaCrossChainOrderIntentRequest,
|
|
100
|
+
generateSolanaSingleChainLimitOrderInstructions,
|
|
101
|
+
generateSolanaSingleChainDcaOrderInstructions,
|
|
102
|
+
generateSolanaCrossChainOrderInstructions,
|
|
103
|
+
generateSolanaLimitOrderSecretData,
|
|
104
|
+
generateSolanaDcaOrderSecretData,
|
|
105
|
+
generateSolanaRandomSecretNumber,
|
|
106
|
+
type CreateSolanaSingleChainLimitOrderIntentParams,
|
|
107
|
+
type CreateSolanaSingleChainDcaOrderIntentParams,
|
|
108
|
+
type CreateSolanaCrossChainOrderIntentParams,
|
|
109
|
+
} from './core/solana/intent-helpers.js';
|
package/src/types/intent.ts
CHANGED
|
@@ -35,11 +35,15 @@ export type EvmPreparedData = {
|
|
|
35
35
|
export type SuiPreparedData = {
|
|
36
36
|
/** Transaction hash of the successful order creation transaction */
|
|
37
37
|
transactionHash: string;
|
|
38
|
+
/** Secret number for single-chain orders (optional for cross-chain) */
|
|
39
|
+
secretNumber?: string;
|
|
38
40
|
};
|
|
39
41
|
|
|
40
42
|
export type SolanaPreparedData = {
|
|
41
43
|
/** Public key of the created order account on Solana */
|
|
42
44
|
orderPubkey: string;
|
|
45
|
+
/** Secret number for single-chain orders (optional for cross-chain) */
|
|
46
|
+
secretNumber?: string;
|
|
43
47
|
};
|
|
44
48
|
|
|
45
49
|
/**
|
|
@@ -78,8 +82,9 @@ export type CrossChainUserIntentRequest = {
|
|
|
78
82
|
/** Solana-specific data */
|
|
79
83
|
Solana?: SolanaPreparedData;
|
|
80
84
|
/** Sui-specific data */
|
|
81
|
-
Sui?:
|
|
85
|
+
Sui?: SuiPreparedData;
|
|
82
86
|
};
|
|
87
|
+
|
|
83
88
|
};
|
|
84
89
|
|
|
85
90
|
export type SingleChainUserIntentRequest = {
|
|
@@ -87,7 +92,7 @@ export type SingleChainUserIntentRequest = {
|
|
|
87
92
|
chainSpecificData: {
|
|
88
93
|
EVM?: EvmPreparedData;
|
|
89
94
|
Solana?: SolanaPreparedData;
|
|
90
|
-
Sui?:
|
|
95
|
+
Sui?: SuiPreparedData;
|
|
91
96
|
};
|
|
92
97
|
};
|
|
93
98
|
|
|
@@ -110,6 +115,7 @@ export type SingleChainSolanaPreparedData = {
|
|
|
110
115
|
|
|
111
116
|
export type SingleChainSuiPreparedData = {
|
|
112
117
|
transactionHash: string;
|
|
118
|
+
secretNumber: string;
|
|
113
119
|
};
|
|
114
120
|
|
|
115
121
|
export type SingleChainPreparedData =
|
|
@@ -122,12 +128,17 @@ export type SingleChainOrderPrepared = {
|
|
|
122
128
|
preparedData: SingleChainPreparedData;
|
|
123
129
|
};
|
|
124
130
|
|
|
131
|
+
export type DcaSingleChainSuiPreparedData = {
|
|
132
|
+
transactionHash: string;
|
|
133
|
+
secretNumber: string;
|
|
134
|
+
};
|
|
135
|
+
|
|
125
136
|
export type DcaSingleChainUserIntentRequest = {
|
|
126
137
|
genericData: DcaSingleChainOrder;
|
|
127
138
|
chainSpecificData: {
|
|
128
139
|
EVM?: DcaSingleChainEVMPreparedData;
|
|
129
140
|
Solana?: DcaSingleChainSolanaPreparedData;
|
|
130
|
-
Sui?:
|
|
141
|
+
Sui?: DcaSingleChainSuiPreparedData; // DCA is now supported on Sui
|
|
131
142
|
};
|
|
132
143
|
};
|
|
133
144
|
|
|
@@ -141,7 +152,7 @@ export type DcaSingleChainSolanaPreparedData = {
|
|
|
141
152
|
orderPubkey: string;
|
|
142
153
|
};
|
|
143
154
|
|
|
144
|
-
export type DcaSingleChainPreparedData = DcaSingleChainEVMPreparedData | DcaSingleChainSolanaPreparedData;
|
|
155
|
+
export type DcaSingleChainPreparedData = DcaSingleChainEVMPreparedData | DcaSingleChainSolanaPreparedData | DcaSingleChainSuiPreparedData;
|
|
145
156
|
|
|
146
157
|
export type DcaSingleChainOrderPrepared = {
|
|
147
158
|
order: DcaSingleChainOrder;
|
|
@@ -89,8 +89,8 @@ export class QuoteProvider {
|
|
|
89
89
|
private static async getQuoteFromRouters(params: QuoteParams): Promise<QuoteResponse> {
|
|
90
90
|
const bridgeTokenSymbol = QuoteProvider.DEFAULT_BRIDGE_TOKEN;
|
|
91
91
|
|
|
92
|
-
const sourceBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.sourceChainId]
|
|
93
|
-
const destBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.destChainId]
|
|
92
|
+
const sourceBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.sourceChainId] || '';
|
|
93
|
+
const destBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.destChainId] || '';
|
|
94
94
|
|
|
95
95
|
const sourceSingleChainQuoteParams: SingleChainQuoteParams = {
|
|
96
96
|
chainId: params.sourceChainId,
|