@shogun-sdk/intents-sdk 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +616 -55
- package/dist/esm/constants.js +21 -26
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/core/evm/abi/source-chain-guard.js +32 -628
- package/dist/esm/core/evm/abi/source-chain-guard.js.map +1 -1
- package/dist/esm/core/evm/cross-chain-limit-order.js +43 -0
- package/dist/esm/core/evm/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/evm/intent-helpers.js +130 -0
- package/dist/esm/core/evm/intent-helpers.js.map +1 -0
- package/dist/esm/core/evm/single-chain-dca-order.js +49 -0
- package/dist/esm/core/evm/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/evm/single-chain-limit-order.js +45 -0
- package/dist/esm/core/evm/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/evm/types.js +8 -0
- package/dist/esm/core/evm/types.js.map +1 -0
- package/dist/esm/core/orders/common.js +3 -3
- package/dist/esm/core/orders/common.js.map +1 -1
- package/dist/esm/core/orders/cross-chain.js +2 -2
- package/dist/esm/core/orders/cross-chain.js.map +1 -1
- package/dist/esm/core/orders/dca-single-chain.js +4 -1
- package/dist/esm/core/orders/dca-single-chain.js.map +1 -1
- package/dist/esm/core/orders/single-chain.js +8 -1
- package/dist/esm/core/orders/single-chain.js.map +1 -1
- package/dist/esm/core/solana/cancel-order.js.map +1 -1
- package/dist/esm/core/solana/client.js +1 -1
- package/dist/esm/core/solana/client.js.map +1 -1
- package/dist/esm/core/solana/cross-chain-limit-order.js +18 -0
- package/dist/esm/core/solana/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/solana/dca/cancel-order.js.map +1 -1
- package/dist/esm/core/solana/dca/create-order.js.map +1 -1
- package/dist/esm/core/solana/dca/single-chain-dca-order.js +23 -0
- package/dist/esm/core/solana/dca/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/solana/dca/single-chain-limit-order.js +29 -0
- package/dist/esm/core/solana/dca/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js +6 -4
- package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js +90 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js +6 -4
- package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/index.js +1 -0
- package/dist/esm/core/solana/generated/cross-chain/accounts/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/accounts/order.js +3 -3
- package/dist/esm/core/solana/generated/cross-chain/accounts/order.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js +111 -6
- package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js +118 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js +5 -8
- package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js +170 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js +10 -16
- package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js +8 -6
- package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/index.js +2 -0
- package/dist/esm/core/solana/generated/cross-chain/instructions/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js +11 -12
- package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js +4 -4
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js +17 -7
- package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js +8 -9
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js +7 -5
- package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js +28 -16
- package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/shared/index.js +5 -5
- package/dist/esm/core/solana/generated/cross-chain/shared/index.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/adminUpdateStarted.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
- package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js +32 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js +42 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js +26 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js +28 -0
- package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js +26 -0
- package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js.map +1 -0
- package/dist/esm/core/solana/generated/cross-chain/types/index.js +5 -0
- package/dist/esm/core/solana/generated/cross-chain/types/index.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js +6 -4
- package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/guard.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/guard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js +3 -3
- package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js +5 -8
- package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js +8 -9
- package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js +8 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js +9 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js +9 -6
- package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js +9 -10
- package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js +4 -4
- package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js +17 -7
- package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js +2 -2
- package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/shared/index.js +5 -5
- package/dist/esm/core/solana/generated/single-chain/shared/index.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/adminUpdateStarted.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/dcaOrderFulfilled.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/limitOrderCreated.js.map +1 -1
- package/dist/esm/core/solana/generated/single-chain/types/limitOrderFulfilled.js.map +1 -1
- package/dist/esm/core/solana/inspect.js +1 -1
- package/dist/esm/core/solana/intent-helpers.js +177 -0
- package/dist/esm/core/solana/intent-helpers.js.map +1 -0
- package/dist/esm/core/solana/order-instructions.js.map +1 -1
- package/dist/esm/core/solana/sdk.js +4 -1
- package/dist/esm/core/solana/sdk.js.map +1 -1
- package/dist/esm/core/sui/cancel.js +1 -1
- package/dist/esm/core/sui/cancel.js.map +1 -1
- package/dist/esm/core/sui/cross-chain-limit-order.js +26 -0
- package/dist/esm/core/sui/cross-chain-limit-order.js.map +1 -0
- package/dist/esm/core/sui/intent-helpers.js +136 -0
- package/dist/esm/core/sui/intent-helpers.js.map +1 -0
- package/dist/esm/core/sui/order-transaction.js +5 -4
- package/dist/esm/core/sui/order-transaction.js.map +1 -1
- package/dist/esm/core/sui/sdk.js +1 -1
- package/dist/esm/core/sui/sdk.js.map +1 -1
- package/dist/esm/core/sui/single-chain-dca-order.js +99 -0
- package/dist/esm/core/sui/single-chain-dca-order.js.map +1 -0
- package/dist/esm/core/sui/single-chain-limit-order.js +103 -0
- package/dist/esm/core/sui/single-chain-limit-order.js.map +1 -0
- package/dist/esm/core/sui/validator.js +1 -2
- package/dist/esm/core/sui/validator.js.map +1 -1
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/constants.d.ts +3 -4
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/core/evm/abi/source-chain-guard.d.ts +18 -484
- package/dist/types/core/evm/abi/source-chain-guard.d.ts.map +1 -1
- package/dist/types/core/evm/cross-chain-limit-order.d.ts +22 -0
- package/dist/types/core/evm/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/evm/intent-helpers.d.ts +105 -0
- package/dist/types/core/evm/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/evm/single-chain-dca-order.d.ts +26 -0
- package/dist/types/core/evm/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/evm/single-chain-limit-order.d.ts +23 -0
- package/dist/types/core/evm/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/evm/types.d.ts +8 -0
- package/dist/types/core/evm/types.d.ts.map +1 -0
- package/dist/types/core/orders/common.d.ts +2 -2
- package/dist/types/core/orders/common.d.ts.map +1 -1
- package/dist/types/core/orders/cross-chain.d.ts +1 -1
- package/dist/types/core/orders/cross-chain.d.ts.map +1 -1
- package/dist/types/core/orders/dca-single-chain.d.ts.map +1 -1
- package/dist/types/core/orders/single-chain.d.ts +1 -0
- package/dist/types/core/orders/single-chain.d.ts.map +1 -1
- package/dist/types/core/solana/cancel-order.d.ts +3 -3
- package/dist/types/core/solana/cancel-order.d.ts.map +1 -1
- package/dist/types/core/solana/cross-chain-limit-order.d.ts +9 -0
- package/dist/types/core/solana/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/solana/dca/cancel-order.d.ts +2 -2
- package/dist/types/core/solana/dca/cancel-order.d.ts.map +1 -1
- package/dist/types/core/solana/dca/single-chain-dca-order.d.ts +14 -0
- package/dist/types/core/solana/dca/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/solana/dca/single-chain-limit-order.d.ts +19 -0
- package/dist/types/core/solana/dca/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts +6 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts +110 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts +10 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts +1 -0
- package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts +6 -6
- package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts +76 -6
- package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts +124 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts +15 -15
- package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts +130 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts +16 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts +2 -0
- package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts +12 -12
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts +11 -11
- package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts +25 -18
- package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts +5 -5
- package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts +28 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts +38 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts +18 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts +24 -0
- package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts +18 -0
- package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts.map +1 -0
- package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/index.d.ts +5 -0
- package/dist/types/core/solana/generated/cross-chain/types/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts +4 -4
- package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts +6 -6
- package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts +3 -3
- package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts +6 -6
- package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts +3 -3
- package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts +2 -2
- package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts +9 -9
- package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts +9 -9
- package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts +12 -12
- package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
- package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts +2 -2
- package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/shared/index.d.ts +5 -5
- package/dist/types/core/solana/generated/single-chain/shared/index.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts.map +1 -1
- package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts +4 -4
- package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts.map +1 -1
- package/dist/types/core/solana/intent-helpers.d.ts +120 -0
- package/dist/types/core/solana/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/solana/sdk.d.ts.map +1 -1
- package/dist/types/core/sui/cross-chain-limit-order.d.ts +14 -0
- package/dist/types/core/sui/cross-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/sui/intent-helpers.d.ts +89 -0
- package/dist/types/core/sui/intent-helpers.d.ts.map +1 -0
- package/dist/types/core/sui/order-transaction.d.ts +3 -1
- package/dist/types/core/sui/order-transaction.d.ts.map +1 -1
- package/dist/types/core/sui/single-chain-dca-order.d.ts +22 -0
- package/dist/types/core/sui/single-chain-dca-order.d.ts.map +1 -0
- package/dist/types/core/sui/single-chain-limit-order.d.ts +26 -0
- package/dist/types/core/sui/single-chain-limit-order.d.ts.map +1 -0
- package/dist/types/core/sui/validator.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/intent.d.ts +13 -4
- package/dist/types/types/intent.d.ts.map +1 -1
- package/package.json +19 -9
- package/src/constants.ts +17 -23
- package/src/core/evm/abi/source-chain-guard.ts +32 -628
- package/src/core/evm/cross-chain-limit-order.ts +76 -0
- package/src/core/evm/intent-helpers.ts +204 -0
- package/src/core/evm/single-chain-dca-order.ts +85 -0
- package/src/core/evm/single-chain-limit-order.ts +78 -0
- package/src/core/evm/types.ts +15 -0
- package/src/core/orders/common.ts +4 -4
- package/src/core/orders/cross-chain.ts +2 -2
- package/src/core/orders/dca-single-chain.ts +4 -1
- package/src/core/orders/single-chain.ts +10 -1
- package/src/core/solana/cancel-order.ts +5 -5
- package/src/core/solana/client.ts +1 -1
- package/src/core/solana/cross-chain-limit-order.ts +24 -0
- package/src/core/solana/dca/cancel-order.ts +3 -3
- package/src/core/solana/dca/create-order.ts +2 -2
- package/src/core/solana/dca/single-chain-dca-order.ts +32 -0
- package/src/core/solana/dca/single-chain-limit-order.ts +45 -0
- package/src/core/solana/generated/cross-chain/accounts/adminSingleton.ts +20 -18
- package/src/core/solana/generated/cross-chain/accounts/dcaOrder.ts +248 -0
- package/src/core/solana/generated/cross-chain/accounts/guard.ts +24 -18
- package/src/core/solana/generated/cross-chain/accounts/index.ts +1 -0
- package/src/core/solana/generated/cross-chain/accounts/order.ts +17 -17
- package/src/core/solana/generated/cross-chain/errors/sourceChainGuard.ts +154 -9
- package/src/core/solana/generated/cross-chain/instructions/acceptAdmin.ts +44 -34
- package/src/core/solana/generated/cross-chain/instructions/cancelDcaOrder.ts +409 -0
- package/src/core/solana/generated/cross-chain/instructions/cancelOrder.ts +49 -41
- package/src/core/solana/generated/cross-chain/instructions/claimTokens.ts +54 -44
- package/src/core/solana/generated/cross-chain/instructions/collectProtocolFees.ts +52 -43
- package/src/core/solana/generated/cross-chain/instructions/createDcaOrder.ts +496 -0
- package/src/core/solana/generated/cross-chain/instructions/createGuard.ts +72 -54
- package/src/core/solana/generated/cross-chain/instructions/createOrder.ts +60 -42
- package/src/core/solana/generated/cross-chain/instructions/index.ts +2 -0
- package/src/core/solana/generated/cross-chain/instructions/initialize.ts +60 -42
- package/src/core/solana/generated/cross-chain/instructions/preStartOrderExecution.ts +55 -45
- package/src/core/solana/generated/cross-chain/instructions/setAdmin.ts +48 -30
- package/src/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.ts +88 -40
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecution.ts +48 -39
- package/src/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.ts +45 -37
- package/src/core/solana/generated/cross-chain/programs/sourceChainGuard.ts +118 -37
- package/src/core/solana/generated/cross-chain/shared/index.ts +23 -14
- package/src/core/solana/generated/cross-chain/types/adminUpdateStarted.ts +9 -6
- package/src/core/solana/generated/cross-chain/types/adminUpdated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.ts +9 -6
- package/src/core/solana/generated/cross-chain/types/dcaExecutionStarted.ts +70 -0
- package/src/core/solana/generated/cross-chain/types/dcaOrderCreated.ts +92 -0
- package/src/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.ts +52 -0
- package/src/core/solana/generated/cross-chain/types/dcaTokenInSwapped.ts +62 -0
- package/src/core/solana/generated/cross-chain/types/executionStarted.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.ts +55 -0
- package/src/core/solana/generated/cross-chain/types/guardCreated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/index.ts +5 -0
- package/src/core/solana/generated/cross-chain/types/orderCancelled.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/orderCreated.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/orderFulfilled.ts +6 -6
- package/src/core/solana/generated/cross-chain/types/tokenInSwapped.ts +6 -6
- package/src/core/solana/generated/single-chain/accounts/adminSingleton.ts +20 -18
- package/src/core/solana/generated/single-chain/accounts/dcaOrder.ts +11 -11
- package/src/core/solana/generated/single-chain/accounts/guard.ts +17 -17
- package/src/core/solana/generated/single-chain/accounts/limitOrder.ts +11 -11
- package/src/core/solana/generated/single-chain/errors/singleChainGuard.ts +10 -5
- package/src/core/solana/generated/single-chain/instructions/acceptAdmin.ts +44 -34
- package/src/core/solana/generated/single-chain/instructions/cancelDcaOrder.ts +54 -40
- package/src/core/solana/generated/single-chain/instructions/cancelLimitOrder.ts +51 -40
- package/src/core/solana/generated/single-chain/instructions/collectProtocolFees.ts +55 -42
- package/src/core/solana/generated/single-chain/instructions/createDcaOrder.ts +60 -38
- package/src/core/solana/generated/single-chain/instructions/createGuard.ts +69 -42
- package/src/core/solana/generated/single-chain/instructions/createLimitOrder.ts +57 -38
- package/src/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.ts +78 -55
- package/src/core/solana/generated/single-chain/instructions/fulfillLimitOrder.ts +81 -55
- package/src/core/solana/generated/single-chain/instructions/initialize.ts +58 -40
- package/src/core/solana/generated/single-chain/instructions/setAdmin.ts +48 -30
- package/src/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.ts +88 -40
- package/src/core/solana/generated/single-chain/programs/singleChainGuard.ts +76 -37
- package/src/core/solana/generated/single-chain/shared/index.ts +23 -14
- package/src/core/solana/generated/single-chain/types/adminUpdateStarted.ts +9 -6
- package/src/core/solana/generated/single-chain/types/adminUpdated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.ts +9 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderCreated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/guardCreated.ts +6 -6
- package/src/core/solana/generated/single-chain/types/limitOrderCreated.ts +9 -6
- package/src/core/solana/generated/single-chain/types/limitOrderFulfilled.ts +9 -6
- package/src/core/solana/generated/single-chain/types/orderCancelled.ts +6 -6
- package/src/core/solana/inspect.ts +1 -1
- package/src/core/solana/intent-helpers.ts +273 -0
- package/src/core/solana/order-instructions.ts +3 -3
- package/src/core/solana/sdk.ts +13 -4
- package/src/core/sui/cancel.ts +1 -1
- package/src/core/sui/cross-chain-limit-order.ts +34 -0
- package/src/core/sui/intent-helpers.ts +235 -0
- package/src/core/sui/order-transaction.ts +8 -4
- package/src/core/sui/sdk.ts +1 -1
- package/src/core/sui/single-chain-dca-order.ts +139 -0
- package/src/core/sui/single-chain-limit-order.ts +143 -0
- package/src/core/sui/validator.ts +1 -2
- package/src/index.ts +55 -0
- package/src/types/intent.ts +15 -4
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ethers, type TypedDataField, type AddressLike, type BigNumberish } from "ethers";
|
|
2
|
+
import { SignatureTransfer } from "@uniswap/permit2-sdk";
|
|
3
|
+
|
|
4
|
+
export const OrderInfoType: Record<string, TypedDataField[]> = {
|
|
5
|
+
OrderInfo: [
|
|
6
|
+
{ name: "user", type: "address" },
|
|
7
|
+
{ name: "tokenIn", type: "address" },
|
|
8
|
+
{ name: "srcChainId", type: "uint32" },
|
|
9
|
+
{ name: "deadline", type: "uint32" },
|
|
10
|
+
{ name: "amountIn", type: "uint128" },
|
|
11
|
+
{ name: "minStablecoinsAmount", type: "uint128" },
|
|
12
|
+
{ name: "executionDetailsHash", type: "bytes32" },
|
|
13
|
+
{ name: "nonce", type: "uint256" },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type OrderInfoStruct = {
|
|
18
|
+
user: AddressLike;
|
|
19
|
+
tokenIn: AddressLike;
|
|
20
|
+
srcChainId: BigNumberish;
|
|
21
|
+
deadline: BigNumberish;
|
|
22
|
+
amountIn: BigNumberish;
|
|
23
|
+
minStablecoinsAmount: BigNumberish;
|
|
24
|
+
executionDetailsHash: string;
|
|
25
|
+
nonce: BigNumberish;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Signs Permit2 struct with OrderInfo
|
|
30
|
+
*/
|
|
31
|
+
export async function signCrossChainLimitOrder(
|
|
32
|
+
signer: ethers.Wallet,
|
|
33
|
+
orderInfo: OrderInfoStruct,
|
|
34
|
+
chainId: number,
|
|
35
|
+
guardAddress: string,
|
|
36
|
+
permit2Address: string
|
|
37
|
+
): Promise<{
|
|
38
|
+
domain: any;
|
|
39
|
+
types: any;
|
|
40
|
+
values: any;
|
|
41
|
+
signature: string;
|
|
42
|
+
}> {
|
|
43
|
+
const permitData = SignatureTransfer.getPermitData(
|
|
44
|
+
{
|
|
45
|
+
permitted: {
|
|
46
|
+
token: orderInfo.tokenIn.toString(),
|
|
47
|
+
amount: orderInfo.amountIn,
|
|
48
|
+
},
|
|
49
|
+
spender: guardAddress,
|
|
50
|
+
nonce: orderInfo.nonce,
|
|
51
|
+
deadline: orderInfo.deadline,
|
|
52
|
+
},
|
|
53
|
+
permit2Address,
|
|
54
|
+
chainId,
|
|
55
|
+
{
|
|
56
|
+
witness: orderInfo,
|
|
57
|
+
witnessTypeName: "OrderInfo",
|
|
58
|
+
witnessType: OrderInfoType,
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
domain: permitData.domain,
|
|
64
|
+
types: permitData.types,
|
|
65
|
+
values: permitData.values,
|
|
66
|
+
signature: await signer.signTypedData(
|
|
67
|
+
{
|
|
68
|
+
name: permitData.domain.name,
|
|
69
|
+
chainId: Number(permitData.domain.chainId),
|
|
70
|
+
verifyingContract: permitData.domain.verifyingContract,
|
|
71
|
+
},
|
|
72
|
+
permitData.types,
|
|
73
|
+
permitData.values
|
|
74
|
+
),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type { SupportedEvmChain } from '../../chains.js';
|
|
2
|
+
import type { SingleChainUserIntentRequest, CrossChainUserIntentRequest, DcaSingleChainUserIntentRequest } from '../../types/intent.js';
|
|
3
|
+
import type { SingleChainOrder } from '../orders/single-chain.js';
|
|
4
|
+
import type { CrossChainOrder } from '../orders/cross-chain.js';
|
|
5
|
+
import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
|
|
6
|
+
import type { ExtraTransfer } from '../orders/common.js';
|
|
7
|
+
import { getEVMCrossChainOrderTypedData, getEVMSingleChainOrderTypedData, getEVMDcaSingleChainOrderTypedData } from './order-signature.js';
|
|
8
|
+
|
|
9
|
+
export type CreateEvmSingleChainLimitOrderIntentParams = {
|
|
10
|
+
user: `0x${string}`;
|
|
11
|
+
chainId: SupportedEvmChain;
|
|
12
|
+
tokenIn: string;
|
|
13
|
+
tokenOut: string;
|
|
14
|
+
amountIn: bigint;
|
|
15
|
+
amountOutMin: bigint;
|
|
16
|
+
destinationAddress: string;
|
|
17
|
+
extraTransfers?: ExtraTransfer[];
|
|
18
|
+
deadline: number;
|
|
19
|
+
nonce?: string;
|
|
20
|
+
signature?: string;
|
|
21
|
+
stopLossMaxOut?: bigint;
|
|
22
|
+
takeProfitMinOut?: bigint;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type CreateEvmSingleChainDcaOrderIntentParams = {
|
|
26
|
+
user: `0x${string}`;
|
|
27
|
+
chainId: SupportedEvmChain;
|
|
28
|
+
tokenIn: string;
|
|
29
|
+
tokenOut: string;
|
|
30
|
+
amountInPerInterval: bigint;
|
|
31
|
+
totalIntervals: number;
|
|
32
|
+
intervalDuration: number;
|
|
33
|
+
amountOutMin: bigint;
|
|
34
|
+
destinationAddress: string;
|
|
35
|
+
extraTransfers?: ExtraTransfer[];
|
|
36
|
+
deadline: number;
|
|
37
|
+
startTime: number;
|
|
38
|
+
nonce?: string;
|
|
39
|
+
signature?: string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type CreateEvmCrossChainOrderIntentParams = {
|
|
43
|
+
user: `0x${string}`;
|
|
44
|
+
sourceChainId: SupportedEvmChain;
|
|
45
|
+
sourceTokenAddress: string;
|
|
46
|
+
sourceTokenAmount: bigint;
|
|
47
|
+
destinationChainId: number;
|
|
48
|
+
destinationTokenAddress: string;
|
|
49
|
+
destinationTokenMinAmount?: bigint;
|
|
50
|
+
destinationAddress: string;
|
|
51
|
+
minStablecoinAmount?: bigint;
|
|
52
|
+
deadline: number;
|
|
53
|
+
extraTransfers?: ExtraTransfer[];
|
|
54
|
+
nonce?: string;
|
|
55
|
+
signature?: string;
|
|
56
|
+
stopLossMaxOut?: bigint;
|
|
57
|
+
takeProfitMinOut?: bigint;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates an EVM single-chain limit order intent request
|
|
62
|
+
* @param params Parameters for creating the intent request
|
|
63
|
+
* @returns Formatted intent request ready to send to auctioneer
|
|
64
|
+
*/
|
|
65
|
+
export function createEvmSingleChainLimitOrderIntentRequest(
|
|
66
|
+
params: CreateEvmSingleChainLimitOrderIntentParams
|
|
67
|
+
): SingleChainUserIntentRequest {
|
|
68
|
+
const order: SingleChainOrder = {
|
|
69
|
+
user: params.user,
|
|
70
|
+
chainId: params.chainId,
|
|
71
|
+
amountIn: params.amountIn,
|
|
72
|
+
tokenIn: params.tokenIn,
|
|
73
|
+
tokenOut: params.tokenOut,
|
|
74
|
+
amountOutMin: params.amountOutMin,
|
|
75
|
+
destinationAddress: params.destinationAddress,
|
|
76
|
+
extraTransfers: params.extraTransfers,
|
|
77
|
+
deadline: params.deadline,
|
|
78
|
+
stopLossMaxOut: params.stopLossMaxOut,
|
|
79
|
+
takeProfitMinOut: params.takeProfitMinOut,
|
|
80
|
+
} as SingleChainOrder;
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
genericData: order,
|
|
84
|
+
chainSpecificData: {
|
|
85
|
+
EVM: {
|
|
86
|
+
nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
|
|
87
|
+
signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Creates an EVM single-chain DCA order intent request
|
|
95
|
+
* @param params Parameters for creating the intent request
|
|
96
|
+
* @returns Formatted intent request ready to send to auctioneer
|
|
97
|
+
*/
|
|
98
|
+
export function createEvmSingleChainDcaOrderIntentRequest(
|
|
99
|
+
params: CreateEvmSingleChainDcaOrderIntentParams
|
|
100
|
+
): DcaSingleChainUserIntentRequest {
|
|
101
|
+
const order: DcaSingleChainOrder = {
|
|
102
|
+
user: params.user,
|
|
103
|
+
chainId: params.chainId,
|
|
104
|
+
tokenIn: params.tokenIn,
|
|
105
|
+
tokenOut: params.tokenOut,
|
|
106
|
+
destinationAddress: params.destinationAddress,
|
|
107
|
+
startTime: params.startTime,
|
|
108
|
+
amountInPerInterval: params.amountInPerInterval,
|
|
109
|
+
totalIntervals: params.totalIntervals,
|
|
110
|
+
intervalDuration: params.intervalDuration,
|
|
111
|
+
amountOutMin: params.amountOutMin,
|
|
112
|
+
extraTransfers: params.extraTransfers,
|
|
113
|
+
deadline: params.deadline,
|
|
114
|
+
} as DcaSingleChainOrder;
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
genericData: order,
|
|
118
|
+
chainSpecificData: {
|
|
119
|
+
EVM: {
|
|
120
|
+
nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
|
|
121
|
+
signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Creates an EVM cross-chain order intent request
|
|
129
|
+
* @param params Parameters for creating the intent request
|
|
130
|
+
* @returns Formatted intent request ready to send to auctioneer
|
|
131
|
+
*/
|
|
132
|
+
export function createEvmCrossChainOrderIntentRequest(
|
|
133
|
+
params: CreateEvmCrossChainOrderIntentParams
|
|
134
|
+
): CrossChainUserIntentRequest {
|
|
135
|
+
const executionDetails = JSON.stringify({
|
|
136
|
+
destChainId: params.destinationChainId,
|
|
137
|
+
tokenOut: params.destinationTokenAddress,
|
|
138
|
+
amountOutMin: params.destinationTokenMinAmount || 1n,
|
|
139
|
+
destinationAddress: params.destinationAddress,
|
|
140
|
+
extraTransfers: params.extraTransfers,
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Calculate execution details hash
|
|
144
|
+
const executionDetailsHash = `0x${require('crypto').createHash('sha256').update(executionDetails).digest('hex')}` as `0x${string}`;
|
|
145
|
+
|
|
146
|
+
const genericData = {
|
|
147
|
+
user: params.user,
|
|
148
|
+
srcChainId: params.sourceChainId,
|
|
149
|
+
tokenIn: params.sourceTokenAddress,
|
|
150
|
+
amountIn: params.sourceTokenAmount,
|
|
151
|
+
minStablecoinsAmount: params.minStablecoinAmount || 1n,
|
|
152
|
+
deadline: params.deadline,
|
|
153
|
+
executionDetailsHash,
|
|
154
|
+
extraTransfers: params.extraTransfers,
|
|
155
|
+
stopLossMaxOut: params.stopLossMaxOut,
|
|
156
|
+
takeProfitMinOut: params.takeProfitMinOut,
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
return {
|
|
160
|
+
genericData,
|
|
161
|
+
executionDetails,
|
|
162
|
+
chainSpecificData: {
|
|
163
|
+
EVM: {
|
|
164
|
+
nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
|
|
165
|
+
signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Generates EVM typed data and nonce for single-chain limit orders
|
|
173
|
+
* @param order The single-chain order
|
|
174
|
+
* @returns Object containing typed data and nonce for signing
|
|
175
|
+
*/
|
|
176
|
+
export async function generateEvmSingleChainLimitOrderTypedData(order: SingleChainOrder) {
|
|
177
|
+
return getEVMSingleChainOrderTypedData(order);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Generates EVM typed data and nonce for single-chain DCA orders
|
|
182
|
+
* @param order The DCA order
|
|
183
|
+
* @returns Object containing typed data and nonce for signing
|
|
184
|
+
*/
|
|
185
|
+
export async function generateEvmSingleChainDcaOrderTypedData(order: DcaSingleChainOrder) {
|
|
186
|
+
return getEVMDcaSingleChainOrderTypedData(order);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Generates EVM typed data and nonce for cross-chain orders
|
|
191
|
+
* @param order The cross-chain order
|
|
192
|
+
* @returns Object containing typed data and nonce for signing
|
|
193
|
+
*/
|
|
194
|
+
export async function generateEvmCrossChainOrderTypedData(order: CrossChainOrder) {
|
|
195
|
+
return getEVMCrossChainOrderTypedData(order);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Generates a random nonce for EVM orders
|
|
200
|
+
* @returns Random nonce as string
|
|
201
|
+
*/
|
|
202
|
+
export function generateEvmRandomNonce(): string {
|
|
203
|
+
return String(Math.floor(Math.random() * 10000000));
|
|
204
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
|
|
2
|
+
import { SignatureTransfer } from "@uniswap/permit2-sdk";
|
|
3
|
+
import { TransferDataType, type TransferDataStruct } from "./types.js";
|
|
4
|
+
|
|
5
|
+
export const SingleChainDcaOrderType: Record<string, TypedDataField[]> = {
|
|
6
|
+
SingleChainDcaOrder: [
|
|
7
|
+
{ type: "address", name: "user" },
|
|
8
|
+
{ type: "address", name: "tokenIn" },
|
|
9
|
+
{ type: "uint32", name: "startTime" },
|
|
10
|
+
{ type: "uint256", name: "amountInPerInterval" },
|
|
11
|
+
{ type: "uint24", name: "totalIntervals" },
|
|
12
|
+
{ type: "uint32", name: "intervalDuration" },
|
|
13
|
+
{ type: "TransferData", name: "requestedOutput" },
|
|
14
|
+
{ type: "TransferData[]", name: "extraTransfers" },
|
|
15
|
+
{ type: "bytes", name: "encodedExternalCallData" },
|
|
16
|
+
{ type: "uint32", name: "deadline" },
|
|
17
|
+
{ type: "uint256", name: "nonce" },
|
|
18
|
+
],
|
|
19
|
+
TransferData: TransferDataType.TransferData!,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type SingleChainDcaOrderStruct = {
|
|
23
|
+
user: AddressLike;
|
|
24
|
+
tokenIn: AddressLike;
|
|
25
|
+
startTime: BigNumberish;
|
|
26
|
+
amountInPerInterval: BigNumberish;
|
|
27
|
+
totalIntervals: BigNumberish;
|
|
28
|
+
intervalDuration: BigNumberish;
|
|
29
|
+
requestedOutput: TransferDataStruct;
|
|
30
|
+
extraTransfers: TransferDataStruct[];
|
|
31
|
+
encodedExternalCallData: BytesLike;
|
|
32
|
+
deadline: BigNumberish;
|
|
33
|
+
nonce: BigNumberish;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Signs Permit2 struct with SingleChainDcaOrder
|
|
38
|
+
*/
|
|
39
|
+
export async function signSingleChainDcaOrder(
|
|
40
|
+
signer: ethers.Wallet,
|
|
41
|
+
order: SingleChainDcaOrderStruct,
|
|
42
|
+
chainId: number,
|
|
43
|
+
guardAddress: string,
|
|
44
|
+
permit2Address: string
|
|
45
|
+
): Promise<{
|
|
46
|
+
domain: any;
|
|
47
|
+
types: any;
|
|
48
|
+
values: any;
|
|
49
|
+
signature: string;
|
|
50
|
+
}> {
|
|
51
|
+
const amountIn = BigInt(order.totalIntervals) * BigInt(order.amountInPerInterval);
|
|
52
|
+
const permitData = SignatureTransfer.getPermitData(
|
|
53
|
+
{
|
|
54
|
+
permitted: {
|
|
55
|
+
token: order.tokenIn.toString(),
|
|
56
|
+
amount: amountIn,
|
|
57
|
+
},
|
|
58
|
+
spender: guardAddress,
|
|
59
|
+
nonce: order.nonce,
|
|
60
|
+
deadline: order.deadline,
|
|
61
|
+
},
|
|
62
|
+
permit2Address,
|
|
63
|
+
chainId,
|
|
64
|
+
{
|
|
65
|
+
witness: order,
|
|
66
|
+
witnessTypeName: "SingleChainDcaOrder",
|
|
67
|
+
witnessType: SingleChainDcaOrderType,
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
domain: permitData.domain,
|
|
73
|
+
types: permitData.types,
|
|
74
|
+
values: permitData.values,
|
|
75
|
+
signature: await signer.signTypedData(
|
|
76
|
+
{
|
|
77
|
+
name: permitData.domain.name,
|
|
78
|
+
chainId: Number(permitData.domain.chainId),
|
|
79
|
+
verifyingContract: permitData.domain.verifyingContract,
|
|
80
|
+
},
|
|
81
|
+
permitData.types,
|
|
82
|
+
permitData.values
|
|
83
|
+
),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
|
|
2
|
+
import { SignatureTransfer } from "@uniswap/permit2-sdk";
|
|
3
|
+
import { TransferDataType, type TransferDataStruct } from "./types.js";
|
|
4
|
+
|
|
5
|
+
export const SingleChainLimitOrderType: Record<string, TypedDataField[]> = {
|
|
6
|
+
SingleChainLimitOrder: [
|
|
7
|
+
{ type: "address", name: "user" },
|
|
8
|
+
{ type: "address", name: "tokenIn" },
|
|
9
|
+
{ type: "uint256", name: "amountIn" },
|
|
10
|
+
{ type: "TransferData", name: "requestedOutput" },
|
|
11
|
+
{ type: "TransferData[]", name: "extraTransfers" },
|
|
12
|
+
{ type: "bytes", name: "encodedExternalCallData" },
|
|
13
|
+
{ type: "uint32", name: "deadline" },
|
|
14
|
+
{ type: "uint256", name: "nonce" },
|
|
15
|
+
],
|
|
16
|
+
TransferData: TransferDataType.TransferData!,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type SingleChainLimitOrderStruct = {
|
|
20
|
+
user: AddressLike;
|
|
21
|
+
tokenIn: AddressLike;
|
|
22
|
+
amountIn: BigNumberish;
|
|
23
|
+
requestedOutput: TransferDataStruct;
|
|
24
|
+
extraTransfers: TransferDataStruct[];
|
|
25
|
+
encodedExternalCallData: BytesLike;
|
|
26
|
+
deadline: BigNumberish;
|
|
27
|
+
nonce: BigNumberish;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Signs Permit2 struct with SingleChainLimitOrder
|
|
32
|
+
*/
|
|
33
|
+
export async function signSingleChainLimitOrder(
|
|
34
|
+
signer: ethers.Wallet,
|
|
35
|
+
order: SingleChainLimitOrderStruct,
|
|
36
|
+
chainId: number,
|
|
37
|
+
guardAddress: string,
|
|
38
|
+
permit2Address: string
|
|
39
|
+
): Promise<{
|
|
40
|
+
domain: any;
|
|
41
|
+
types: any;
|
|
42
|
+
values: any;
|
|
43
|
+
signature: string;
|
|
44
|
+
}> {
|
|
45
|
+
const permitData = SignatureTransfer.getPermitData(
|
|
46
|
+
{
|
|
47
|
+
permitted: {
|
|
48
|
+
token: order.tokenIn.toString(),
|
|
49
|
+
amount: order.amountIn,
|
|
50
|
+
},
|
|
51
|
+
spender: guardAddress,
|
|
52
|
+
nonce: order.nonce,
|
|
53
|
+
deadline: order.deadline,
|
|
54
|
+
},
|
|
55
|
+
permit2Address,
|
|
56
|
+
chainId,
|
|
57
|
+
{
|
|
58
|
+
witness: order,
|
|
59
|
+
witnessTypeName: "SingleChainLimitOrder",
|
|
60
|
+
witnessType: SingleChainLimitOrderType,
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
domain: permitData.domain,
|
|
66
|
+
types: permitData.types,
|
|
67
|
+
values: permitData.values,
|
|
68
|
+
signature: await signer.signTypedData(
|
|
69
|
+
{
|
|
70
|
+
name: permitData.domain.name,
|
|
71
|
+
chainId: Number(permitData.domain.chainId),
|
|
72
|
+
verifyingContract: permitData.domain.verifyingContract,
|
|
73
|
+
},
|
|
74
|
+
permitData.types,
|
|
75
|
+
permitData.values
|
|
76
|
+
),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AddressLike, BigNumberish, TypedDataField } from "ethers";
|
|
2
|
+
|
|
3
|
+
export const TransferDataType: Record<string, TypedDataField[]> = {
|
|
4
|
+
TransferData: [
|
|
5
|
+
{ type: "address", name: "token" },
|
|
6
|
+
{ type: "address", name: "receiver" },
|
|
7
|
+
{ type: "uint256", name: "amount" },
|
|
8
|
+
],
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type TransferDataStruct = {
|
|
12
|
+
token: AddressLike;
|
|
13
|
+
receiver: AddressLike;
|
|
14
|
+
amount: BigNumberish;
|
|
15
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IntentsOrderType } from '../../constants.js';
|
|
2
2
|
import type { CrossChainOrderPrepared, SingleChainOrderPrepared } from '../../types/intent.js';
|
|
3
3
|
|
|
4
4
|
export type ExtraTransfer = {
|
|
@@ -10,10 +10,10 @@ export type ExtraTransfer = {
|
|
|
10
10
|
amount: bigint;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export function getOrderType(order: SingleChainOrderPrepared | CrossChainOrderPrepared):
|
|
13
|
+
export function getOrderType(order: SingleChainOrderPrepared | CrossChainOrderPrepared): IntentsOrderType {
|
|
14
14
|
if ('tokenIn' in order.order) {
|
|
15
|
-
return
|
|
15
|
+
return IntentsOrderType.SINGLE_CHAIN_LIMIT;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
return
|
|
18
|
+
return IntentsOrderType.CROSS_CHAIN_LIMIT;
|
|
19
19
|
}
|
|
@@ -317,11 +317,11 @@ export class CrossChainOrder {
|
|
|
317
317
|
return getSolanaCrossChainOrderInstructions(this);
|
|
318
318
|
}
|
|
319
319
|
|
|
320
|
-
public async toSuiTransaction() {
|
|
320
|
+
public async toSuiTransaction(client?: any) {
|
|
321
321
|
if (this.sourceChainId !== ChainID.Sui) {
|
|
322
322
|
throw new ValidationError('Source chain is not Sui');
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
return getSuiOrderTransaction(this);
|
|
325
|
+
return getSuiOrderTransaction(this, client);
|
|
326
326
|
}
|
|
327
327
|
}
|
|
@@ -94,7 +94,10 @@ export class DcaSingleChainOrder {
|
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
96
|
case 'Sui': {
|
|
97
|
-
|
|
97
|
+
return {
|
|
98
|
+
secretNumber: randomNumber,
|
|
99
|
+
transactionHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
100
|
+
};
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
default: {
|
|
@@ -94,7 +94,7 @@ export class SingleChainOrder {
|
|
|
94
94
|
}
|
|
95
95
|
case 'Sui': {
|
|
96
96
|
const digest = 'FQWndwYJhNQUoHyvR8UuhGURC2EKx9eWErFm9Tc2DggF';
|
|
97
|
-
return { transactionHash: digest };
|
|
97
|
+
return { transactionHash: digest, secretNumber: randomNumber };
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
default: {
|
|
@@ -178,4 +178,13 @@ export class SingleChainOrder {
|
|
|
178
178
|
|
|
179
179
|
return getSolanaSingleChainOrderInstructions(this);
|
|
180
180
|
}
|
|
181
|
+
|
|
182
|
+
public async toSuiTransaction(secretHash: Uint8Array, guardAddress: string, client?: any) {
|
|
183
|
+
if (this.chainId !== ChainID.Sui) {
|
|
184
|
+
throw new ValidationError('Chain id is not Sui');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const { getSuiSingleChainLimitOrderTransaction } = await import('../sui/single-chain-limit-order.js');
|
|
188
|
+
return getSuiSingleChainLimitOrderTransaction(this, secretHash, guardAddress, client);
|
|
189
|
+
}
|
|
181
190
|
}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
setTransactionMessageFeePayerSigner,
|
|
14
14
|
setTransactionMessageLifetimeUsingBlockhash,
|
|
15
15
|
type Address,
|
|
16
|
-
type
|
|
16
|
+
type Instruction,
|
|
17
17
|
type ReadonlyUint8Array,
|
|
18
18
|
type TransactionMessageBytes,
|
|
19
19
|
} from '@solana/kit';
|
|
@@ -31,7 +31,7 @@ import { fetchMaybeOrder, getCancelOrderInstruction } from './generated/cross-ch
|
|
|
31
31
|
export async function cancelSingleChainOrderInstructions(
|
|
32
32
|
orderAddress: string,
|
|
33
33
|
options?: { rpcUrl?: string },
|
|
34
|
-
): Promise<
|
|
34
|
+
): Promise<Instruction[]> {
|
|
35
35
|
const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
|
|
36
36
|
|
|
37
37
|
const orderId = address(orderAddress);
|
|
@@ -41,7 +41,7 @@ export async function cancelSingleChainOrderInstructions(
|
|
|
41
41
|
throw new Error(`Order with address ${orderAddress} not found`);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
const instructions:
|
|
44
|
+
const instructions: Instruction[] = [];
|
|
45
45
|
const orderUserAddress = chainOrder.data.user;
|
|
46
46
|
|
|
47
47
|
const tokenInMint = chainOrder.data.tokenInMint;
|
|
@@ -149,7 +149,7 @@ export async function cancelSingleChainOrderInstructionsAsBytes(
|
|
|
149
149
|
export async function cancelCrossChainOrderInstructions(
|
|
150
150
|
orderAddress: string,
|
|
151
151
|
options?: { rpcUrl?: string },
|
|
152
|
-
): Promise<
|
|
152
|
+
): Promise<Instruction[]> {
|
|
153
153
|
const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
|
|
154
154
|
const orderId = address(orderAddress);
|
|
155
155
|
|
|
@@ -158,7 +158,7 @@ export async function cancelCrossChainOrderInstructions(
|
|
|
158
158
|
throw new Error(`Order with address ${orderAddress} not found`);
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
const instructions:
|
|
161
|
+
const instructions: Instruction[] = [];
|
|
162
162
|
const orderUserAddress = chainOrder.data.user;
|
|
163
163
|
const guardAddress = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Solana] as Address;
|
|
164
164
|
const addressEncoder = getAddressEncoder();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createHash } from "crypto";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generate execution details hash for cross-chain orders
|
|
5
|
+
* @param destChainId Destination chain ID
|
|
6
|
+
* @param destinationAddress Destination address on target chain
|
|
7
|
+
* @param tokenOut Token address on destination chain
|
|
8
|
+
* @param amountOutMin Minimum amount out
|
|
9
|
+
*/
|
|
10
|
+
export function generateExecutionDetailsHash(
|
|
11
|
+
destChainId: number,
|
|
12
|
+
destinationAddress: string,
|
|
13
|
+
tokenOut: string,
|
|
14
|
+
amountOutMin: string,
|
|
15
|
+
): Uint8Array {
|
|
16
|
+
const executionDetails = JSON.stringify({
|
|
17
|
+
destChainId,
|
|
18
|
+
destinationAddress,
|
|
19
|
+
tokenOut,
|
|
20
|
+
amountOutMin,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return new Uint8Array(createHash('sha256').update(executionDetails).digest());
|
|
24
|
+
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getAddressEncoder,
|
|
7
7
|
getProgramDerivedAddress,
|
|
8
8
|
type Address,
|
|
9
|
-
type
|
|
9
|
+
type Instruction,
|
|
10
10
|
} from '@solana/kit';
|
|
11
11
|
import { getDefaultSolanaRPC } from '../client.js';
|
|
12
12
|
import { fetchMaybeDcaOrder, getCancelDcaOrderInstruction } from '../generated/single-chain/index.js';
|
|
@@ -21,7 +21,7 @@ import { ChainID } from '../../../chains.js';
|
|
|
21
21
|
export async function cancelDcaSingleChainOrderInstructions(
|
|
22
22
|
orderAddress: string,
|
|
23
23
|
options?: { rpcUrl?: string },
|
|
24
|
-
): Promise<
|
|
24
|
+
): Promise<Instruction[]> {
|
|
25
25
|
const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
|
|
26
26
|
|
|
27
27
|
const orderId = address(orderAddress);
|
|
@@ -31,7 +31,7 @@ export async function cancelDcaSingleChainOrderInstructions(
|
|
|
31
31
|
throw new Error(`Order with address ${orderAddress} not found`);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const instructions:
|
|
34
|
+
const instructions: Instruction[] = [];
|
|
35
35
|
const orderUserAddress = chainOrder.data.user;
|
|
36
36
|
|
|
37
37
|
const tokenInMint = chainOrder.data.tokenInMint;
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
setTransactionMessageFeePayerSigner,
|
|
16
16
|
setTransactionMessageLifetimeUsingBlockhash,
|
|
17
17
|
type Address,
|
|
18
|
-
type
|
|
18
|
+
type Instruction,
|
|
19
19
|
} from '@solana/kit';
|
|
20
20
|
import type { DcaSingleChainOrder } from '../../orders/dca-single-chain.js';
|
|
21
21
|
import type { SolanaOrderInstructionResult } from '../order-instructions.js';
|
|
@@ -59,7 +59,7 @@ export async function getSolanaDcaSingleChainOrderInstructions(
|
|
|
59
59
|
|
|
60
60
|
const guardAddress = address(SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana]); // Assuming DCA uses same guard
|
|
61
61
|
const addressEncoder = getAddressEncoder();
|
|
62
|
-
const instructions: Array<
|
|
62
|
+
const instructions: Array<Instruction> = [];
|
|
63
63
|
|
|
64
64
|
const [tokenInProgramAccount] = await getProgramDerivedAddress({
|
|
65
65
|
programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BN } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { keccak256 } from "js-sha3";
|
|
4
|
+
import type { ExtraTransfer } from "./single-chain-limit-order.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Generate secret number and prepare secret hash for single chain DCA orders
|
|
8
|
+
* @param tokenOut Token OUT Pubkey
|
|
9
|
+
* @param receiver Token OUT receiver Pubkey
|
|
10
|
+
* @param extraTransfers Requested extra transfers
|
|
11
|
+
*/
|
|
12
|
+
export function prepareDcaSecretData(
|
|
13
|
+
tokenOut: PublicKey,
|
|
14
|
+
receiver: PublicKey,
|
|
15
|
+
extraTransfers: ExtraTransfer[],
|
|
16
|
+
) {
|
|
17
|
+
const secretNumber = new BN(crypto.getRandomValues(new Uint8Array(8)));
|
|
18
|
+
const secretHash = [...Uint8Array.from(Buffer.from(
|
|
19
|
+
keccak256([
|
|
20
|
+
...tokenOut.toBuffer(),
|
|
21
|
+
...receiver.toBuffer(),
|
|
22
|
+
...Buffer.concat(extraTransfers.map(t => Buffer.concat([
|
|
23
|
+
t.token.toBuffer(),
|
|
24
|
+
t.receiver.toBuffer(),
|
|
25
|
+
]))),
|
|
26
|
+
...secretNumber.toBuffer('le', 8),
|
|
27
|
+
]),
|
|
28
|
+
'hex'
|
|
29
|
+
))];
|
|
30
|
+
|
|
31
|
+
return { secretHash, secretNumber };
|
|
32
|
+
}
|