@shogun-sdk/intents-sdk 1.1.0 → 1.2.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.
Files changed (118) hide show
  1. package/dist/esm/constants.js +24 -8
  2. package/dist/esm/constants.js.map +1 -1
  3. package/dist/esm/core/evm/intent-provider.js +55 -2
  4. package/dist/esm/core/evm/intent-provider.js.map +1 -1
  5. package/dist/esm/core/evm/order-signature.js +12 -1
  6. package/dist/esm/core/evm/order-signature.js.map +1 -1
  7. package/dist/esm/core/evm/permit2.js +24 -1
  8. package/dist/esm/core/evm/permit2.js.map +1 -1
  9. package/dist/esm/core/evm/sdk.js +5 -18
  10. package/dist/esm/core/evm/sdk.js.map +1 -1
  11. package/dist/esm/core/evm/validator.js +21 -0
  12. package/dist/esm/core/evm/validator.js.map +1 -1
  13. package/dist/esm/core/orders/api/index.js +31 -0
  14. package/dist/esm/core/orders/api/index.js.map +1 -0
  15. package/dist/esm/core/orders/cross-chain.js +3 -0
  16. package/dist/esm/core/orders/cross-chain.js.map +1 -1
  17. package/dist/esm/core/orders/dca-single-chain.js +169 -0
  18. package/dist/esm/core/orders/dca-single-chain.js.map +1 -0
  19. package/dist/esm/core/orders/single-chain.js +4 -0
  20. package/dist/esm/core/orders/single-chain.js.map +1 -1
  21. package/dist/esm/core/sdk.js +55 -81
  22. package/dist/esm/core/sdk.js.map +1 -1
  23. package/dist/esm/core/solana/dca/cancel-order.js +61 -0
  24. package/dist/esm/core/solana/dca/cancel-order.js.map +1 -0
  25. package/dist/esm/core/solana/dca/create-order.js +82 -0
  26. package/dist/esm/core/solana/dca/create-order.js.map +1 -0
  27. package/dist/esm/core/solana/inspect.js +43 -0
  28. package/dist/esm/core/solana/inspect.js.map +1 -0
  29. package/dist/esm/core/solana/sdk.js +36 -18
  30. package/dist/esm/core/solana/sdk.js.map +1 -1
  31. package/dist/esm/core/solana/utils.js.map +1 -1
  32. package/dist/esm/core/solana/validator.js +3 -0
  33. package/dist/esm/core/solana/validator.js.map +1 -1
  34. package/dist/esm/core/sui/sdk.js +0 -21
  35. package/dist/esm/core/sui/sdk.js.map +1 -1
  36. package/dist/esm/core/sui/validator.js +4 -0
  37. package/dist/esm/core/sui/validator.js.map +1 -1
  38. package/dist/esm/index.js +4 -1
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/utils/base-validator.js +28 -0
  41. package/dist/esm/utils/base-validator.js.map +1 -1
  42. package/dist/esm/utils/order-validator.js +31 -0
  43. package/dist/esm/utils/order-validator.js.map +1 -1
  44. package/dist/esm/utils/quote/liquidswap.js.map +1 -1
  45. package/dist/types/constants.d.ts +10 -7
  46. package/dist/types/constants.d.ts.map +1 -1
  47. package/dist/types/core/evm/intent-provider.d.ts +5 -2
  48. package/dist/types/core/evm/intent-provider.d.ts.map +1 -1
  49. package/dist/types/core/evm/order-signature.d.ts +5 -0
  50. package/dist/types/core/evm/order-signature.d.ts.map +1 -1
  51. package/dist/types/core/evm/permit2.d.ts +90 -0
  52. package/dist/types/core/evm/permit2.d.ts.map +1 -1
  53. package/dist/types/core/evm/sdk.d.ts +3 -5
  54. package/dist/types/core/evm/sdk.d.ts.map +1 -1
  55. package/dist/types/core/evm/validator.d.ts +4 -0
  56. package/dist/types/core/evm/validator.d.ts.map +1 -1
  57. package/dist/types/core/orders/api/index.d.ts +8 -0
  58. package/dist/types/core/orders/api/index.d.ts.map +1 -0
  59. package/dist/types/core/orders/cross-chain.d.ts.map +1 -1
  60. package/dist/types/core/orders/dca-single-chain.d.ts +47 -0
  61. package/dist/types/core/orders/dca-single-chain.d.ts.map +1 -0
  62. package/dist/types/core/orders/single-chain.d.ts.map +1 -1
  63. package/dist/types/core/sdk.d.ts +16 -12
  64. package/dist/types/core/sdk.d.ts.map +1 -1
  65. package/dist/types/core/solana/dca/cancel-order.d.ts +5 -0
  66. package/dist/types/core/solana/dca/cancel-order.d.ts.map +1 -0
  67. package/dist/types/core/solana/dca/create-order.d.ts +8 -0
  68. package/dist/types/core/solana/dca/create-order.d.ts.map +1 -0
  69. package/dist/types/core/solana/inspect.d.ts +14 -0
  70. package/dist/types/core/solana/inspect.d.ts.map +1 -0
  71. package/dist/types/core/solana/sdk.d.ts +4 -5
  72. package/dist/types/core/solana/sdk.d.ts.map +1 -1
  73. package/dist/types/core/solana/utils.d.ts +2 -1
  74. package/dist/types/core/solana/utils.d.ts.map +1 -1
  75. package/dist/types/core/solana/validator.d.ts +1 -0
  76. package/dist/types/core/solana/validator.d.ts.map +1 -1
  77. package/dist/types/core/sui/sdk.d.ts +1 -6
  78. package/dist/types/core/sui/sdk.d.ts.map +1 -1
  79. package/dist/types/core/sui/validator.d.ts +1 -0
  80. package/dist/types/core/sui/validator.d.ts.map +1 -1
  81. package/dist/types/index.d.ts +4 -1
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/types/types/intent.d.ts +22 -0
  84. package/dist/types/types/intent.d.ts.map +1 -1
  85. package/dist/types/utils/base-validator.d.ts +7 -0
  86. package/dist/types/utils/base-validator.d.ts.map +1 -1
  87. package/dist/types/utils/order-validator.d.ts +15 -0
  88. package/dist/types/utils/order-validator.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/src/auth/siwe.ts +1 -1
  91. package/src/constants.ts +72 -39
  92. package/src/core/evm/connectors/hyperevm.ts +1 -1
  93. package/src/core/evm/intent-provider.ts +88 -4
  94. package/src/core/evm/order-signature.ts +23 -1
  95. package/src/core/evm/permit2.ts +47 -1
  96. package/src/core/evm/sdk.ts +15 -21
  97. package/src/core/evm/validator.ts +32 -0
  98. package/src/core/orders/api/index.ts +33 -0
  99. package/src/core/orders/cross-chain.ts +4 -0
  100. package/src/core/orders/dca-single-chain.ts +143 -0
  101. package/src/core/orders/single-chain.ts +6 -0
  102. package/src/core/sdk.ts +73 -102
  103. package/src/core/solana/cancel-order.ts +1 -1
  104. package/src/core/solana/dca/cancel-order.ts +91 -0
  105. package/src/core/solana/dca/create-order.ts +142 -0
  106. package/src/core/solana/inspect.ts +50 -0
  107. package/src/core/solana/order-instructions.ts +1 -1
  108. package/src/core/solana/sdk.ts +65 -21
  109. package/src/core/solana/utils.ts +2 -1
  110. package/src/core/solana/validator.ts +4 -0
  111. package/src/core/sui/sdk.ts +2 -24
  112. package/src/core/sui/validator.ts +5 -0
  113. package/src/index.ts +13 -1
  114. package/src/types/api.ts +1 -1
  115. package/src/types/intent.ts +27 -0
  116. package/src/utils/base-validator.ts +40 -0
  117. package/src/utils/order-validator.ts +38 -0
  118. package/src/utils/quote/liquidswap.ts +2 -2
