@debridge-finance/borderless-validation-sdk 0.4.1 → 0.5.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 (159) hide show
  1. package/dist/cjs/helpers/solana-hook-instructions.js +66 -0
  2. package/dist/cjs/helpers/solana-hook-instructions.js.map +1 -0
  3. package/dist/cjs/helpers/solana-instruction.js +5 -1
  4. package/dist/cjs/helpers/solana-instruction.js.map +1 -1
  5. package/dist/cjs/helpers/solana-intent-id.js +11 -1
  6. package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
  7. package/dist/cjs/helpers/solana-intent-instruction.js +106 -0
  8. package/dist/cjs/helpers/solana-intent-instruction.js.map +1 -0
  9. package/dist/cjs/types/enums.js +2 -8
  10. package/dist/cjs/types/enums.js.map +1 -1
  11. package/dist/cjs/types/response.js +12 -2
  12. package/dist/cjs/types/response.js.map +1 -1
  13. package/dist/cjs/types/validation.js +30 -0
  14. package/dist/cjs/types/validation.js.map +1 -1
  15. package/dist/cjs/validations/evm-required-actions.js +2 -0
  16. package/dist/cjs/validations/evm-required-actions.js.map +1 -1
  17. package/dist/cjs/validations/evm-sign712-shared.js +2 -5
  18. package/dist/cjs/validations/evm-sign712-shared.js.map +1 -1
  19. package/dist/cjs/validations/evm-transaction-scope.js +29 -0
  20. package/dist/cjs/validations/evm-transaction-scope.js.map +1 -0
  21. package/dist/cjs/validations/hooks-common.js +18 -15
  22. package/dist/cjs/validations/hooks-common.js.map +1 -1
  23. package/dist/cjs/validations/low-input-sweep-bundle.js +94 -0
  24. package/dist/cjs/validations/low-input-sweep-bundle.js.map +1 -0
  25. package/dist/cjs/validations/low-input-sweep-hook.js +204 -0
  26. package/dist/cjs/validations/low-input-sweep-hook.js.map +1 -0
  27. package/dist/cjs/validations/low-input-sweep.js +294 -0
  28. package/dist/cjs/validations/low-input-sweep.js.map +1 -0
  29. package/dist/cjs/validations/on-chain-intent-submission.js +16 -5
  30. package/dist/cjs/validations/on-chain-intent-submission.js.map +1 -1
  31. package/dist/cjs/validations/ptp.js +13 -15
  32. package/dist/cjs/validations/ptp.js.map +1 -1
  33. package/dist/cjs/validations/solana-embedded-intent.js +187 -0
  34. package/dist/cjs/validations/solana-embedded-intent.js.map +1 -0
  35. package/dist/cjs/validations/solana-hook.js +1 -1
  36. package/dist/cjs/validations/solana-hook.js.map +1 -1
  37. package/dist/cjs/validations/solana-intent-accounts.js +99 -0
  38. package/dist/cjs/validations/solana-intent-accounts.js.map +1 -0
  39. package/dist/cjs/validations/solana-low-input-sweep.js +251 -0
  40. package/dist/cjs/validations/solana-low-input-sweep.js.map +1 -0
  41. package/dist/cjs/validations/solana-required-actions.js +6 -2
  42. package/dist/cjs/validations/solana-required-actions.js.map +1 -1
  43. package/dist/cjs/validations/solana-transaction.js +25 -5
  44. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  45. package/dist/cjs/validations/trade-grouping.js +23 -26
  46. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  47. package/dist/cjs/validations/trade-matching.js +21 -13
  48. package/dist/cjs/validations/trade-matching.js.map +1 -1
  49. package/dist/cjs/validations/trades.js +33 -20
  50. package/dist/cjs/validations/trades.js.map +1 -1
  51. package/dist/cjs/validator.js +14 -5
  52. package/dist/cjs/validator.js.map +1 -1
  53. package/dist/cjs/whitelists/environment-config.js +39 -0
  54. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  55. package/dist/cjs/whitelists/types.js.map +1 -1
  56. package/dist/esm/helpers/solana-hook-instructions.js +63 -0
  57. package/dist/esm/helpers/solana-hook-instructions.js.map +1 -0
  58. package/dist/esm/helpers/solana-instruction.js +4 -0
  59. package/dist/esm/helpers/solana-instruction.js.map +1 -1
  60. package/dist/esm/helpers/solana-intent-id.js +10 -1
  61. package/dist/esm/helpers/solana-intent-id.js.map +1 -1
  62. package/dist/esm/helpers/solana-intent-instruction.js +98 -0
  63. package/dist/esm/helpers/solana-intent-instruction.js.map +1 -0
  64. package/dist/esm/types/enums.js +0 -6
  65. package/dist/esm/types/enums.js.map +1 -1
  66. package/dist/esm/types/response.js +12 -2
  67. package/dist/esm/types/response.js.map +1 -1
  68. package/dist/esm/types/validation.js +30 -0
  69. package/dist/esm/types/validation.js.map +1 -1
  70. package/dist/esm/validations/evm-required-actions.js +2 -0
  71. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  72. package/dist/esm/validations/evm-sign712-shared.js +2 -5
  73. package/dist/esm/validations/evm-sign712-shared.js.map +1 -1
  74. package/dist/esm/validations/evm-transaction-scope.js +26 -0
  75. package/dist/esm/validations/evm-transaction-scope.js.map +1 -0
  76. package/dist/esm/validations/hooks-common.js +18 -15
  77. package/dist/esm/validations/hooks-common.js.map +1 -1
  78. package/dist/esm/validations/low-input-sweep-bundle.js +91 -0
  79. package/dist/esm/validations/low-input-sweep-bundle.js.map +1 -0
  80. package/dist/esm/validations/low-input-sweep-hook.js +201 -0
  81. package/dist/esm/validations/low-input-sweep-hook.js.map +1 -0
  82. package/dist/esm/validations/low-input-sweep.js +291 -0
  83. package/dist/esm/validations/low-input-sweep.js.map +1 -0
  84. package/dist/esm/validations/on-chain-intent-submission.js +17 -6
  85. package/dist/esm/validations/on-chain-intent-submission.js.map +1 -1
  86. package/dist/esm/validations/ptp.js +13 -15
  87. package/dist/esm/validations/ptp.js.map +1 -1
  88. package/dist/esm/validations/solana-embedded-intent.js +184 -0
  89. package/dist/esm/validations/solana-embedded-intent.js.map +1 -0
  90. package/dist/esm/validations/solana-hook.js +2 -2
  91. package/dist/esm/validations/solana-hook.js.map +1 -1
  92. package/dist/esm/validations/solana-intent-accounts.js +95 -0
  93. package/dist/esm/validations/solana-intent-accounts.js.map +1 -0
  94. package/dist/esm/validations/solana-low-input-sweep.js +248 -0
  95. package/dist/esm/validations/solana-low-input-sweep.js.map +1 -0
  96. package/dist/esm/validations/solana-required-actions.js +6 -2
  97. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  98. package/dist/esm/validations/solana-transaction.js +25 -5
  99. package/dist/esm/validations/solana-transaction.js.map +1 -1
  100. package/dist/esm/validations/trade-grouping.js +23 -26
  101. package/dist/esm/validations/trade-grouping.js.map +1 -1
  102. package/dist/esm/validations/trade-matching.js +21 -13
  103. package/dist/esm/validations/trade-matching.js.map +1 -1
  104. package/dist/esm/validations/trades.js +33 -20
  105. package/dist/esm/validations/trades.js.map +1 -1
  106. package/dist/esm/validator.js +14 -5
  107. package/dist/esm/validator.js.map +1 -1
  108. package/dist/esm/whitelists/environment-config.js +39 -0
  109. package/dist/esm/whitelists/environment-config.js.map +1 -1
  110. package/dist/esm/whitelists/types.js.map +1 -1
  111. package/dist/types/helpers/solana-hook-instructions.d.ts +14 -0
  112. package/dist/types/helpers/solana-hook-instructions.d.ts.map +1 -0
  113. package/dist/types/helpers/solana-instruction.d.ts +3 -0
  114. package/dist/types/helpers/solana-instruction.d.ts.map +1 -1
  115. package/dist/types/helpers/solana-intent-id.d.ts +5 -0
  116. package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
  117. package/dist/types/helpers/solana-intent-instruction.d.ts +34 -0
  118. package/dist/types/helpers/solana-intent-instruction.d.ts.map +1 -0
  119. package/dist/types/types/enums.d.ts +0 -4
  120. package/dist/types/types/enums.d.ts.map +1 -1
  121. package/dist/types/types/response.d.ts +71 -1
  122. package/dist/types/types/response.d.ts.map +1 -1
  123. package/dist/types/types/validation.d.ts +29 -0
  124. package/dist/types/types/validation.d.ts.map +1 -1
  125. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  126. package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -1
  127. package/dist/types/validations/evm-transaction-scope.d.ts +3 -0
  128. package/dist/types/validations/evm-transaction-scope.d.ts.map +1 -0
  129. package/dist/types/validations/hooks-common.d.ts +2 -1
  130. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  131. package/dist/types/validations/low-input-sweep-bundle.d.ts +3 -0
  132. package/dist/types/validations/low-input-sweep-bundle.d.ts.map +1 -0
  133. package/dist/types/validations/low-input-sweep-hook.d.ts +9 -0
  134. package/dist/types/validations/low-input-sweep-hook.d.ts.map +1 -0
  135. package/dist/types/validations/low-input-sweep.d.ts +15 -0
  136. package/dist/types/validations/low-input-sweep.d.ts.map +1 -0
  137. package/dist/types/validations/on-chain-intent-submission.d.ts.map +1 -1
  138. package/dist/types/validations/ptp.d.ts +3 -2
  139. package/dist/types/validations/ptp.d.ts.map +1 -1
  140. package/dist/types/validations/solana-embedded-intent.d.ts +3 -0
  141. package/dist/types/validations/solana-embedded-intent.d.ts.map +1 -0
  142. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  143. package/dist/types/validations/solana-intent-accounts.d.ts +14 -0
  144. package/dist/types/validations/solana-intent-accounts.d.ts.map +1 -0
  145. package/dist/types/validations/solana-low-input-sweep.d.ts +9 -0
  146. package/dist/types/validations/solana-low-input-sweep.d.ts.map +1 -0
  147. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  148. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  149. package/dist/types/validations/trade-grouping.d.ts +1 -1
  150. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  151. package/dist/types/validations/trade-matching.d.ts +1 -1
  152. package/dist/types/validations/trade-matching.d.ts.map +1 -1
  153. package/dist/types/validations/trades.d.ts +1 -1
  154. package/dist/types/validations/trades.d.ts.map +1 -1
  155. package/dist/types/validator.d.ts.map +1 -1
  156. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  157. package/dist/types/whitelists/types.d.ts +1 -0
  158. package/dist/types/whitelists/types.d.ts.map +1 -1
  159. package/package.json +1 -1
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSolanaEmbeddedIntentActions = validateSolanaEmbeddedIntentActions;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const viem_1 = require("viem");
6
+ const types_1 = require("../types");
7
+ const solana_intent_id_1 = require("../helpers/solana-intent-id");
8
+ const solana_transaction_decode_1 = require("../helpers/solana-transaction-decode");
9
+ const solana_instruction_1 = require("../helpers/solana-instruction");
10
+ const solana_intent_instruction_1 = require("../helpers/solana-intent-instruction");
11
+ const solana_intent_accounts_1 = require("./solana-intent-accounts");
12
+ // CRITICAL: embedded transactions must create the same intent that was validated
13
+ // against the request. This also checks a quote's executable payload when present;
14
+ // an absent quote payload or a separate Sign action does not require an embedded one.
15
+ function validateSolanaEmbeddedIntentActions(actions, basePath, realChainId, intent, intentProgram) {
16
+ return actions.flatMap((action, i) => {
17
+ if (!action.actions.includes(types_1.SolanaActionOperation.Intent)
18
+ || (action.type !== types_1.SolanaActionKind.Transaction
19
+ && action.type !== types_1.SolanaActionKind.SignTransaction))
20
+ return [];
21
+ return validateEmbeddedIntentAction(action, `${basePath}.requiredActions[${i}].data.data`, realChainId, intent, intentProgram);
22
+ });
23
+ }
24
+ function validateEmbeddedIntentAction(action, path, realChainId, intent, intentProgram) {
25
+ const decoded = (0, solana_transaction_decode_1.decodeSolanaVersionedTransaction)(action.data.data, path, types_1.ViolationCode.SolanaTransactionDecodeError, types_1.ViolationCode.SolanaTransactionVersionInvalid);
26
+ if (!decoded.ok)
27
+ return decoded.violations;
28
+ let expected;
29
+ try {
30
+ expected = buildExpectedIntent(intent, realChainId, intentProgram);
31
+ }
32
+ catch (error) {
33
+ return [{
34
+ code: types_1.ViolationCode.SolanaEmbeddedIntentComputeError,
35
+ message: "cannot derive the expected embedded Solana intent",
36
+ path,
37
+ details: error,
38
+ }];
39
+ }
40
+ return validateInstructions(decoded.transaction, expected, path);
41
+ }
42
+ function buildExpectedIntent(intent, realChainId, intentProgram) {
43
+ const encoded = (0, solana_intent_id_1.encodeSolanaIntent)(intent, realChainId, intentProgram);
44
+ const program = new web3_js_1.PublicKey(intentProgram);
45
+ const maker = new web3_js_1.PublicKey(intent.intentOwner);
46
+ const derive = (seed, ...seeds) => web3_js_1.PublicKey.findProgramAddressSync([new TextEncoder().encode(seed), ...seeds], program)[0].toBase58();
47
+ return {
48
+ ...encoded,
49
+ space: (0, solana_intent_instruction_1.getSolanaIntentInitialSpace)(encoded.serializedIntent.length, (intent.inputToken ?? []).length),
50
+ accounts: {
51
+ program: program.toBase58(),
52
+ maker: maker.toBase58(),
53
+ makerInfo: derive("maker_info", maker.toBytes()),
54
+ state: derive("state"),
55
+ intentStorage: derive("intent_storage", encoded.intentId),
56
+ eventAuthority: derive("__event_authority"),
57
+ },
58
+ };
59
+ }
60
+ // HIGH: initialize exactly once, then seal exactly once. An inline update carries
61
+ // the entire intent; it is not a chunk to be appended. Repeated updates cannot
62
+ // overwrite a sealed intent, and extra initializations can allocate other storage.
63
+ function validateInstructions(transaction, expected, path) {
64
+ const unresolvedPrograms = transaction.message.compiledInstructions.flatMap((instruction, i) => transaction.message.staticAccountKeys[instruction.programIdIndex] === undefined
65
+ ? [i]
66
+ : []);
67
+ // HIGH: do not classify instructions whose program is unresolved. This also
68
+ // preserves the original instruction indices when resolving account operands.
69
+ if (unresolvedPrograms.length > 0) {
70
+ return [{
71
+ code: types_1.ViolationCode.SolanaIntentInstructionAccountsUnresolved,
72
+ message: "embedded intent transaction contains unresolved instruction programs",
73
+ path,
74
+ actual: { instructionIndices: unresolvedPrograms },
75
+ }];
76
+ }
77
+ const resolved = (0, solana_instruction_1.resolveInstructions)(transaction.message.compiledInstructions, transaction.message.staticAccountKeys.map(key => key.toBase58()));
78
+ const program = expected.accounts.program;
79
+ const initIndices = resolved.flatMap((instruction, i) => (0, solana_instruction_1.isInitIntentInstruction)(instruction, program) ? [i] : []);
80
+ const updateIndices = resolved.flatMap((instruction, i) => (0, solana_instruction_1.isUpdateIntentInstruction)(instruction, program) ? [i] : []);
81
+ return validateIntentSequence(transaction, resolved, initIndices, updateIndices, expected, path);
82
+ }
83
+ function validateIntentSequence(transaction, resolved, initIndices, updateIndices, expected, path) {
84
+ if (initIndices.length !== 1
85
+ || updateIndices.length !== 1
86
+ || initIndices[0] >= updateIndices[0]) {
87
+ return [{
88
+ code: types_1.ViolationCode.SolanaIntentInstructionSequenceInvalid,
89
+ message: "embedded intent requires one initialization followed by one complete update",
90
+ path,
91
+ actual: { initIndices, updateIndices },
92
+ }];
93
+ }
94
+ return [
95
+ ...validateInit(transaction, resolved[initIndices[0]], initIndices[0], expected, path),
96
+ ...validateUpdate(transaction, resolved[updateIndices[0]], updateIndices[0], expected, path),
97
+ ];
98
+ }
99
+ function validateInit(transaction, instruction, instructionIndex, expected, path) {
100
+ try {
101
+ const data = (0, solana_intent_instruction_1.readSolanaInitIntent)(instruction);
102
+ return [
103
+ ...validateInitData(data, expected, path, instructionIndex),
104
+ ...(0, solana_intent_accounts_1.validateSolanaInitIntentAccounts)(transaction, instructionIndex, data.kind, expected.accounts, path),
105
+ ];
106
+ }
107
+ catch (error) {
108
+ return invalidInstruction(path, instructionIndex, error);
109
+ }
110
+ }
111
+ // CRITICAL: the initialization hash commits to the checked intent. Its allocation
112
+ // must match that intent's storage budget, not an arbitrary rent expense.
113
+ function validateInitData(data, expected, path, instructionIndex) {
114
+ const violations = [];
115
+ if (!bytesEqual(data.encodedIntentHash, expected.encodedIntentHash)) {
116
+ violations.push({
117
+ code: types_1.ViolationCode.SolanaIntentInstructionHashMismatch,
118
+ message: "initialization hash does not match the checked intent",
119
+ path,
120
+ expected: (0, viem_1.bytesToHex)(expected.encodedIntentHash),
121
+ actual: (0, viem_1.bytesToHex)(data.encodedIntentHash),
122
+ details: { instructionIndex },
123
+ });
124
+ }
125
+ if (data.space !== expected.space) {
126
+ violations.push({
127
+ code: types_1.ViolationCode.SolanaIntentInstructionSpaceMismatch,
128
+ message: "initialization allocation does not match the checked intent storage budget",
129
+ path,
130
+ expected: expected.space,
131
+ actual: data.space,
132
+ details: { instructionIndex },
133
+ });
134
+ }
135
+ return violations;
136
+ }
137
+ function validateUpdate(transaction, instruction, instructionIndex, expected, path) {
138
+ try {
139
+ const data = (0, solana_intent_instruction_1.readSolanaUpdateIntent)(instruction);
140
+ // CRITICAL: a reference to external account bytes is not proof of their
141
+ // contents. Reject this unverifiable representation rather than accepting
142
+ // a hash alone; inline updates supply the full payload for comparison.
143
+ if (data.origin === solana_intent_instruction_1.SolanaIntentDataOrigin.Buffer) {
144
+ return [{
145
+ code: types_1.ViolationCode.SolanaIntentUpdateBufferUnverifiable,
146
+ message: "external-buffer intent update cannot be verified from the bundle response",
147
+ path,
148
+ actual: { origin: solana_intent_instruction_1.SolanaIntentDataOrigin[data.origin], offset: data.offset, length: data.length },
149
+ details: { instructionIndex },
150
+ }];
151
+ }
152
+ return [
153
+ ...validateUpdateData(data.data, expected.serializedIntent, path, instructionIndex),
154
+ ...(0, solana_intent_accounts_1.validateSolanaUpdateIntentAccounts)(transaction, instructionIndex, expected.accounts, path),
155
+ ];
156
+ }
157
+ catch (error) {
158
+ return invalidInstruction(path, instructionIndex, error);
159
+ }
160
+ }
161
+ // CRITICAL: the complete update payload must encode the checked intent, not just
162
+ // start with an allowed discriminator. Chunking into different transactions is
163
+ // not inferred from labels; the update must itself contain the complete bytes.
164
+ function validateUpdateData(actual, expected, path, instructionIndex) {
165
+ if (bytesEqual(actual, expected))
166
+ return [];
167
+ return [{
168
+ code: types_1.ViolationCode.SolanaIntentInstructionDataMismatch,
169
+ message: "embedded update payload does not match the checked intent",
170
+ path,
171
+ expected: (0, viem_1.bytesToHex)(expected),
172
+ actual: (0, viem_1.bytesToHex)(actual),
173
+ details: { instructionIndex },
174
+ }];
175
+ }
176
+ function invalidInstruction(path, instructionIndex, error) {
177
+ return [{
178
+ code: types_1.ViolationCode.SolanaIntentInstructionDataInvalid,
179
+ message: "embedded intent instruction data or accounts could not be decoded",
180
+ path,
181
+ details: { instructionIndex, error },
182
+ }];
183
+ }
184
+ function bytesEqual(actual, expected) {
185
+ return actual.length === expected.length && actual.every((byte, i) => byte === expected[i]);
186
+ }
187
+ //# sourceMappingURL=solana-embedded-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-embedded-intent.js","sourceRoot":"","sources":["../../../src/validations/solana-embedded-intent.ts"],"names":[],"mappings":"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"}
@@ -307,7 +307,7 @@ function isSplTransferChecked(ix) {
307
307
  if (ix.programId !== programs_1.SPL_TOKEN_PROGRAM && ix.programId !== programs_1.SPL_TOKEN_2022_PROGRAM) {
308
308
  return false;
309
309
  }
310
- return ix.data.length >= 10 && ix.data[0] === 12;
310
+ return ix.data.length >= 10 && ix.data[0] === solana_instruction_1.SPL_TRANSFER_CHECKED_DISCRIMINATOR;
311
311
  }
