@shogun-sdk/intents-sdk 1.2.1 → 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/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
|
@@ -16,12 +16,16 @@ import type { CrossChainOrder } from '../orders/cross-chain.js';
|
|
|
16
16
|
/**
|
|
17
17
|
* Generates Sui order transaction for creating an order
|
|
18
18
|
* @param order The order to generate transaction for
|
|
19
|
+
* @param client The Sui client instance (optional, creates new if not provided)
|
|
19
20
|
* @returns Object containing the transaction
|
|
20
21
|
*/
|
|
21
|
-
export async function getSuiOrderTransaction(
|
|
22
|
+
export async function getSuiOrderTransaction(
|
|
23
|
+
order: CrossChainOrder,
|
|
24
|
+
client?: ReturnType<typeof createSuiClient>
|
|
25
|
+
): Promise<Transaction> {
|
|
22
26
|
const userAddress = order.user;
|
|
23
|
-
const
|
|
24
|
-
const coins = await
|
|
27
|
+
const suiClient = client || createSuiClient();
|
|
28
|
+
const coins = await suiClient.getCoins({
|
|
25
29
|
owner: userAddress,
|
|
26
30
|
coinType: order.sourceTokenAddress,
|
|
27
31
|
});
|
|
@@ -62,7 +66,7 @@ export async function getSuiOrderTransaction(order: CrossChainOrder): Promise<Tr
|
|
|
62
66
|
|
|
63
67
|
tx.moveCall({
|
|
64
68
|
package: SUI_PACKAGE_ID,
|
|
65
|
-
module: '
|
|
69
|
+
module: 'cross_chain_limit_orders',
|
|
66
70
|
function: 'create_order',
|
|
67
71
|
arguments: [
|
|
68
72
|
tx.object(guardAddress), // arg0: &Guard<T0, T2>
|
package/src/core/sui/sdk.ts
CHANGED
|
@@ -102,7 +102,7 @@ export class SuiSDK extends BaseSDK {
|
|
|
102
102
|
protected override async prepareCrossChainOrder(order: CrossChainOrder): Promise<CrossChainOrderPrepared> {
|
|
103
103
|
const signer = this.getKeyPair();
|
|
104
104
|
|
|
105
|
-
const transaction = await getSuiOrderTransaction(order);
|
|
105
|
+
const transaction = await getSuiOrderTransaction(order, this.client);
|
|
106
106
|
|
|
107
107
|
const tx = await this.client.signAndExecuteTransaction({
|
|
108
108
|
signer,
|
|
@@ -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;
|