@@ -0,0 +1,169 @@
1
+ // src/core/orders/dca-single-chain.ts
2
+ import { ChainID, chainIdToChainTypeMap, isEvmChain } from '../../chains.js';
3
+ import { ValidationError } from '../../errors/index.js';
4
+ import { DcaSingleChainOrderValidator } from '../../utils/order-validator.js';
5
+ import { BaseSDK } from '../sdk.js';
6
+ import { getEVMDcaSingleChainOrderTypedData } from '../evm/order-signature.js';
7
+ import {} from './common.js';
8
+ import { getSolanaDcaSingleChainOrderInstructions } from '../solana/dca/create-order.js';
9
+ export class DcaSingleChainOrder {
10
+ constructor(params) {
11
+ Object.defineProperty(this, "user", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "chainId", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ Object.defineProperty(this, "tokenIn", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, "tokenOut", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ Object.defineProperty(this, "destinationAddress", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ Object.defineProperty(this, "startTime", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: void 0
46
+ });
47
+ Object.defineProperty(this, "amountInPerInterval", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: void 0
52
+ });
53
+ Object.defineProperty(this, "totalIntervals", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
59
+ Object.defineProperty(this, "intervalDuration", {
60
+ enumerable: true,
61
+ configurable: true,
62
+ writable: true,
63
+ value: void 0
64
+ });
65
+ Object.defineProperty(this, "amountOutMin", {
66
+ enumerable: true,
67
+ configurable: true,
68
+ writable: true,
69
+ value: void 0
70
+ });
71
+ Object.defineProperty(this, "extraTransfers", {
72
+ enumerable: true,
73
+ configurable: true,
74
+ writable: true,
75
+ value: void 0
76
+ });
77
+ Object.defineProperty(this, "deadline", {
78
+ enumerable: true,
79
+ configurable: true,
80
+ writable: true,
81
+ value: void 0
82
+ });
83
+ this.user = params.user;
84
+ this.chainId = params.chainId;
85
+ this.tokenIn = params.tokenIn;
86
+ this.tokenOut = params.tokenOut;
87
+ this.destinationAddress = params.destinationAddress;
88
+ this.startTime = params.startTime;
89
+ this.amountInPerInterval = params.amountInPerInterval;
90
+ this.totalIntervals = params.totalIntervals;
91
+ this.intervalDuration = params.intervalDuration;
92
+ this.amountOutMin = params.amountOutMin ?? 1n;
93
+ this.extraTransfers = params.extraTransfers;
94
+ this.deadline = params.deadline;
95
+ }
96
+ static async create(input) {
97
+ new DcaSingleChainOrderValidator().validateOrder(input);
98
+ const order = new DcaSingleChainOrder({
99
+ ...input,
100
+ user: input.user,
101
+ });
102
+ if (isEvmChain(order.chainId)) {
103
+ return order;
104
+ }
105
+ const preparedRandomData = order.getRandomPreparedData();
106
+ const intentRequest = order.toIntentRequest(preparedRandomData);
107
+ await BaseSDK.validateDcaSingleChainOrder(intentRequest);
108
+ return order;
109
+ }
110
+ /// This is needed because API requires the prepared data to be sent
111
+ /// In the cases of Solana and Sui, if we want the real data, we must send the order on-chain before validating.
112
+ /// And that is something we cannot do before validating the order on the API side.
113
+ getRandomPreparedData() {
114
+ const chainId = this.chainId;
115
+ const chainType = chainIdToChainTypeMap[chainId];
116
+ const randomNumber = String(Math.floor(Math.random() * 10000000));
117
+ switch (chainType) {
118
+ case 'EVM': {
119
+ return {
120
+ nonce: randomNumber,
121
+ signature: '0x0000000000000000000000000000000000000000000000000000000000000000',
122
+ };
123
+ }
124
+ case 'Solana': {
125
+ return {
126
+ secretNumber: randomNumber,
127
+ orderPubkey: 'DFNAjFAvS4GF98Tp1kiyLvEHM3wjGXibCfF86nnmhuVc',
128
+ };
129
+ }
130
+ case 'Sui': {
131
+ throw new ValidationError('DCA orders are not supported on Sui');
132
+ }
133
+ default: {
134
+ throw new Error('Chain type not supported');
135
+ }
136
+ }
137
+ }
138
+ getTotalAmountIn() {
139
+ return BigInt(this.amountInPerInterval) * BigInt(this.totalIntervals);
140
+ }
141
+ toIntentRequest(preparedData) {
142
+ const sourceChainType = chainIdToChainTypeMap[this.chainId];
143
+ return {
144
+ genericData: this,
145
+ chainSpecificData: {
146
+ [sourceChainType]: preparedData,
147
+ },
148
+ };
149
+ }
150
+ sendToAuctioneer(preparedData) {
151
+ return BaseSDK.sendDcaSingleChainOrder({
152
+ order: this,
153
+ preparedData,
154
+ });
155
+ }
156
+ async toEVMTypedData() {
157
+ if (!isEvmChain(this.chainId)) {
158
+ throw new ValidationError('Chain id is not an Ethereum compatible chain');
159
+ }
160
+ return getEVMDcaSingleChainOrderTypedData(this);
161
+ }
162
+ async toSolanaInstructionsByteArray() {
163
+ if (this.chainId !== ChainID.Solana) {
164
+ throw new ValidationError('Chain id is not Solana');
165
+ }
166
+ return getSolanaDcaSingleChainOrderInstructions(this);
167
+ }
168
+ }
169
+ //# sourceMappingURL=dca-single-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dca-single-chain.js","sourceRoot":"","sources":["../../../../src/core/orders/dca-single-chain.ts"],"names":[],"mappings":"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"}
@@ -94,8 +94,12 @@ export class SingleChainOrder {
94
94
  amountOutMin,
95
95
  user: input.user,
96
96
  });
97
+ if (isEvmChain(order.chainId)) {
98
+ return order;
99
+ }
97
100
  const preparedRandomData = order.getRandomPreparedData();
98
101
  const intentRequest = order.toIntentRequest(preparedRandomData);
102
+ // Just validate for non EVM
99
103
  await BaseSDK.validateSingleChainOrder(intentRequest);
100
104
  return order;
101
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"single-chain.js","sourceRoot":"","sources":["../../../../src/core/orders/single-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"single-chain.js","sourceRoot":"","sources":["../../../../src/core/orders/single-chain.ts"],"names":[],"mappings":"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"}
@@ -2,111 +2,85 @@ import { AUCTIONEER_URL } from '../constants.js';
2
2
  import { NetworkError } from '../errors/index.js';
3
3
  import { Parsers } from '../utils/parsers.js';
4
4
  import { CrossChainOrder } from './orders/cross-chain.js';
5
+ import { DcaSingleChainOrder } from './orders/dca-single-chain.js';
5
6
  import { SingleChainOrder } from './orders/single-chain.js';
6
7
  /**
7
8
  * Base SDK providing common functionality for all blockchain implementations
8
- *
9
- * This abstract class serves as the foundation for chain-specific SDK implementations
10
- * (EVM, Solana, Sui), providing shared functionality for creating and sending orders
11
- * across different blockchains.
12
9
  */
13
10
  export class BaseSDK {
14
- async createSingleChainOrder(params) {
15
- const userAddress = await this.getUserAddress();
16
- const order = await SingleChainOrder.create({
17
- ...params,
18
- user: userAddress,
19
- });
20
- return this.prepareSingleChainOrder(order);
21
- }
22
- async createCrossChainOrder(params) {
23
- const userAddress = await this.getUserAddress();
24
- const order = await CrossChainOrder.create({
25
- ...params,
26
- user: userAddress,
27
- });
28
- return this.prepareCrossChainOrder(order);
29
- }
30
- async createAndSendSingleChainOrder(params) {
31
- const preparedOrder = await this.createSingleChainOrder(params);
32
- return BaseSDK.sendSingleChainOrder(preparedOrder);
33
- }
34
- static async sendSingleChainOrder(preparedOrder) {
35
- const intentRequest = preparedOrder.order.toIntentRequest(preparedOrder.preparedData);
36
- const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
37
- const url = `${AUCTIONEER_URL}/user_intent/single_chain/limit_order`;
11
+ // Generic HTTP request handler
12
+ static async makeRequest(url, body) {
38
13
  const response = await fetch(url, {
39
14
  method: 'POST',
40
- headers: {
41
- 'Content-Type': 'application/json',
42
- },
15
+ headers: { 'Content-Type': 'application/json' },
43
16
  body,
44
17
  });
45
18
  if (!response.ok) {
46
19
  const errorJson = await response.json();
20
+ const mainError = errorJson.error;
47
21
  const extraErrorData = errorJson.extra_error_data;
48
- throw new NetworkError(`Server error ${extraErrorData}`);
22
+ const errorMessage = mainError
23
+ ? `${mainError}. Extra error data: ${extraErrorData}`
24
+ : `Server error ${extraErrorData}`;
25
+ throw new NetworkError(errorMessage);
49
26
  }
50
27
  return response.json();
51
28
  }
52
- static async validateCrossChainOrder(intentRequest) {
29
+ static async validateOrder(intentRequest, endpoint) {
53
30
  const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
54
- const url = `${AUCTIONEER_URL}/validate_intent/cross_chain/limit_order`;
55
- const response = await fetch(url, {
56
- method: 'POST',
57
- headers: {
58
- 'Content-Type': 'application/json',
59
- },
60
- body,
61
- });
62
- if (!response.ok) {
63
- const errorJson = await response.json();
64
- const mainError = errorJson.error;
65
- const extraErrorData = errorJson.extra_error_data;
66
- throw new NetworkError(`Validation error: ${mainError}. Extra error data: ${extraErrorData}`);
67
- }
68
- return;
31
+ const url = `${AUCTIONEER_URL}${endpoint}`;
32
+ await BaseSDK.makeRequest(url, body);
69
33
  }
70
- static async validateSingleChainOrder(intentRequest) {
34
+ static async sendOrder(preparedOrder, endpoint) {
35
+ const intentRequest = preparedOrder.order.toIntentRequest(preparedOrder.preparedData);
71
36
  const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
72
- const url = `${AUCTIONEER_URL}/validate_intent/single_chain/limit_order`;
73
- const response = await fetch(url, {
74
- method: 'POST',
75
- headers: {
76
- 'Content-Type': 'application/json',
77
- },
78
- body,
79
- });
80
- if (!response.ok) {
81
- const errorJson = await response.json();
82
- const mainError = errorJson.error;
83
- const extraErrorData = errorJson.extra_error_data;
84
- throw new NetworkError(`Validation error: ${mainError}. Extra error data: ${extraErrorData}`);
85
- }
86
- return;
37
+ const url = `${AUCTIONEER_URL}${endpoint}`;
38
+ return BaseSDK.makeRequest(url, body);
39
+ }
40
+ async createCrossChainOrder(params) {
41
+ const userAddress = await this.getUserAddress();
42
+ const order = await CrossChainOrder.create({ ...params, user: userAddress });
43
+ return this.prepareCrossChainOrder(order);
87
44
  }
88
45
  async createAndSendCrossChainOrder(params) {
89
46
  const preparedOrder = await this.createCrossChainOrder(params);
90
47
  return BaseSDK.sendCrossChainOrder(preparedOrder);
91
48
  }
92
49
  static async sendCrossChainOrder(preparedOrder) {
93
- const intentRequest = preparedOrder.order.toIntentRequest(preparedOrder.preparedData);
94
- const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
95
- const url = `${AUCTIONEER_URL}/user_intent/cross_chain/limit_order`;
96
- const response = await fetch(url, {
97
- method: 'POST',
98
- headers: {
99
- 'Content-Type': 'application/json',
100
- },
101
- body,
102
- });
103
- if (!response.ok) {
104
- const errorJson = await response.json();
105
- const mainError = errorJson.error;
106
- const extraErrorData = errorJson.extra_error_data;
107
- throw new NetworkError(`Failed to send cross-chain order. Main error: ${mainError}. Extra error data: ${extraErrorData}`);
108
- }
109
- return response.json();
50
+ return BaseSDK.sendOrder(preparedOrder, '/user_intent/cross_chain/limit_order');
51
+ }
52
+ static async validateCrossChainOrder(intentRequest) {
53
+ return BaseSDK.validateOrder(intentRequest, '/validate_intent/cross_chain/limit_order');
54
+ }
55
+ async createSingleChainOrder(params) {
56
+ const userAddress = await this.getUserAddress();
57
+ const order = await SingleChainOrder.create({ ...params, user: userAddress });
58
+ return this.prepareSingleChainOrder(order);
59
+ }
60
+ async createAndSendSingleChainOrder(params) {
61
+ const preparedOrder = await this.createSingleChainOrder(params);
62
+ return BaseSDK.sendSingleChainOrder(preparedOrder);
63
+ }
64
+ static async sendSingleChainOrder(preparedOrder) {
65
+ return BaseSDK.sendOrder(preparedOrder, '/user_intent/single_chain/limit_order');
66
+ }
67
+ static async validateSingleChainOrder(intentRequest) {
68
+ return BaseSDK.validateOrder(intentRequest, '/validate_intent/single_chain/limit_order');
69
+ }
70
+ async createDcaSingleChainOrder(params) {
71
+ const userAddress = await this.getUserAddress();
72
+ const order = await DcaSingleChainOrder.create({ ...params, user: userAddress });
73
+ return this.prepareDcaSingleChainOrder(order);
74
+ }
75
+ async createAndSendDcaSingleChainOrder(params) {
76
+ const preparedOrder = await this.createDcaSingleChainOrder(params);
77
+ return BaseSDK.sendDcaSingleChainOrder(preparedOrder);
78
+ }
79
+ static async sendDcaSingleChainOrder(preparedOrder) {
80
+ return BaseSDK.sendOrder(preparedOrder, '/user_intent/single_chain/dca_order');
81
+ }
82
+ static async validateDcaSingleChainOrder(intentRequest) {
83
+ return BaseSDK.validateOrder(intentRequest, '/validate_intent/single_chain/dca_order');
110
84
  }
111
85
  }
112
86
  //# sourceMappingURL=sdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/core/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/core/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { address, createNoopSigner, createSolanaRpc, fetchEncodedAccount, getAddressEncoder, getProgramDerivedAddress, } from '@solana/kit';
2
+ import { getDefaultSolanaRPC } from '../client.js';
3
+ import { fetchMaybeDcaOrder, getCancelDcaOrderInstruction } from '../generated/single-chain/index.js';
4
+ import { ASSOCIATED_TOKEN_PROGRAM_ADDRESS, fetchMint, getCreateAssociatedTokenInstructionAsync, } from '@solana-program/token';
5
+ import { SINGLE_CHAIN_GUARD_ADDRESSES } from '../../../constants.js';
6
+ import { ChainID } from '../../../chains.js';
7
+ export async function cancelDcaSingleChainOrderInstructions(orderAddress, options) {
8
+ const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
9
+ const orderId = address(orderAddress);
10
+ const chainOrder = await fetchMaybeDcaOrder(rpc, orderId);
11
+ if (!chainOrder.exists) {
12
+ throw new Error(`Order with address ${orderAddress} not found`);
13
+ }
14
+ const instructions = [];
15
+ const orderUserAddress = chainOrder.data.user;
16
+ const tokenInMint = chainOrder.data.tokenInMint;
17
+ const tokenMintProgram = await fetchMint(rpc, tokenInMint);
18
+ const addressEncoder = getAddressEncoder();
19
+ const [tokenInProgramAccount] = await getProgramDerivedAddress({
20
+ programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
21
+ seeds: [
22
+ addressEncoder.encode(orderUserAddress),
23
+ addressEncoder.encode(tokenMintProgram.programAddress),
24
+ addressEncoder.encode(tokenInMint),
25
+ ],
26
+ });
27
+ const guardAddress = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana];
28
+ const [guardProgramAccount] = await getProgramDerivedAddress({
29
+ programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
30
+ seeds: [
31
+ // Owner
32
+ addressEncoder.encode(guardAddress),
33
+ // Token program
34
+ addressEncoder.encode(tokenMintProgram.programAddress),
35
+ // mint address
36
+ addressEncoder.encode(tokenInMint),
37
+ ],
38
+ });
39
+ const userTokenInAccount = await fetchEncodedAccount(rpc, tokenInProgramAccount);
40
+ if (!userTokenInAccount.exists) {
41
+ const createTokenIx = await getCreateAssociatedTokenInstructionAsync({
42
+ mint: tokenInMint,
43
+ owner: orderUserAddress,
44
+ payer: createNoopSigner(orderUserAddress),
45
+ tokenProgram: tokenMintProgram.programAddress,
46
+ });
47
+ instructions.push(createTokenIx);
48
+ }
49
+ const cancelLimitOrderIx = getCancelDcaOrderInstruction({
50
+ user: createNoopSigner(orderUserAddress),
51
+ order: orderId,
52
+ guard: guardAddress,
53
+ tokenInMint: chainOrder.data.tokenInMint,
54
+ userTokenInAccount: userTokenInAccount.address,
55
+ guardTokenInAccount: guardProgramAccount,
56
+ tokenInProgram: tokenMintProgram.programAddress,
57
+ });
58
+ instructions.push(cancelLimitOrderIx);
59
+ return instructions;
60
+ }
61
+ //# sourceMappingURL=cancel-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel-order.js","sourceRoot":"","sources":["../../../../../src/core/solana/dca/cancel-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { address, addSignersToTransactionMessage, appendTransactionMessageInstructions, createNoopSigner, createSolanaRpc, createTransactionMessage, fetchEncodedAccount, generateKeyPairSigner, getAddressEncoder, getProgramDerivedAddress, getTransactionCodec, partiallySignTransactionMessageWithSigners, pipe, setTransactionMessageFeePayerSigner, setTransactionMessageLifetimeUsingBlockhash, } from '@solana/kit';
2
+ import { getDefaultSolanaRPC } from '../client.js';
3
+ import { genSecretHashAndNumber } from '../utils.js';
4
+ import { NATIVE_SOLANA_TOKEN_ADDRESS, SINGLE_CHAIN_GUARD_ADDRESSES, WRAPPED_SOL_MINT_ADDRESS, } from '../../../constants.js';
5
+ import { ASSOCIATED_TOKEN_PROGRAM_ADDRESS, fetchMint, getCreateAssociatedTokenInstructionAsync, getSyncNativeInstruction, } from '@solana-program/token';
6
+ import { ChainID } from '../../../chains.js';
7
+ import { getTransferSolInstruction } from '@solana-program/system';
8
+ import { getCreateDcaOrderInstructionAsync } from '../generated/single-chain/index.js';
9
+ export async function getSolanaDcaSingleChainOrderInstructions(order, options) {
10
+ const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
11
+ const orderSigner = await generateKeyPairSigner();
12
+ const signer = createNoopSigner(order.user);
13
+ let tokenInMint = address(order.tokenIn);
14
+ const { secretHash, secretNumber } = genSecretHashAndNumber(order);
15
+ const orderUserAddress = address(order.user);
16
+ const spendingNative = tokenInMint === NATIVE_SOLANA_TOKEN_ADDRESS;
17
+ if (spendingNative) {
18
+ tokenInMint = WRAPPED_SOL_MINT_ADDRESS;
19
+ }
20
+ const tokenMintProgram = await fetchMint(rpc, tokenInMint);
21
+ const guardAddress = address(SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana]); // Assuming DCA uses same guard
22
+ const addressEncoder = getAddressEncoder();
23
+ const instructions = [];
24
+ const [tokenInProgramAccount] = await getProgramDerivedAddress({
25
+ programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
26
+ seeds: [
27
+ addressEncoder.encode(orderUserAddress),
28
+ addressEncoder.encode(tokenMintProgram.programAddress),
29
+ addressEncoder.encode(tokenInMint),
30
+ ],
31
+ });
32
+ const userTokenInAccount = await fetchEncodedAccount(rpc, tokenInProgramAccount);
33
+ if (!userTokenInAccount.exists) {
34
+ const createAccountIx = await getCreateAssociatedTokenInstructionAsync({
35
+ payer: signer,
36
+ ata: tokenInProgramAccount,
37
+ owner: orderUserAddress,
38
+ mint: tokenMintProgram.address,
39
+ tokenProgram: tokenMintProgram.programAddress,
40
+ });
41
+ instructions.push(createAccountIx);
42
+ }
43
+ const totalAmountIn = BigInt(order.amountInPerInterval) * BigInt(order.totalIntervals);
44
+ if (spendingNative) {
45
+ const transferIx = getTransferSolInstruction({
46
+ amount: totalAmountIn,
47
+ destination: userTokenInAccount.address,
48
+ source: signer,
49
+ });
50
+ instructions.push(transferIx);
51
+ const syncNativeIx = getSyncNativeInstruction({
52
+ account: userTokenInAccount.address,
53
+ });
54
+ instructions.push(syncNativeIx);
55
+ }
56
+ const createDcaOrderIx = await getCreateDcaOrderInstructionAsync({
57
+ user: signer,
58
+ order: orderSigner,
59
+ guard: guardAddress,
60
+ tokenInMint: tokenInMint,
61
+ userTokenInAccount: userTokenInAccount.address,
62
+ tokenInProgram: tokenMintProgram.programAddress,
63
+ amountInPerInterval: order.amountInPerInterval,
64
+ totalIntervals: order.totalIntervals,
65
+ intervalDuration: order.intervalDuration,
66
+ deadline: order.deadline,
67
+ amountOutMin: order.amountOutMin,
68
+ secretHash: Uint8Array.from(secretHash),
69
+ extraTransfersAmounts: [], // TODO: Implement extra transfers
70
+ });
71
+ instructions.push(createDcaOrderIx);
72
+ const { value: latestBlockhash } = await rpc.getLatestBlockhash({ commitment: 'confirmed' }).send();
73
+ const txMessage = pipe(createTransactionMessage({ version: 0 }), (tx) => setTransactionMessageFeePayerSigner(signer, tx), (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx), (tx) => appendTransactionMessageInstructions(instructions, tx), (tx) => addSignersToTransactionMessage([orderSigner], tx));
74
+ const partiallySignedTransaction = await partiallySignTransactionMessageWithSigners(txMessage);
75
+ const txBytes = getTransactionCodec().encode(partiallySignedTransaction);
76
+ return {
77
+ orderAddress: orderSigner.address,
78
+ txBytes,
79
+ secretNumber,
80
+ };
81
+ }
82
+ //# sourceMappingURL=create-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-order.js","sourceRoot":"","sources":["../../../../../src/core/solana/dca/create-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { address, createSolanaRpc } from '@solana/kit';
2
+ import { getDefaultSolanaRPC } from './client.js';
3
+ import { logger } from '../../utils/logger.js';
4
+ /**
5
+ * Inspect Solana guards to find orders that are currently locked on-chain.
6
+ * @param userAddress - The user's Solana address
7
+ * @param config - The Solana RPC configuration
8
+ * @returns An object containing the Solana guard programs for cross-chain and single-chain orders
9
+ */
10
+ export async function getSolanaOrdersWithLockedFunds(userAddress, config) {
11
+ const rpc = config?.rpcUrl ? createSolanaRpc(config.rpcUrl) : getDefaultSolanaRPC();
12
+ // const singleChainGuardAddress = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana];
13
+ const programAccountAddress = address('43cctGU9QJ4WEPzLoNEvo3TPiv6nMUG9puN2pXQSnB6V');
14
+ const programAccountsConfig = {
15
+ encoding: 'base64',
16
+ filters: [
17
+ {
18
+ memcmp: {
19
+ offset: 8n,
20
+ encoding: 'base58',
21
+ bytes: userAddress,
22
+ },
23
+ },
24
+ ],
25
+ };
26
+ logger.info(`Fetching cross-chain guard programs for user: ${userAddress}`);
27
+ const crossChainGuardPrograms = await rpc.getProgramAccounts(programAccountAddress, programAccountsConfig).send();
28
+ logger.info(`Found ${crossChainGuardPrograms.length} cross-chain guard programs`);
29
+ // const singleChainGuardPrograms = await rpc.getProgramAccounts(address(singleChainGuardAddress), programAccountsConfig).send();
30
+ // const crossChainCodec = getOrderCodec();
31
+ // const singleChainCodec = getLimitOrderCodec();
32
+ // const base64Encoder = getBase64Encoder();
33
+ const crossChainGuardProgramsWithOrders = crossChainGuardPrograms.map(({ pubkey, account }) => {
34
+ logger.info(`Account data: ${account} and pubkey: ${pubkey}`);
35
+ return {
36
+ pubkey,
37
+ };
38
+ });
39
+ return {
40
+ crossChainGuardPrograms: crossChainGuardProgramsWithOrders,
41
+ };
42
+ }
43
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../../src/core/solana/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,WAAmB,EAAE,MAA4B;IACpG,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAEpF,gFAAgF;IAEhF,MAAM,qBAAqB,GAAG,OAAO,CAAC,8CAA8C,CAAC,CAAC;IACtF,MAAM,qBAAqB,GAAG;QAC5B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE;YACP;gBACE,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,WAAiC;iBACzC;aACF;SACF;KACmB,CAAC;IAEvB,MAAM,CAAC,IAAI,CAAC,iDAAiD,WAAW,EAAE,CAAC,CAAC;IAC5E,MAAM,uBAAuB,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;IAClH,MAAM,CAAC,IAAI,CAAC,SAAS,uBAAuB,CAAC,MAAM,6BAA6B,CAAC,CAAC;IAClF,iIAAiI;IAEjI,2CAA2C;IAC3C,iDAAiD;IACjD,4CAA4C;IAE5C,MAAM,iCAAiC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5F,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,gBAAgB,MAAM,EAAE,CAAC,CAAC;QAE9D,OAAO;YACL,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,uBAAuB,EAAE,iCAAiC;KAC3D,CAAC;AACJ,CAAC"}