312
312
  function truncateHex(hex) {
313
313
  if (hex.length <= 20)
@@ -1 +1 @@
1
- {"version":3,"file":"solana-hook.js","sourceRoot":"","sources":["../../../src/validations/solana-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solana-hook.js","sourceRoot":"","sources":["../../../src/validations/solana-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSolanaInitIntentAccounts = validateSolanaInitIntentAccounts;
4
+ exports.validateSolanaUpdateIntentAccounts = validateSolanaUpdateIntentAccounts;
5
+ const types_1 = require("../types");
6
+ const solana_intent_instruction_1 = require("../helpers/solana-intent-instruction");
7
+ const programs_1 = require("../whitelists/solana/programs");
8
+ // CRITICAL: bind init accounts to the maker and the storage PDA of this intent.
9
+ // Rent payers are not whitelisted; only the privileges needed by the instruction
10
+ // are required. Delegated initialization additionally binds the maker-info PDA;
11
+ // authorization of its delegate is enforced by the program's maker-info state.
12
+ function validateSolanaInitIntentAccounts(transaction, instructionIndex, kind, accounts, path) {
13
+ const usesSignature = (0, solana_intent_instruction_1.isSignatureInit)(kind);
14
+ const maker = { name: "maker", address: accounts.maker };
15
+ const authorization = (0, solana_intent_instruction_1.isDelegateInit)(kind)
16
+ ? [
17
+ {
18
+ name: "delegate",
19
+ ...(usesSignature ? {} : { signer: true })
20
+ },
21
+ maker,
22
+ {
23
+ name: "makerInfo",
24
+ address: accounts.makerInfo,
25
+ ...(usesSignature ? {} : { writable: true })
26
+ },
27
+ ]
28
+ : [{ ...maker, ...(usesSignature ? {} : { signer: true }) }];
29
+ return validateInstructionAccounts(transaction, instructionIndex, [
30
+ ...authorization,
31
+ { name: "rentPayer", signer: true, writable: true },
32
+ { name: "state", address: accounts.state },
33
+ { name: "intentStorage", address: accounts.intentStorage, writable: true },
34
+ ...programAccounts(accounts),
35
+ ], path);
36
+ }
37
+ // CRITICAL: an inline update must seal the same storage account as initialization.
38
+ // The program ID occupies Anchor's absent optional buffer-account slot.
39
+ function validateSolanaUpdateIntentAccounts(transaction, instructionIndex, accounts, path) {
40
+ const [systemProgram, eventAuthority, program] = programAccounts(accounts);
41
+ return validateInstructionAccounts(transaction, instructionIndex, [
42
+ { name: "rentPayer", signer: true, writable: true },
43
+ { name: "state", address: accounts.state },
44
+ { name: "intentStorage", address: accounts.intentStorage, writable: true },
45
+ systemProgram,
46
+ { name: "buffer", address: accounts.program },
47
+ eventAuthority,
48
+ program,
49
+ ], path);
50
+ }
51
+ function programAccounts(accounts) {
52
+ return [
53
+ { name: "systemProgram", address: programs_1.SYSTEM_PROGRAM },
54
+ { name: "eventAuthority", address: accounts.eventAuthority },
55
+ { name: "program", address: accounts.program },
56
+ ];
57
+ }
58
+ // HIGH: reject missing or extra operands rather than silently ignoring accounts.
59
+ function validateInstructionAccounts(transaction, instructionIndex, expected, path) {
60
+ const accountIndices = transaction.message.compiledInstructions[instructionIndex].accountKeyIndexes;
61
+ if (accountIndices.length !== expected.length) {
62
+ return [{
63
+ code: types_1.ViolationCode.SolanaIntentInstructionAccountsMismatch,
64
+ message: "intent instruction account count does not match its layout",
65
+ path,
66
+ expected: expected.length,
67
+ actual: accountIndices.length,
68
+ details: { instructionIndex },
69
+ }];
70
+ }
71
+ return expected.flatMap((account, i) => validateAccount(transaction, accountIndices[i], account, path, instructionIndex, i));
72
+ }
73
+ // CRITICAL: account identity and required signer/writable privileges must match.
74
+ // Other instructions can promote shared accounts to signer/writable, so additional
75
+ // privileges are not rejected merely because this instruction does not need them.
76
+ function validateAccount(transaction, keyIndex, expected, path, instructionIndex, accountIndex) {
77
+ const message = transaction.message;
78
+ const address = message.staticAccountKeys[keyIndex]?.toBase58();
79
+ const signer = message.isAccountSigner(keyIndex);
80
+ const writable = message.isAccountWritable(keyIndex);
81
+ if (address !== undefined
82
+ && (expected.address === undefined || address === expected.address)
83
+ && (!expected.signer || signer)
84
+ && (!expected.writable || writable))
85
+ return [];
86
+ return [{
87
+ code: types_1.ViolationCode.SolanaIntentInstructionAccountsMismatch,
88
+ message: "intent instruction account identity or required privileges do not match",
89
+ path,
90
+ expected: { address: expected.address, signer: expected.signer, writable: expected.writable },
91
+ actual: {
92
+ address,
93
+ signer: expected.signer ? signer : undefined,
94
+ writable: expected.writable ? writable : undefined,
95
+ },
96
+ details: { instructionIndex, accountIndex, account: expected.name },
97
+ }];
98
+ }
99
+ //# sourceMappingURL=solana-intent-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-intent-accounts.js","sourceRoot":"","sources":["../../../src/validations/solana-intent-accounts.ts"],"names":[],"mappings":";;AAyBA,4EA+BC;AAID,gFAiBC;AA5ED,oCAAoD;AACpD,oFAA6G;AAC7G,4DAA+D;AAkB/D,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,SAAgB,gCAAgC,CAC5C,WAAiC,EACjC,gBAAwB,EACxB,IAA0B,EAC1B,QAA8B,EAC9B,IAAY;IAEZ,MAAM,aAAa,GAAG,IAAA,2CAAe,EAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1E,MAAM,aAAa,GAAsB,IAAA,0CAAc,EAAC,IAAI,CAAC;QACzD,CAAC,CAAC;YACE;gBACI,IAAI,EAAE,UAAU;gBAChB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAa,EAAE,CAAC;aACtD;YACD,KAAK;YACL;gBACI,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,QAAQ,CAAC,SAAS;gBAC3B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;aACxD;SACJ;QACD,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO,2BAA2B,CAAC,WAAW,EAAE,gBAAgB,EAAE;QAC9D,GAAG,aAAa;QAChB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE;QAC1C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1E,GAAG,eAAe,CAAC,QAAQ,CAAC;KAC/B,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,wEAAwE;AACxE,SAAgB,kCAAkC,CAC9C,WAAiC,EACjC,gBAAwB,EACxB,QAA8B,EAC9B,IAAY;IAEZ,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE3E,OAAO,2BAA2B,CAAC,WAAW,EAAE,gBAAgB,EAAE;QAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE;QAC1C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1E,aAAa;QACb,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;QAC7C,cAAc;QACd,OAAO;KACV,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,QAA8B;IACnD,OAAO;QACH,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,yBAAc,EAAE;QAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE;QAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;KACjD,CAAC;AACN,CAAC;AAED,iFAAiF;AACjF,SAAS,2BAA2B,CAChC,WAAiC,EACjC,gBAAwB,EACxB,QAA2B,EAC3B,IAAY;IAEZ,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,CAAC;IAEpG,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC;gBACJ,IAAI,EAAE,qBAAa,CAAC,uCAAuC;gBAC3D,OAAO,EAAE,4DAA4D;gBACrE,IAAI;gBACJ,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,OAAO,EAAE,EAAE,gBAAgB,EAAE;aAChC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CACnD,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CACrE,CAAC,CAAC;AACP,CAAC;AAED,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,SAAS,eAAe,CACpB,WAAiC,EACjC,QAAgB,EAChB,QAAyB,EACzB,IAAY,EACZ,gBAAwB,EACxB,YAAoB;IAEpB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAErD,IACI,OAAO,KAAK,SAAS;WAClB,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;WAChE,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC;WAC5B,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACrC,OAAO,EAAE,CAAC;IAEZ,OAAO,CAAC;YACJ,IAAI,EAAE,qBAAa,CAAC,uCAAuC;YAC3D,OAAO,EAAE,yEAAyE;YAClF,IAAI;YACJ,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC7F,MAAM,EAAE;gBACJ,OAAO;gBACP,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC5C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aACrD;YACD,OAAO,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE;SACtE,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readSolanaSweepTransfer = readSolanaSweepTransfer;
4
+ const address_1 = require("../helpers/address");
5
+ const solana_instruction_1 = require("../helpers/solana-instruction");
6
+ const solana_hook_instructions_1 = require("../helpers/solana-hook-instructions");
7
+ const programs_1 = require("../whitelists/solana/programs");
8
+ // Checks whether the entire hook is an allowed transfer for this sweep.
9
+ // Returns `undefined` when the hook does not match.
10
+ // Recipient whitelisting is checked separately.
11
+ function readSolanaSweepTransfer(hook, sweep) {
12
+ // CRITICAL: an API-built Solana hook is not a trusted user-provided transaction.
13
+ // Decode every instruction before treating its bytes as the expected Hook payload.
14
+ try {
15
+ const decoded = (0, solana_hook_instructions_1.decodeSolanaHookInstructions)(hook.data);
16
+ // CRITICAL: additional signers must be readonly and used only by Memo.
17
+ if (!areSweepSignersAllowed(decoded, sweep))
18
+ return undefined;
19
+ // Collect matching transfers and retain their instruction indices.
20
+ // Non-matching instructions are checked separately below, not ignored.
21
+ const transfers = decoded.instructions.flatMap((instruction, index) => {
22
+ const transfer = readTransfer(instruction, sweep);
23
+ return transfer === undefined ? [] : [{ transfer, index }];
24
+ });
25
+ // CRITICAL: exactly one instruction must match this sweep's transfer.
26
+ if (transfers.length !== 1)
27
+ return undefined;
28
+ const { transfer, index } = transfers[0];
29
+ // CRITICAL: every remaining instruction must be an allowed memo,
30
+ // destination ATA creation, or source ATA close. This also rejects
31
+ // transfers that did not match the sweep.
32
+ if (!auxiliaryInstructionsMatch(decoded.instructions, index, transfer, sweep, decoded.feePayer))
33
+ return undefined;
34
+ return transfer;
35
+ }
36
+ catch {
37
+ // Malformed bytes/accounts cannot bind a sweep.
38
+ return undefined;
39
+ }
40
+ }
41
+ // The API currently adds one Memo co-signer. Intentionally, the SDK does not cap
42
+ // their number: additional base fees and dependence on every required signature
43
+ // are accepted risks. This checks signer roles, not API identity or signatures.
44
+ function areSweepSignersAllowed(decoded, sweep) {
45
+ return decoded.signers.every(signer => {
46
+ // Authority and fee payer may be writable and may also sign Memo.
47
+ if ((0, address_1.addressEquals)(sweep.realChainId, signer, sweep.sender)
48
+ || (0, address_1.addressEquals)(sweep.realChainId, signer, decoded.feePayer))
49
+ return true;
50
+ return isReadonlyMemoOnlySigner(decoded.instructions, signer, sweep.realChainId);
51
+ });
52
+ }
53
+ // Requires actual Memo use and rejects every other use of the additional signer,
54
+ // including as a program ID. Privileges are resolved from the complete message.
55
+ function isReadonlyMemoOnlySigner(instructions, signer, realChainId) {
56
+ let usedInMemo = false;
57
+ for (const instruction of instructions) {
58
+ // CRITICAL: an additional signer must not be used as an instruction's program ID.
59
+ if ((0, address_1.addressEquals)(realChainId, instruction.programId, signer))
60
+ return false;
61
+ for (let i = 0; i < instruction.accountKeys.length; i++) {
62
+ if (!(0, address_1.addressEquals)(realChainId, instruction.accountKeys[i], signer))
63
+ continue;
64
+ // CRITICAL: check every occurrence; writable privileges are global,
65
+ // and even a readonly account reference outside Memo is forbidden.
66
+ if (!(0, solana_instruction_1.isMemo)(instruction)
67
+ || !instruction.accountMetas[i].isSigner
68
+ || instruction.accountMetas[i].isWritable)
69
+ return false;
70
+ usedInMemo = true;
71
+ }
72
+ }
73
+ // HIGH: an unused required signer adds a signature without a permitted role.
74
+ return usedInMemo;
75
+ }
76
+ // Checks whether this instruction transfers the expected asset from the expected
77
+ // sender for the sweep amount. Returns `undefined` if the instruction does not match.
78
+ function readTransfer(instruction, sweep) {
79
+ if ((0, address_1.isNativeToken)(sweep.trade.srcChainTokenIn, sweep.realChainId)) {
80
+ // CRITICAL: native SOL must use a SystemProgram.Transfer from the request authority.
81
+ if (!(0, solana_instruction_1.isSystemTransfer)(instruction)
82
+ || instruction.data.length !== 12 // operation ID (4 bytes) + amount (8 bytes)
83
+ || instruction.accountKeys.length !== 2 // sender + recipient
84
+ )
85
+ return undefined;
86
+ // Index 0 - sender account. Index 1 - recipient account.
87
+ if (!(0, address_1.addressEquals)(sweep.realChainId, instruction.accountKeys[0], sweep.sender)
88
+ || !instruction.accountMetas[0].isSigner // sender must sign
89
+ || !instruction.accountMetas[0].isWritable // writable because balance decreases
90
+ || !instruction.accountMetas[1].isWritable // writable because balance increases
91
+ )
92
+ return undefined;
93
+ // Skip operation ID (4 bytes) and read the amount.
94
+ return readAmount(instruction.data, 4) === sweep.amount
95
+ ? { destinationAddress: instruction.accountKeys[1] }
96
+ : undefined;
97
+ }
98
+ return readTokenTransfer(instruction, sweep);
99
+ }
100
+ // Checks whether this instruction transfers the expected SPL token from the source
101
+ // authority's ATA for the sweep amount. Returns `undefined` if the instruction does not match.
102
+ function readTokenTransfer(instruction, sweep) {
103
+ // CRITICAL: only the SPL Token and Token-2022 programs may execute this transfer.
104
+ if (instruction.programId !== programs_1.SPL_TOKEN_PROGRAM
105
+ && instruction.programId !== programs_1.SPL_TOKEN_2022_PROGRAM)
106
+ return undefined;
107
+ const isTransferChecked = instruction.data[0] === solana_instruction_1.SPL_TRANSFER_CHECKED_DISCRIMINATOR;
108
+ if (!isTransferChecked && instruction.data[0] !== solana_instruction_1.SPL_TRANSFER_DISCRIMINATOR)
109
+ return undefined;
110
+ if (
111
+ // Operation ID (1 byte) + amount (8 bytes) + decimals (1 byte, TransferChecked only).
112
+ instruction.data.length !== (isTransferChecked ? 10 : 9)
113
+ || instruction.accountKeys.length !== (isTransferChecked ? 4 : 3) // TransferChecked also includes the mint.
114
+ )
115
+ return undefined;
116
+ // TransferChecked: source token account (0), mint (1), destination token account (2), authority (3).
117
+ // Transfer: source token account (0), destination token account (1), authority (2).
118
+ const destinationIndex = isTransferChecked ? 2 : 1;
119
+ const authorityIndex = isTransferChecked ? 3 : 2;
120
+ // CRITICAL: accept both Transfer and TransferChecked intentionally: the
121
+ // request-derived source ATA binds the mint even without an explicit mint
122
+ // operand. Multisig/extension accounts are not implicitly authorized.
123
+ const source = (0, solana_instruction_1.deriveAta)(sweep.sender, sweep.trade.srcChainTokenIn, instruction.programId);
124
+ const sourceTokenAccountIndex = 0;
125
+ if (!(0, address_1.addressEquals)(sweep.realChainId, instruction.accountKeys[sourceTokenAccountIndex], source)
126
+ || !(0, address_1.addressEquals)(sweep.realChainId, instruction.accountKeys[authorityIndex], sweep.sender)
127
+ || !instruction.accountMetas[authorityIndex].isSigner // the source authority must sign
128
+ || !instruction.accountMetas[sourceTokenAccountIndex].isWritable // writable because balance decreases
129
+ || !instruction.accountMetas[destinationIndex].isWritable // writable because balance increases
130
+ )
131
+ return undefined;
132
+ // TransferChecked explicitly supplies the mint at index 1; it must match the request token.
133
+ if (isTransferChecked
134
+ && !(0, address_1.addressEquals)(sweep.realChainId, instruction.accountKeys[1], sweep.trade.srcChainTokenIn))
135
+ return undefined;
136
+ // TransferChecked decimals are checked against the bound mint on chain;
137
+ // they do not scale the raw amount and cannot authorize additional tokens.
138
+ // Skip operation ID (1 byte) and read the uint64 little-endian amount in token base units.
139
+ return readAmount(instruction.data, 1) === sweep.amount
140
+ ? {
141
+ destinationAddress: instruction.accountKeys[destinationIndex],
142
+ sourceTokenAccountAddress: source,
143
+ tokenProgram: instruction.programId,
144
+ }
145
+ : undefined;
146
+ }
147
+ // Checks every instruction except the matched transfer. Allows memos and at most
148
+ // one matching destination ATA creation before the transfer, and at most one
149
+ // matching source ATA close after the transfer. Returns false if any remaining
150
+ // instruction does not match these permitted forms.
151
+ function auxiliaryInstructionsMatch(instructions, transferIndex, transfer, sweep, feePayer) {
152
+ let createAtaCount = 0;
153
+ let closeAccountCount = 0;
154
+ for (let i = 0; i < instructions.length; i++) {
155
+ // The transfer itself has already been checked by `readTransfer`.
156
+ if (i === transferIndex)
157
+ continue;
158
+ const instruction = instructions[i];
159
+ // The Memo program cannot transfer funds. Memo accounts must be signers;
160
+ // only the source authority / fee payer may have writable privileges.
161
+ if (matchesSweepMemo(instruction, sweep, feePayer))
162
+ continue;
163
+ // CRITICAL: allow at most one destination ATA creation before the transfer.
164
+ // It may be needed when the recipient's ATA does not yet exist.
165
+ if (i < transferIndex
166
+ && matchesDestinationAtaCreation(instruction, transfer, sweep, feePayer)) {
167
+ if (++createAtaCount > 1)
168
+ return false;
169
+ continue;
170
+ }
171
+ // CRITICAL: closing is limited to the exact source ATA after the transfer,
172
+ // returning rent to the source authority. No other closes or fee instructions are allowed.
173
+ if (i > transferIndex && matchesSourceAtaClose(instruction, transfer, sweep)) {
174
+ if (++closeAccountCount > 1)
175
+ return false;
176
+ continue;
177
+ }
178
+ return false;
179
+ }
180
+ return true;
181
+ }
182
+ // Checks whether this is a memo with no accounts or only signer accounts.
183
+ // Additional signers must be readonly; authority / fee payer may be writable.
184
+ function matchesSweepMemo(instruction, sweep, feePayer) {
185
+ // HIGH: all accounts must sign, with writable privileges limited to the
186
+ // authority / fee payer. An empty list is valid: Memo need not name signers.
187
+ return (0, solana_instruction_1.isMemo)(instruction)
188
+ && instruction.accountKeys.every((address, index) => {
189
+ return instruction.accountMetas[index].isSigner
190
+ && ((0, address_1.addressEquals)(sweep.realChainId, address, sweep.sender)
191
+ || (0, address_1.addressEquals)(sweep.realChainId, address, feePayer)
192
+ || !instruction.accountMetas[index].isWritable);
193
+ });
194
+ }
195
+ // Checks whether this instruction idempotently creates the transfer's destination ATA.
196
+ // The fee payer may be the source authority, so this can spend the user's SOL on ATA rent.
197
+ // Returns false on a mismatch.
198
+ function matchesDestinationAtaCreation(instruction, transfer, sweep, feePayer) {
199
+ if (transfer.tokenProgram === undefined // Native SOL transfers do not use a destination ATA.
200
+ || !(0, solana_instruction_1.isCreateAtaIdempotent)(instruction)
201
+ || instruction.accountKeys.length !== 6 // payer, destination ATA, owner, mint, System Program, token program
202
+ )
203
+ return false;
204
+ const [payer, destination, owner, mint, systemProgram, tokenProgram] = instruction.accountKeys;
205
+ if (!hasDestinationAtaCreationPrivileges(instruction))
206
+ return false;
207
+ // Funding must come from the transaction fee payer, not another account.
208
+ if (!(0, address_1.addressEquals)(sweep.realChainId, payer, feePayer))
209
+ return false;
210
+ // Bind the programs, mint and destination to this transfer, and verify that
211
+ // the supplied owner derives the same destination ATA for this mint/token program.
212
+ return systemProgram === programs_1.SYSTEM_PROGRAM
213
+ && tokenProgram === transfer.tokenProgram
214
+ && (0, address_1.addressEquals)(sweep.realChainId, mint, sweep.trade.srcChainTokenIn)
215
+ && (0, address_1.addressEquals)(sweep.realChainId, destination, transfer.destinationAddress)
216
+ && (0, address_1.addressEquals)(sweep.realChainId, destination, (0, solana_instruction_1.deriveAta)(owner, mint, tokenProgram));
217
+ }
218
+ function hasDestinationAtaCreationPrivileges(instruction) {
219
+ // CRITICAL: privileges are transaction-global, so owner/mint/program accounts
220
+ // may inherit signer/writable status from safe aliases such as user=recipient.
221
+ // Require only the capabilities needed by the ATA create instruction.
222
+ return instruction.accountMetas[0].isSigner // The payer must authorize funding the account.
223
+ && instruction.accountMetas[0].isWritable // The payer's SOL balance may decrease.
224
+ && instruction.accountMetas[1].isWritable; // The destination ATA may be initialized.
225
+ }
226
+ // Checks whether this closes the source ATA after the sweep transfer and returns rent
227
+ // to the source authority. Returns false for native SOL or any unbound account.
228
+ function matchesSourceAtaClose(instruction, transfer, sweep) {
229
+ if (transfer.sourceTokenAccountAddress === undefined
230
+ || transfer.tokenProgram === undefined
231
+ || instruction.programId !== transfer.tokenProgram
232
+ || instruction.data.length !== 1 // Operation ID (1 byte), with no additional instruction data.
233
+ || instruction.data[0] !== solana_instruction_1.SPL_CLOSE_ACCOUNT_DISCRIMINATOR
234
+ || instruction.accountKeys.length !== 3 // account, rent destination, close authority
235
+ )
236
+ return false;
237
+ const [account, destination, authority] = instruction.accountKeys;
238
+ // CRITICAL: CloseAccount may only close the source authority's ATA and must
239
+ // return its rent to the same authority. Privileges are transaction-global:
240
+ // only require needed writable/signer capabilities, not exact readonly aliases.
241
+ return (0, address_1.addressEquals)(sweep.realChainId, account, transfer.sourceTokenAccountAddress)
242
+ && (0, address_1.addressEquals)(sweep.realChainId, destination, sweep.sender)
243
+ && (0, address_1.addressEquals)(sweep.realChainId, authority, sweep.sender)
244
+ && instruction.accountMetas[0].isWritable // Source ATA: writable because the account is closed.
245
+ && instruction.accountMetas[1].isWritable // Rent destination: writable because its SOL balance increases.
246
+ && instruction.accountMetas[2].isSigner; // Close authority: must sign to authorize closing the account.
247
+ }
248
+ function readAmount(data, offset) {
249
+ return new DataView(data.buffer, data.byteOffset, data.byteLength).getBigUint64(offset, true);
250
+ }
251
+ //# sourceMappingURL=solana-low-input-sweep.js.map