@shogun-sdk/intents-sdk 1.0.0
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 +124 -0
- package/dist/_esm/chains.js +46 -0
- package/dist/_esm/chains.js.map +1 -0
- package/dist/_esm/config.js +2 -0
- package/dist/_esm/config.js.map +1 -0
- package/dist/_esm/constants.js +46 -0
- package/dist/_esm/constants.js.map +1 -0
- package/dist/_esm/core/evm/abi/erc20.js +313 -0
- package/dist/_esm/core/evm/abi/erc20.js.map +1 -0
- package/dist/_esm/core/evm/abi/source-chain-guard.js +1716 -0
- package/dist/_esm/core/evm/abi/source-chain-guard.js.map +1 -0
- package/dist/_esm/core/evm/intent-provider.js +59 -0
- package/dist/_esm/core/evm/intent-provider.js.map +1 -0
- package/dist/_esm/core/evm/order-signature.js +19 -0
- package/dist/_esm/core/evm/order-signature.js.map +1 -0
- package/dist/_esm/core/evm/permit2.js +31 -0
- package/dist/_esm/core/evm/permit2.js.map +1 -0
- package/dist/_esm/core/evm/sdk.js +79 -0
- package/dist/_esm/core/evm/sdk.js.map +1 -0
- package/dist/_esm/core/evm/validator.js +46 -0
- package/dist/_esm/core/evm/validator.js.map +1 -0
- package/dist/_esm/core/evm/viem-provider.js +76 -0
- package/dist/_esm/core/evm/viem-provider.js.map +1 -0
- package/dist/_esm/core/order.js +190 -0
- package/dist/_esm/core/order.js.map +1 -0
- package/dist/_esm/core/sdk.js +120 -0
- package/dist/_esm/core/sdk.js.map +1 -0
- package/dist/_esm/core/solana/client.js +19 -0
- package/dist/_esm/core/solana/client.js.map +1 -0
- package/dist/_esm/core/solana/generated/accounts/adminSingleton.js +56 -0
- package/dist/_esm/core/solana/generated/accounts/adminSingleton.js.map +1 -0
- package/dist/_esm/core/solana/generated/accounts/guard.js +62 -0
- package/dist/_esm/core/solana/generated/accounts/guard.js.map +1 -0
- package/dist/_esm/core/solana/generated/accounts/index.js +11 -0
- package/dist/_esm/core/solana/generated/accounts/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/accounts/order.js +78 -0
- package/dist/_esm/core/solana/generated/accounts/order.js.map +1 -0
- package/dist/_esm/core/solana/generated/errors/index.js +9 -0
- package/dist/_esm/core/solana/generated/errors/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/errors/sourceChainGuard.js +35 -0
- package/dist/_esm/core/solana/generated/errors/sourceChainGuard.js.map +1 -0
- package/dist/_esm/core/solana/generated/index.js +13 -0
- package/dist/_esm/core/solana/generated/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/cancelOrder.js +125 -0
- package/dist/_esm/core/solana/generated/instructions/cancelOrder.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/claimTokens.js +142 -0
- package/dist/_esm/core/solana/generated/instructions/claimTokens.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/collectProtocolFees.js +146 -0
- package/dist/_esm/core/solana/generated/instructions/collectProtocolFees.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/createGuard.js +236 -0
- package/dist/_esm/core/solana/generated/instructions/createGuard.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/createOrder.js +182 -0
- package/dist/_esm/core/solana/generated/instructions/createOrder.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/index.js +19 -0
- package/dist/_esm/core/solana/generated/instructions/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/initialize.js +109 -0
- package/dist/_esm/core/solana/generated/instructions/initialize.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/preStartOrderExecution.js +123 -0
- package/dist/_esm/core/solana/generated/instructions/preStartOrderExecution.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/setAdmin.js +98 -0
- package/dist/_esm/core/solana/generated/instructions/setAdmin.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/setAuctioneerPubKey.js +104 -0
- package/dist/_esm/core/solana/generated/instructions/setAuctioneerPubKey.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/startOrderExecution.js +105 -0
- package/dist/_esm/core/solana/generated/instructions/startOrderExecution.js.map +1 -0
- package/dist/_esm/core/solana/generated/instructions/startOrderExecutionAfterSwap.js +113 -0
- package/dist/_esm/core/solana/generated/instructions/startOrderExecutionAfterSwap.js.map +1 -0
- package/dist/_esm/core/solana/generated/programs/index.js +9 -0
- package/dist/_esm/core/solana/generated/programs/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/programs/sourceChainGuard.js +82 -0
- package/dist/_esm/core/solana/generated/programs/sourceChainGuard.js.map +1 -0
- package/dist/_esm/core/solana/generated/shared/index.js +82 -0
- package/dist/_esm/core/solana/generated/shared/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/adminUpdated.js +18 -0
- package/dist/_esm/core/solana/generated/types/adminUpdated.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/auctioneerPubkeyUpdated.js +24 -0
- package/dist/_esm/core/solana/generated/types/auctioneerPubkeyUpdated.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/executionStarted.js +30 -0
- package/dist/_esm/core/solana/generated/types/executionStarted.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/guardCreated.js +28 -0
- package/dist/_esm/core/solana/generated/types/guardCreated.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/index.js +16 -0
- package/dist/_esm/core/solana/generated/types/index.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/orderCancelled.js +18 -0
- package/dist/_esm/core/solana/generated/types/orderCancelled.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/orderCreated.js +36 -0
- package/dist/_esm/core/solana/generated/types/orderCreated.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/orderFulfilled.js +18 -0
- package/dist/_esm/core/solana/generated/types/orderFulfilled.js.map +1 -0
- package/dist/_esm/core/solana/generated/types/tokenInSwapped.js +26 -0
- package/dist/_esm/core/solana/generated/types/tokenInSwapped.js.map +1 -0
- package/dist/_esm/core/solana/order-instructions.js +92 -0
- package/dist/_esm/core/solana/order-instructions.js.map +1 -0
- package/dist/_esm/core/solana/sdk.js +111 -0
- package/dist/_esm/core/solana/sdk.js.map +1 -0
- package/dist/_esm/core/solana/validator.js +22 -0
- package/dist/_esm/core/solana/validator.js.map +1 -0
- package/dist/_esm/core/sui/client.js +3 -0
- package/dist/_esm/core/sui/client.js.map +1 -0
- package/dist/_esm/core/sui/order-transaction.js +56 -0
- package/dist/_esm/core/sui/order-transaction.js.map +1 -0
- package/dist/_esm/core/sui/sdk.js +94 -0
- package/dist/_esm/core/sui/sdk.js.map +1 -0
- package/dist/_esm/core/sui/validator.js +25 -0
- package/dist/_esm/core/sui/validator.js.map +1 -0
- package/dist/_esm/errors/index.js +94 -0
- package/dist/_esm/errors/index.js.map +1 -0
- package/dist/_esm/index.js +7 -0
- package/dist/_esm/index.js.map +1 -0
- package/dist/_esm/package.json +1 -0
- package/dist/_esm/types/intent.js +2 -0
- package/dist/_esm/types/intent.js.map +1 -0
- package/dist/_esm/utils/base-validator.js +51 -0
- package/dist/_esm/utils/base-validator.js.map +1 -0
- package/dist/_esm/utils/logger.js +109 -0
- package/dist/_esm/utils/logger.js.map +1 -0
- package/dist/_esm/utils/order-validator.js +75 -0
- package/dist/_esm/utils/order-validator.js.map +1 -0
- package/dist/_esm/utils/parsers.js +10 -0
- package/dist/_esm/utils/parsers.js.map +1 -0
- package/dist/_esm/utils/type-utils.js +2 -0
- package/dist/_esm/utils/type-utils.js.map +1 -0
- package/dist/_types/chains.d.ts +69 -0
- package/dist/_types/chains.d.ts.map +1 -0
- package/dist/_types/config.d.ts +21 -0
- package/dist/_types/config.d.ts.map +1 -0
- package/dist/_types/constants.d.ts +18 -0
- package/dist/_types/constants.d.ts.map +1 -0
- package/dist/_types/core/evm/abi/erc20.d.ts +240 -0
- package/dist/_types/core/evm/abi/erc20.d.ts.map +1 -0
- package/dist/_types/core/evm/abi/source-chain-guard.d.ts +1343 -0
- package/dist/_types/core/evm/abi/source-chain-guard.d.ts.map +1 -0
- package/dist/_types/core/evm/intent-provider.d.ts +12 -0
- package/dist/_types/core/evm/intent-provider.d.ts.map +1 -0
- package/dist/_types/core/evm/order-signature.d.ts +19 -0
- package/dist/_types/core/evm/order-signature.d.ts.map +1 -0
- package/dist/_types/core/evm/permit2.d.ts +75 -0
- package/dist/_types/core/evm/permit2.d.ts.map +1 -0
- package/dist/_types/core/evm/sdk.d.ts +50 -0
- package/dist/_types/core/evm/sdk.d.ts.map +1 -0
- package/dist/_types/core/evm/validator.d.ts +13 -0
- package/dist/_types/core/evm/validator.d.ts.map +1 -0
- package/dist/_types/core/evm/viem-provider.d.ts +9657 -0
- package/dist/_types/core/evm/viem-provider.d.ts.map +1 -0
- package/dist/_types/core/order.d.ts +122 -0
- package/dist/_types/core/order.d.ts.map +1 -0
- package/dist/_types/core/sdk.d.ts +86 -0
- package/dist/_types/core/sdk.d.ts.map +1 -0
- package/dist/_types/core/solana/client.d.ts +11 -0
- package/dist/_types/core/solana/client.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/accounts/adminSingleton.d.ts +36 -0
- package/dist/_types/core/solana/generated/accounts/adminSingleton.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/accounts/guard.d.ts +48 -0
- package/dist/_types/core/solana/generated/accounts/guard.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/accounts/index.d.ts +11 -0
- package/dist/_types/core/solana/generated/accounts/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/accounts/order.d.ts +92 -0
- package/dist/_types/core/solana/generated/accounts/order.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/errors/index.d.ts +9 -0
- package/dist/_types/core/solana/generated/errors/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/errors/sourceChainGuard.d.ts +27 -0
- package/dist/_types/core/solana/generated/errors/sourceChainGuard.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/index.d.ts +13 -0
- package/dist/_types/core/solana/generated/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/cancelOrder.d.ts +108 -0
- package/dist/_types/core/solana/generated/instructions/cancelOrder.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/claimTokens.d.ts +131 -0
- package/dist/_types/core/solana/generated/instructions/claimTokens.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/collectProtocolFees.d.ts +91 -0
- package/dist/_types/core/solana/generated/instructions/collectProtocolFees.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/createGuard.d.ts +133 -0
- package/dist/_types/core/solana/generated/instructions/createGuard.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/createOrder.d.ts +122 -0
- package/dist/_types/core/solana/generated/instructions/createOrder.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/index.d.ts +19 -0
- package/dist/_types/core/solana/generated/instructions/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/initialize.d.ts +63 -0
- package/dist/_types/core/solana/generated/instructions/initialize.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/preStartOrderExecution.d.ts +105 -0
- package/dist/_types/core/solana/generated/instructions/preStartOrderExecution.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/setAdmin.d.ts +61 -0
- package/dist/_types/core/solana/generated/instructions/setAdmin.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/setAuctioneerPubKey.d.ts +68 -0
- package/dist/_types/core/solana/generated/instructions/setAuctioneerPubKey.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/startOrderExecution.d.ts +85 -0
- package/dist/_types/core/solana/generated/instructions/startOrderExecution.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts +95 -0
- package/dist/_types/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/programs/index.d.ts +9 -0
- package/dist/_types/core/solana/generated/programs/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/programs/sourceChainGuard.d.ts +59 -0
- package/dist/_types/core/solana/generated/programs/sourceChainGuard.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/shared/index.d.ts +52 -0
- package/dist/_types/core/solana/generated/shared/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/adminUpdated.d.ts +16 -0
- package/dist/_types/core/solana/generated/types/adminUpdated.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts +17 -0
- package/dist/_types/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/executionStarted.d.ts +26 -0
- package/dist/_types/core/solana/generated/types/executionStarted.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/guardCreated.d.ts +19 -0
- package/dist/_types/core/solana/generated/types/guardCreated.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/index.d.ts +16 -0
- package/dist/_types/core/solana/generated/types/index.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/orderCancelled.d.ts +16 -0
- package/dist/_types/core/solana/generated/types/orderCancelled.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/orderCreated.d.ts +32 -0
- package/dist/_types/core/solana/generated/types/orderCreated.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/orderFulfilled.d.ts +16 -0
- package/dist/_types/core/solana/generated/types/orderFulfilled.d.ts.map +1 -0
- package/dist/_types/core/solana/generated/types/tokenInSwapped.d.ts +22 -0
- package/dist/_types/core/solana/generated/types/tokenInSwapped.d.ts.map +1 -0
- package/dist/_types/core/solana/order-instructions.d.ts +12 -0
- package/dist/_types/core/solana/order-instructions.d.ts.map +1 -0
- package/dist/_types/core/solana/sdk.d.ts +65 -0
- package/dist/_types/core/solana/sdk.d.ts.map +1 -0
- package/dist/_types/core/solana/validator.d.ts +9 -0
- package/dist/_types/core/solana/validator.d.ts.map +1 -0
- package/dist/_types/core/sui/client.d.ts +3 -0
- package/dist/_types/core/sui/client.d.ts.map +1 -0
- package/dist/_types/core/sui/order-transaction.d.ts +9 -0
- package/dist/_types/core/sui/order-transaction.d.ts.map +1 -0
- package/dist/_types/core/sui/sdk.d.ts +55 -0
- package/dist/_types/core/sui/sdk.d.ts.map +1 -0
- package/dist/_types/core/sui/validator.d.ts +9 -0
- package/dist/_types/core/sui/validator.d.ts.map +1 -0
- package/dist/_types/errors/index.d.ts +32 -0
- package/dist/_types/errors/index.d.ts.map +1 -0
- package/dist/_types/index.d.ts +10 -0
- package/dist/_types/index.d.ts.map +1 -0
- package/dist/_types/types/intent.d.ts +129 -0
- package/dist/_types/types/intent.d.ts.map +1 -0
- package/dist/_types/utils/base-validator.d.ts +28 -0
- package/dist/_types/utils/base-validator.d.ts.map +1 -0
- package/dist/_types/utils/logger.d.ts +35 -0
- package/dist/_types/utils/logger.d.ts.map +1 -0
- package/dist/_types/utils/order-validator.d.ts +40 -0
- package/dist/_types/utils/order-validator.d.ts.map +1 -0
- package/dist/_types/utils/parsers.d.ts +4 -0
- package/dist/_types/utils/parsers.d.ts.map +1 -0
- package/dist/_types/utils/type-utils.d.ts +2 -0
- package/dist/_types/utils/type-utils.d.ts.map +1 -0
- package/package.json +62 -0
- package/src/chains.ts +77 -0
- package/src/config.ts +24 -0
- package/src/constants.ts +61 -0
- package/src/core/evm/abi/erc20.ts +312 -0
- package/src/core/evm/abi/source-chain-guard.ts +1715 -0
- package/src/core/evm/intent-provider.ts +63 -0
- package/src/core/evm/order-signature.ts +33 -0
- package/src/core/evm/permit2.ts +60 -0
- package/src/core/evm/sdk.ts +74 -0
- package/src/core/evm/validator.ts +60 -0
- package/src/core/evm/viem-provider.ts +79 -0
- package/src/core/order.ts +186 -0
- package/src/core/sdk.ts +154 -0
- package/src/core/solana/client.ts +37 -0
- package/src/core/solana/generated/accounts/adminSingleton.ts +136 -0
- package/src/core/solana/generated/accounts/guard.ts +156 -0
- package/src/core/solana/generated/accounts/index.ts +11 -0
- package/src/core/solana/generated/accounts/order.ts +218 -0
- package/src/core/solana/generated/errors/index.ts +9 -0
- package/src/core/solana/generated/errors/sourceChainGuard.ts +52 -0
- package/src/core/solana/generated/index.ts +13 -0
- package/src/core/solana/generated/instructions/cancelOrder.ts +357 -0
- package/src/core/solana/generated/instructions/claimTokens.ts +419 -0
- package/src/core/solana/generated/instructions/collectProtocolFees.ts +383 -0
- package/src/core/solana/generated/instructions/createGuard.ts +569 -0
- package/src/core/solana/generated/instructions/createOrder.ts +480 -0
- package/src/core/solana/generated/instructions/index.ts +19 -0
- package/src/core/solana/generated/instructions/initialize.ts +231 -0
- package/src/core/solana/generated/instructions/preStartOrderExecution.ts +362 -0
- package/src/core/solana/generated/instructions/setAdmin.ts +211 -0
- package/src/core/solana/generated/instructions/setAuctioneerPubKey.ts +241 -0
- package/src/core/solana/generated/instructions/startOrderExecution.ts +293 -0
- package/src/core/solana/generated/instructions/startOrderExecutionAfterSwap.ts +323 -0
- package/src/core/solana/generated/programs/index.ts +9 -0
- package/src/core/solana/generated/programs/sourceChainGuard.ts +223 -0
- package/src/core/solana/generated/shared/index.ts +124 -0
- package/src/core/solana/generated/types/adminUpdated.ts +35 -0
- package/src/core/solana/generated/types/auctioneerPubkeyUpdated.ts +44 -0
- package/src/core/solana/generated/types/executionStarted.ts +63 -0
- package/src/core/solana/generated/types/guardCreated.ts +50 -0
- package/src/core/solana/generated/types/index.ts +16 -0
- package/src/core/solana/generated/types/orderCancelled.ts +35 -0
- package/src/core/solana/generated/types/orderCreated.ts +80 -0
- package/src/core/solana/generated/types/orderFulfilled.ts +35 -0
- package/src/core/solana/generated/types/tokenInSwapped.ts +53 -0
- package/src/core/solana/order-instructions.ts +131 -0
- package/src/core/solana/sdk.ts +135 -0
- package/src/core/solana/validator.ts +26 -0
- package/src/core/sui/client.ts +3 -0
- package/src/core/sui/order-transaction.ts +78 -0
- package/src/core/sui/sdk.ts +95 -0
- package/src/core/sui/validator.ts +32 -0
- package/src/errors/index.ts +106 -0
- package/src/index.ts +10 -0
- package/src/types/intent.ts +143 -0
- package/src/utils/base-validator.ts +64 -0
- package/src/utils/logger.ts +128 -0
- package/src/utils/order-validator.ts +103 -0
- package/src/utils/parsers.ts +8 -0
- package/src/utils/type-utils.ts +1 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { type Address, getProgramDerivedAddress } from '@solana/kit';
|
|
10
|
+
import {
|
|
11
|
+
type Codec,
|
|
12
|
+
combineCodec,
|
|
13
|
+
type Decoder,
|
|
14
|
+
type Encoder,
|
|
15
|
+
fixDecoderSize,
|
|
16
|
+
fixEncoderSize,
|
|
17
|
+
getBytesDecoder,
|
|
18
|
+
getBytesEncoder,
|
|
19
|
+
getStructDecoder,
|
|
20
|
+
getStructEncoder,
|
|
21
|
+
type ReadonlyUint8Array,
|
|
22
|
+
transformEncoder,
|
|
23
|
+
} from '@solana/kit';
|
|
24
|
+
import {
|
|
25
|
+
type IAccountMeta,
|
|
26
|
+
type IInstruction,
|
|
27
|
+
type IInstructionWithAccounts,
|
|
28
|
+
type IInstructionWithData,
|
|
29
|
+
type ReadonlyAccount,
|
|
30
|
+
type WritableAccount,
|
|
31
|
+
type WritableSignerAccount,
|
|
32
|
+
} from '@solana/kit';
|
|
33
|
+
import { type IAccountSignerMeta, type TransactionSigner } from '@solana/kit';
|
|
34
|
+
import { SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS } from '../programs/index.js';
|
|
35
|
+
import { getAccountMetaFactory, type ResolvedAccount } from '../shared/index.js';
|
|
36
|
+
|
|
37
|
+
export const INITIALIZE_DISCRIMINATOR = new Uint8Array([175, 175, 109, 31, 13, 152, 155, 237]);
|
|
38
|
+
|
|
39
|
+
export function getInitializeDiscriminatorBytes() {
|
|
40
|
+
return fixEncoderSize(getBytesEncoder(), 8).encode(INITIALIZE_DISCRIMINATOR);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type InitializeInstruction<
|
|
44
|
+
TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
45
|
+
TAccountInitialAdmin extends string | IAccountMeta<string> = string,
|
|
46
|
+
TAccountAdminSingleton extends string | IAccountMeta<string> = string,
|
|
47
|
+
TAccountSystemProgram extends string | IAccountMeta<string> = '11111111111111111111111111111111',
|
|
48
|
+
TRemainingAccounts extends readonly IAccountMeta<string>[] = [],
|
|
49
|
+
> = IInstruction<TProgram> &
|
|
50
|
+
IInstructionWithData<Uint8Array> &
|
|
51
|
+
IInstructionWithAccounts<
|
|
52
|
+
[
|
|
53
|
+
TAccountInitialAdmin extends string
|
|
54
|
+
? WritableSignerAccount<TAccountInitialAdmin> & IAccountSignerMeta<TAccountInitialAdmin>
|
|
55
|
+
: TAccountInitialAdmin,
|
|
56
|
+
TAccountAdminSingleton extends string ? WritableAccount<TAccountAdminSingleton> : TAccountAdminSingleton,
|
|
57
|
+
TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,
|
|
58
|
+
...TRemainingAccounts,
|
|
59
|
+
]
|
|
60
|
+
>;
|
|
61
|
+
|
|
62
|
+
export type InitializeInstructionData = { discriminator: ReadonlyUint8Array };
|
|
63
|
+
|
|
64
|
+
export type InitializeInstructionDataArgs = {};
|
|
65
|
+
|
|
66
|
+
export function getInitializeInstructionDataEncoder(): Encoder<InitializeInstructionDataArgs> {
|
|
67
|
+
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({
|
|
68
|
+
...value,
|
|
69
|
+
discriminator: INITIALIZE_DISCRIMINATOR,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function getInitializeInstructionDataDecoder(): Decoder<InitializeInstructionData> {
|
|
74
|
+
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function getInitializeInstructionDataCodec(): Codec<InitializeInstructionDataArgs, InitializeInstructionData> {
|
|
78
|
+
return combineCodec(getInitializeInstructionDataEncoder(), getInitializeInstructionDataDecoder());
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type InitializeAsyncInput<
|
|
82
|
+
TAccountInitialAdmin extends string = string,
|
|
83
|
+
TAccountAdminSingleton extends string = string,
|
|
84
|
+
TAccountSystemProgram extends string = string,
|
|
85
|
+
> = {
|
|
86
|
+
/** Admin, creating Guard */
|
|
87
|
+
initialAdmin: TransactionSigner<TAccountInitialAdmin>;
|
|
88
|
+
/** Account that will store guard data */
|
|
89
|
+
adminSingleton?: Address<TAccountAdminSingleton>;
|
|
90
|
+
/** Solana System program */
|
|
91
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export async function getInitializeInstructionAsync<
|
|
95
|
+
TAccountInitialAdmin extends string,
|
|
96
|
+
TAccountAdminSingleton extends string,
|
|
97
|
+
TAccountSystemProgram extends string,
|
|
98
|
+
TProgramAddress extends Address = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
99
|
+
>(
|
|
100
|
+
input: InitializeAsyncInput<TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram>,
|
|
101
|
+
config?: { programAddress?: TProgramAddress },
|
|
102
|
+
): Promise<
|
|
103
|
+
InitializeInstruction<TProgramAddress, TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram>
|
|
104
|
+
> {
|
|
105
|
+
// Program address.
|
|
106
|
+
const programAddress = config?.programAddress ?? SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS;
|
|
107
|
+
|
|
108
|
+
// Original accounts.
|
|
109
|
+
const originalAccounts = {
|
|
110
|
+
initialAdmin: { value: input.initialAdmin ?? null, isWritable: true },
|
|
111
|
+
adminSingleton: { value: input.adminSingleton ?? null, isWritable: true },
|
|
112
|
+
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
|
113
|
+
};
|
|
114
|
+
const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;
|
|
115
|
+
|
|
116
|
+
// Resolve default values.
|
|
117
|
+
if (!accounts.adminSingleton.value) {
|
|
118
|
+
accounts.adminSingleton.value = await getProgramDerivedAddress({
|
|
119
|
+
programAddress,
|
|
120
|
+
seeds: [getBytesEncoder().encode(new Uint8Array([97, 100, 109, 105, 110]))],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (!accounts.systemProgram.value) {
|
|
124
|
+
accounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
128
|
+
const instruction = {
|
|
129
|
+
accounts: [
|
|
130
|
+
getAccountMeta(accounts.initialAdmin),
|
|
131
|
+
getAccountMeta(accounts.adminSingleton),
|
|
132
|
+
getAccountMeta(accounts.systemProgram),
|
|
133
|
+
],
|
|
134
|
+
programAddress,
|
|
135
|
+
data: getInitializeInstructionDataEncoder().encode({}),
|
|
136
|
+
} as InitializeInstruction<TProgramAddress, TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram>;
|
|
137
|
+
|
|
138
|
+
return instruction;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export type InitializeInput<
|
|
142
|
+
TAccountInitialAdmin extends string = string,
|
|
143
|
+
TAccountAdminSingleton extends string = string,
|
|
144
|
+
TAccountSystemProgram extends string = string,
|
|
145
|
+
> = {
|
|
146
|
+
/** Admin, creating Guard */
|
|
147
|
+
initialAdmin: TransactionSigner<TAccountInitialAdmin>;
|
|
148
|
+
/** Account that will store guard data */
|
|
149
|
+
adminSingleton: Address<TAccountAdminSingleton>;
|
|
150
|
+
/** Solana System program */
|
|
151
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export function getInitializeInstruction<
|
|
155
|
+
TAccountInitialAdmin extends string,
|
|
156
|
+
TAccountAdminSingleton extends string,
|
|
157
|
+
TAccountSystemProgram extends string,
|
|
158
|
+
TProgramAddress extends Address = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
159
|
+
>(
|
|
160
|
+
input: InitializeInput<TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram>,
|
|
161
|
+
config?: { programAddress?: TProgramAddress },
|
|
162
|
+
): InitializeInstruction<TProgramAddress, TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram> {
|
|
163
|
+
// Program address.
|
|
164
|
+
const programAddress = config?.programAddress ?? SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS;
|
|
165
|
+
|
|
166
|
+
// Original accounts.
|
|
167
|
+
const originalAccounts = {
|
|
168
|
+
initialAdmin: { value: input.initialAdmin ?? null, isWritable: true },
|
|
169
|
+
adminSingleton: { value: input.adminSingleton ?? null, isWritable: true },
|
|
170
|
+
systemProgram: { value: input.systemProgram ?? null, isWritable: false },
|
|
171
|
+
};
|
|
172
|
+
const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;
|
|
173
|
+
|
|
174
|
+
// Resolve default values.
|
|
175
|
+
if (!accounts.systemProgram.value) {
|
|
176
|
+
accounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
180
|
+
const instruction = {
|
|
181
|
+
accounts: [
|
|
182
|
+
getAccountMeta(accounts.initialAdmin),
|
|
183
|
+
getAccountMeta(accounts.adminSingleton),
|
|
184
|
+
getAccountMeta(accounts.systemProgram),
|
|
185
|
+
],
|
|
186
|
+
programAddress,
|
|
187
|
+
data: getInitializeInstructionDataEncoder().encode({}),
|
|
188
|
+
} as InitializeInstruction<TProgramAddress, TAccountInitialAdmin, TAccountAdminSingleton, TAccountSystemProgram>;
|
|
189
|
+
|
|
190
|
+
return instruction;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export type ParsedInitializeInstruction<
|
|
194
|
+
TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
195
|
+
TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],
|
|
196
|
+
> = {
|
|
197
|
+
programAddress: Address<TProgram>;
|
|
198
|
+
accounts: {
|
|
199
|
+
/** Admin, creating Guard */
|
|
200
|
+
initialAdmin: TAccountMetas[0];
|
|
201
|
+
/** Account that will store guard data */
|
|
202
|
+
adminSingleton: TAccountMetas[1];
|
|
203
|
+
/** Solana System program */
|
|
204
|
+
systemProgram: TAccountMetas[2];
|
|
205
|
+
};
|
|
206
|
+
data: InitializeInstructionData;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
export function parseInitializeInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(
|
|
210
|
+
instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>,
|
|
211
|
+
): ParsedInitializeInstruction<TProgram, TAccountMetas> {
|
|
212
|
+
if (instruction.accounts.length < 3) {
|
|
213
|
+
// TODO: Coded error.
|
|
214
|
+
throw new Error('Not enough accounts');
|
|
215
|
+
}
|
|
216
|
+
let accountIndex = 0;
|
|
217
|
+
const getNextAccount = () => {
|
|
218
|
+
const accountMeta = instruction.accounts![accountIndex]!;
|
|
219
|
+
accountIndex += 1;
|
|
220
|
+
return accountMeta;
|
|
221
|
+
};
|
|
222
|
+
return {
|
|
223
|
+
programAddress: instruction.programAddress,
|
|
224
|
+
accounts: {
|
|
225
|
+
initialAdmin: getNextAccount(),
|
|
226
|
+
adminSingleton: getNextAccount(),
|
|
227
|
+
systemProgram: getNextAccount(),
|
|
228
|
+
},
|
|
229
|
+
data: getInitializeInstructionDataDecoder().decode(instruction.data),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { type Address } from '@solana/kit';
|
|
10
|
+
import {
|
|
11
|
+
type Codec,
|
|
12
|
+
combineCodec,
|
|
13
|
+
type Decoder,
|
|
14
|
+
type Encoder,
|
|
15
|
+
fixDecoderSize,
|
|
16
|
+
fixEncoderSize,
|
|
17
|
+
getBytesDecoder,
|
|
18
|
+
getBytesEncoder,
|
|
19
|
+
getStructDecoder,
|
|
20
|
+
getStructEncoder,
|
|
21
|
+
type ReadonlyUint8Array,
|
|
22
|
+
transformEncoder,
|
|
23
|
+
} from '@solana/kit';
|
|
24
|
+
import {
|
|
25
|
+
type IAccountMeta,
|
|
26
|
+
type IInstruction,
|
|
27
|
+
type IInstructionWithAccounts,
|
|
28
|
+
type IInstructionWithData,
|
|
29
|
+
type ReadonlyAccount,
|
|
30
|
+
type WritableAccount,
|
|
31
|
+
type WritableSignerAccount,
|
|
32
|
+
} from '@solana/kit';
|
|
33
|
+
import { type IAccountSignerMeta, type TransactionSigner } from '@solana/kit';
|
|
34
|
+
import { SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS } from '../programs/index.js';
|
|
35
|
+
import { getAccountMetaFactory, type ResolvedAccount } from '../shared/index.js';
|
|
36
|
+
|
|
37
|
+
export const PRE_START_ORDER_EXECUTION_DISCRIMINATOR = new Uint8Array([69, 230, 54, 217, 254, 93, 181, 32]);
|
|
38
|
+
|
|
39
|
+
export function getPreStartOrderExecutionDiscriminatorBytes() {
|
|
40
|
+
return fixEncoderSize(getBytesEncoder(), 8).encode(PRE_START_ORDER_EXECUTION_DISCRIMINATOR);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type PreStartOrderExecutionInstruction<
|
|
44
|
+
TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
45
|
+
TAccountSolver extends string | IAccountMeta<string> = string,
|
|
46
|
+
TAccountOrder extends string | IAccountMeta<string> = string,
|
|
47
|
+
TAccountGuard extends string | IAccountMeta<string> = string,
|
|
48
|
+
TAccountIxSysvar extends string | IAccountMeta<string> = 'Sysvar1nstructions1111111111111111111111111',
|
|
49
|
+
TAccountCollateralTokenMint extends string | IAccountMeta<string> = string,
|
|
50
|
+
TAccountSolverCollateralTokenAccount extends string | IAccountMeta<string> = string,
|
|
51
|
+
TAccountGuardCollateralTokenAccount extends string | IAccountMeta<string> = string,
|
|
52
|
+
TAccountCollateralTokenProgram extends string | IAccountMeta<string> = string,
|
|
53
|
+
TAccountTokenInMint extends string | IAccountMeta<string> = string,
|
|
54
|
+
TAccountSolverTokenInAccount extends string | IAccountMeta<string> = string,
|
|
55
|
+
TAccountGuardTokenInAccount extends string | IAccountMeta<string> = string,
|
|
56
|
+
TAccountTokenInProgram extends string | IAccountMeta<string> = string,
|
|
57
|
+
TRemainingAccounts extends readonly IAccountMeta<string>[] = [],
|
|
58
|
+
> = IInstruction<TProgram> &
|
|
59
|
+
IInstructionWithData<Uint8Array> &
|
|
60
|
+
IInstructionWithAccounts<
|
|
61
|
+
[
|
|
62
|
+
TAccountSolver extends string
|
|
63
|
+
? WritableSignerAccount<TAccountSolver> & IAccountSignerMeta<TAccountSolver>
|
|
64
|
+
: TAccountSolver,
|
|
65
|
+
TAccountOrder extends string ? WritableAccount<TAccountOrder> : TAccountOrder,
|
|
66
|
+
TAccountGuard extends string ? WritableAccount<TAccountGuard> : TAccountGuard,
|
|
67
|
+
TAccountIxSysvar extends string ? ReadonlyAccount<TAccountIxSysvar> : TAccountIxSysvar,
|
|
68
|
+
TAccountCollateralTokenMint extends string
|
|
69
|
+
? ReadonlyAccount<TAccountCollateralTokenMint>
|
|
70
|
+
: TAccountCollateralTokenMint,
|
|
71
|
+
TAccountSolverCollateralTokenAccount extends string
|
|
72
|
+
? WritableAccount<TAccountSolverCollateralTokenAccount>
|
|
73
|
+
: TAccountSolverCollateralTokenAccount,
|
|
74
|
+
TAccountGuardCollateralTokenAccount extends string
|
|
75
|
+
? WritableAccount<TAccountGuardCollateralTokenAccount>
|
|
76
|
+
: TAccountGuardCollateralTokenAccount,
|
|
77
|
+
TAccountCollateralTokenProgram extends string
|
|
78
|
+
? ReadonlyAccount<TAccountCollateralTokenProgram>
|
|
79
|
+
: TAccountCollateralTokenProgram,
|
|
80
|
+
TAccountTokenInMint extends string ? ReadonlyAccount<TAccountTokenInMint> : TAccountTokenInMint,
|
|
81
|
+
TAccountSolverTokenInAccount extends string
|
|
82
|
+
? WritableAccount<TAccountSolverTokenInAccount>
|
|
83
|
+
: TAccountSolverTokenInAccount,
|
|
84
|
+
TAccountGuardTokenInAccount extends string
|
|
85
|
+
? WritableAccount<TAccountGuardTokenInAccount>
|
|
86
|
+
: TAccountGuardTokenInAccount,
|
|
87
|
+
TAccountTokenInProgram extends string ? ReadonlyAccount<TAccountTokenInProgram> : TAccountTokenInProgram,
|
|
88
|
+
...TRemainingAccounts,
|
|
89
|
+
]
|
|
90
|
+
>;
|
|
91
|
+
|
|
92
|
+
export type PreStartOrderExecutionInstructionData = {
|
|
93
|
+
discriminator: ReadonlyUint8Array;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export type PreStartOrderExecutionInstructionDataArgs = {};
|
|
97
|
+
|
|
98
|
+
export function getPreStartOrderExecutionInstructionDataEncoder(): Encoder<PreStartOrderExecutionInstructionDataArgs> {
|
|
99
|
+
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({
|
|
100
|
+
...value,
|
|
101
|
+
discriminator: PRE_START_ORDER_EXECUTION_DISCRIMINATOR,
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function getPreStartOrderExecutionInstructionDataDecoder(): Decoder<PreStartOrderExecutionInstructionData> {
|
|
106
|
+
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function getPreStartOrderExecutionInstructionDataCodec(): Codec<
|
|
110
|
+
PreStartOrderExecutionInstructionDataArgs,
|
|
111
|
+
PreStartOrderExecutionInstructionData
|
|
112
|
+
> {
|
|
113
|
+
return combineCodec(
|
|
114
|
+
getPreStartOrderExecutionInstructionDataEncoder(),
|
|
115
|
+
getPreStartOrderExecutionInstructionDataDecoder(),
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export type PreStartOrderExecutionInput<
|
|
120
|
+
TAccountSolver extends string = string,
|
|
121
|
+
TAccountOrder extends string = string,
|
|
122
|
+
TAccountGuard extends string = string,
|
|
123
|
+
TAccountIxSysvar extends string = string,
|
|
124
|
+
TAccountCollateralTokenMint extends string = string,
|
|
125
|
+
TAccountSolverCollateralTokenAccount extends string = string,
|
|
126
|
+
TAccountGuardCollateralTokenAccount extends string = string,
|
|
127
|
+
TAccountCollateralTokenProgram extends string = string,
|
|
128
|
+
TAccountTokenInMint extends string = string,
|
|
129
|
+
TAccountSolverTokenInAccount extends string = string,
|
|
130
|
+
TAccountGuardTokenInAccount extends string = string,
|
|
131
|
+
TAccountTokenInProgram extends string = string,
|
|
132
|
+
> = {
|
|
133
|
+
/** Solver that starts order execution */
|
|
134
|
+
solver: TransactionSigner<TAccountSolver>;
|
|
135
|
+
/** Order data */
|
|
136
|
+
order: Address<TAccountOrder>;
|
|
137
|
+
/** Guard address, that protects this order execution */
|
|
138
|
+
guard: Address<TAccountGuard>;
|
|
139
|
+
/**
|
|
140
|
+
* the supplied Sysvar could be anything else.
|
|
141
|
+
* The Instruction Sysvar has not been implemented
|
|
142
|
+
* in the Anchor framework yet, so this is the safe approach.
|
|
143
|
+
*/
|
|
144
|
+
ixSysvar?: Address<TAccountIxSysvar>;
|
|
145
|
+
/** Collateral token mint */
|
|
146
|
+
collateralTokenMint: Address<TAccountCollateralTokenMint>;
|
|
147
|
+
/** Solver collateral account, from which solver is paying collateral tokens and fees */
|
|
148
|
+
solverCollateralTokenAccount: Address<TAccountSolverCollateralTokenAccount>;
|
|
149
|
+
/** Guard collateral account, where Guard is collecting collateral tokens */
|
|
150
|
+
guardCollateralTokenAccount: Address<TAccountGuardCollateralTokenAccount>;
|
|
151
|
+
/** Solana token program */
|
|
152
|
+
collateralTokenProgram: Address<TAccountCollateralTokenProgram>;
|
|
153
|
+
/** Token IN mint */
|
|
154
|
+
tokenInMint: Address<TAccountTokenInMint>;
|
|
155
|
+
/** Solver Token IN account, to which token IN will be sent */
|
|
156
|
+
solverTokenInAccount: Address<TAccountSolverTokenInAccount>;
|
|
157
|
+
/** Guard Token IN account, where Tokens IN is stored */
|
|
158
|
+
guardTokenInAccount: Address<TAccountGuardTokenInAccount>;
|
|
159
|
+
/** Solana token program */
|
|
160
|
+
tokenInProgram: Address<TAccountTokenInProgram>;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export function getPreStartOrderExecutionInstruction<
|
|
164
|
+
TAccountSolver extends string,
|
|
165
|
+
TAccountOrder extends string,
|
|
166
|
+
TAccountGuard extends string,
|
|
167
|
+
TAccountIxSysvar extends string,
|
|
168
|
+
TAccountCollateralTokenMint extends string,
|
|
169
|
+
TAccountSolverCollateralTokenAccount extends string,
|
|
170
|
+
TAccountGuardCollateralTokenAccount extends string,
|
|
171
|
+
TAccountCollateralTokenProgram extends string,
|
|
172
|
+
TAccountTokenInMint extends string,
|
|
173
|
+
TAccountSolverTokenInAccount extends string,
|
|
174
|
+
TAccountGuardTokenInAccount extends string,
|
|
175
|
+
TAccountTokenInProgram extends string,
|
|
176
|
+
TProgramAddress extends Address = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
177
|
+
>(
|
|
178
|
+
input: PreStartOrderExecutionInput<
|
|
179
|
+
TAccountSolver,
|
|
180
|
+
TAccountOrder,
|
|
181
|
+
TAccountGuard,
|
|
182
|
+
TAccountIxSysvar,
|
|
183
|
+
TAccountCollateralTokenMint,
|
|
184
|
+
TAccountSolverCollateralTokenAccount,
|
|
185
|
+
TAccountGuardCollateralTokenAccount,
|
|
186
|
+
TAccountCollateralTokenProgram,
|
|
187
|
+
TAccountTokenInMint,
|
|
188
|
+
TAccountSolverTokenInAccount,
|
|
189
|
+
TAccountGuardTokenInAccount,
|
|
190
|
+
TAccountTokenInProgram
|
|
191
|
+
>,
|
|
192
|
+
config?: { programAddress?: TProgramAddress },
|
|
193
|
+
): PreStartOrderExecutionInstruction<
|
|
194
|
+
TProgramAddress,
|
|
195
|
+
TAccountSolver,
|
|
196
|
+
TAccountOrder,
|
|
197
|
+
TAccountGuard,
|
|
198
|
+
TAccountIxSysvar,
|
|
199
|
+
TAccountCollateralTokenMint,
|
|
200
|
+
TAccountSolverCollateralTokenAccount,
|
|
201
|
+
TAccountGuardCollateralTokenAccount,
|
|
202
|
+
TAccountCollateralTokenProgram,
|
|
203
|
+
TAccountTokenInMint,
|
|
204
|
+
TAccountSolverTokenInAccount,
|
|
205
|
+
TAccountGuardTokenInAccount,
|
|
206
|
+
TAccountTokenInProgram
|
|
207
|
+
> {
|
|
208
|
+
// Program address.
|
|
209
|
+
const programAddress = config?.programAddress ?? SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS;
|
|
210
|
+
|
|
211
|
+
// Original accounts.
|
|
212
|
+
const originalAccounts = {
|
|
213
|
+
solver: { value: input.solver ?? null, isWritable: true },
|
|
214
|
+
order: { value: input.order ?? null, isWritable: true },
|
|
215
|
+
guard: { value: input.guard ?? null, isWritable: true },
|
|
216
|
+
ixSysvar: { value: input.ixSysvar ?? null, isWritable: false },
|
|
217
|
+
collateralTokenMint: {
|
|
218
|
+
value: input.collateralTokenMint ?? null,
|
|
219
|
+
isWritable: false,
|
|
220
|
+
},
|
|
221
|
+
solverCollateralTokenAccount: {
|
|
222
|
+
value: input.solverCollateralTokenAccount ?? null,
|
|
223
|
+
isWritable: true,
|
|
224
|
+
},
|
|
225
|
+
guardCollateralTokenAccount: {
|
|
226
|
+
value: input.guardCollateralTokenAccount ?? null,
|
|
227
|
+
isWritable: true,
|
|
228
|
+
},
|
|
229
|
+
collateralTokenProgram: {
|
|
230
|
+
value: input.collateralTokenProgram ?? null,
|
|
231
|
+
isWritable: false,
|
|
232
|
+
},
|
|
233
|
+
tokenInMint: { value: input.tokenInMint ?? null, isWritable: false },
|
|
234
|
+
solverTokenInAccount: {
|
|
235
|
+
value: input.solverTokenInAccount ?? null,
|
|
236
|
+
isWritable: true,
|
|
237
|
+
},
|
|
238
|
+
guardTokenInAccount: {
|
|
239
|
+
value: input.guardTokenInAccount ?? null,
|
|
240
|
+
isWritable: true,
|
|
241
|
+
},
|
|
242
|
+
tokenInProgram: { value: input.tokenInProgram ?? null, isWritable: false },
|
|
243
|
+
};
|
|
244
|
+
const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;
|
|
245
|
+
|
|
246
|
+
// Resolve default values.
|
|
247
|
+
if (!accounts.ixSysvar.value) {
|
|
248
|
+
accounts.ixSysvar.value =
|
|
249
|
+
'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
253
|
+
const instruction = {
|
|
254
|
+
accounts: [
|
|
255
|
+
getAccountMeta(accounts.solver),
|
|
256
|
+
getAccountMeta(accounts.order),
|
|
257
|
+
getAccountMeta(accounts.guard),
|
|
258
|
+
getAccountMeta(accounts.ixSysvar),
|
|
259
|
+
getAccountMeta(accounts.collateralTokenMint),
|
|
260
|
+
getAccountMeta(accounts.solverCollateralTokenAccount),
|
|
261
|
+
getAccountMeta(accounts.guardCollateralTokenAccount),
|
|
262
|
+
getAccountMeta(accounts.collateralTokenProgram),
|
|
263
|
+
getAccountMeta(accounts.tokenInMint),
|
|
264
|
+
getAccountMeta(accounts.solverTokenInAccount),
|
|
265
|
+
getAccountMeta(accounts.guardTokenInAccount),
|
|
266
|
+
getAccountMeta(accounts.tokenInProgram),
|
|
267
|
+
],
|
|
268
|
+
programAddress,
|
|
269
|
+
data: getPreStartOrderExecutionInstructionDataEncoder().encode({}),
|
|
270
|
+
} as PreStartOrderExecutionInstruction<
|
|
271
|
+
TProgramAddress,
|
|
272
|
+
TAccountSolver,
|
|
273
|
+
TAccountOrder,
|
|
274
|
+
TAccountGuard,
|
|
275
|
+
TAccountIxSysvar,
|
|
276
|
+
TAccountCollateralTokenMint,
|
|
277
|
+
TAccountSolverCollateralTokenAccount,
|
|
278
|
+
TAccountGuardCollateralTokenAccount,
|
|
279
|
+
TAccountCollateralTokenProgram,
|
|
280
|
+
TAccountTokenInMint,
|
|
281
|
+
TAccountSolverTokenInAccount,
|
|
282
|
+
TAccountGuardTokenInAccount,
|
|
283
|
+
TAccountTokenInProgram
|
|
284
|
+
>;
|
|
285
|
+
|
|
286
|
+
return instruction;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export type ParsedPreStartOrderExecutionInstruction<
|
|
290
|
+
TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
|
|
291
|
+
TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],
|
|
292
|
+
> = {
|
|
293
|
+
programAddress: Address<TProgram>;
|
|
294
|
+
accounts: {
|
|
295
|
+
/** Solver that starts order execution */
|
|
296
|
+
solver: TAccountMetas[0];
|
|
297
|
+
/** Order data */
|
|
298
|
+
order: TAccountMetas[1];
|
|
299
|
+
/** Guard address, that protects this order execution */
|
|
300
|
+
guard: TAccountMetas[2];
|
|
301
|
+
/**
|
|
302
|
+
* the supplied Sysvar could be anything else.
|
|
303
|
+
* The Instruction Sysvar has not been implemented
|
|
304
|
+
* in the Anchor framework yet, so this is the safe approach.
|
|
305
|
+
*/
|
|
306
|
+
|
|
307
|
+
ixSysvar: TAccountMetas[3];
|
|
308
|
+
/** Collateral token mint */
|
|
309
|
+
collateralTokenMint: TAccountMetas[4];
|
|
310
|
+
/** Solver collateral account, from which solver is paying collateral tokens and fees */
|
|
311
|
+
solverCollateralTokenAccount: TAccountMetas[5];
|
|
312
|
+
/** Guard collateral account, where Guard is collecting collateral tokens */
|
|
313
|
+
guardCollateralTokenAccount: TAccountMetas[6];
|
|
314
|
+
/** Solana token program */
|
|
315
|
+
collateralTokenProgram: TAccountMetas[7];
|
|
316
|
+
/** Token IN mint */
|
|
317
|
+
tokenInMint: TAccountMetas[8];
|
|
318
|
+
/** Solver Token IN account, to which token IN will be sent */
|
|
319
|
+
solverTokenInAccount: TAccountMetas[9];
|
|
320
|
+
/** Guard Token IN account, where Tokens IN is stored */
|
|
321
|
+
guardTokenInAccount: TAccountMetas[10];
|
|
322
|
+
/** Solana token program */
|
|
323
|
+
tokenInProgram: TAccountMetas[11];
|
|
324
|
+
};
|
|
325
|
+
data: PreStartOrderExecutionInstructionData;
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
export function parsePreStartOrderExecutionInstruction<
|
|
329
|
+
TProgram extends string,
|
|
330
|
+
TAccountMetas extends readonly IAccountMeta[],
|
|
331
|
+
>(
|
|
332
|
+
instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>,
|
|
333
|
+
): ParsedPreStartOrderExecutionInstruction<TProgram, TAccountMetas> {
|
|
334
|
+
if (instruction.accounts.length < 12) {
|
|
335
|
+
// TODO: Coded error.
|
|
336
|
+
throw new Error('Not enough accounts');
|
|
337
|
+
}
|
|
338
|
+
let accountIndex = 0;
|
|
339
|
+
const getNextAccount = () => {
|
|
340
|
+
const accountMeta = instruction.accounts![accountIndex]!;
|
|
341
|
+
accountIndex += 1;
|
|
342
|
+
return accountMeta;
|
|
343
|
+
};
|
|
344
|
+
return {
|
|
345
|
+
programAddress: instruction.programAddress,
|
|
346
|
+
accounts: {
|
|
347
|
+
solver: getNextAccount(),
|
|
348
|
+
order: getNextAccount(),
|
|
349
|
+
guard: getNextAccount(),
|
|
350
|
+
ixSysvar: getNextAccount(),
|
|
351
|
+
collateralTokenMint: getNextAccount(),
|
|
352
|
+
solverCollateralTokenAccount: getNextAccount(),
|
|
353
|
+
guardCollateralTokenAccount: getNextAccount(),
|
|
354
|
+
collateralTokenProgram: getNextAccount(),
|
|
355
|
+
tokenInMint: getNextAccount(),
|
|
356
|
+
solverTokenInAccount: getNextAccount(),
|
|
357
|
+
guardTokenInAccount: getNextAccount(),
|
|
358
|
+
tokenInProgram: getNextAccount(),
|
|
359
|
+
},
|
|
360
|
+
data: getPreStartOrderExecutionInstructionDataDecoder().decode(instruction.data),
|
|
361
|
+
};
|
|
362
|
+
}
|