@chainlink/ccip-sdk 0.91.1 → 0.92.1

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 (273) hide show
  1. package/README.md +127 -80
  2. package/dist/aptos/hasher.d.ts.map +1 -1
  3. package/dist/aptos/hasher.js +7 -6
  4. package/dist/aptos/hasher.js.map +1 -1
  5. package/dist/aptos/index.d.ts +7 -2
  6. package/dist/aptos/index.d.ts.map +1 -1
  7. package/dist/aptos/index.js +29 -20
  8. package/dist/aptos/index.js.map +1 -1
  9. package/dist/aptos/logs.d.ts +5 -3
  10. package/dist/aptos/logs.d.ts.map +1 -1
  11. package/dist/aptos/logs.js +64 -27
  12. package/dist/aptos/logs.js.map +1 -1
  13. package/dist/aptos/token.d.ts.map +1 -1
  14. package/dist/aptos/token.js +2 -1
  15. package/dist/aptos/token.js.map +1 -1
  16. package/dist/aptos/types.js +6 -6
  17. package/dist/aptos/types.js.map +1 -1
  18. package/dist/chain.d.ts +36 -11
  19. package/dist/chain.d.ts.map +1 -1
  20. package/dist/chain.js +34 -2
  21. package/dist/chain.js.map +1 -1
  22. package/dist/commits.d.ts +2 -3
  23. package/dist/commits.d.ts.map +1 -1
  24. package/dist/commits.js +19 -8
  25. package/dist/commits.js.map +1 -1
  26. package/dist/errors/CCIPError.d.ts +48 -0
  27. package/dist/errors/CCIPError.d.ts.map +1 -0
  28. package/dist/errors/CCIPError.js +65 -0
  29. package/dist/errors/CCIPError.js.map +1 -0
  30. package/dist/errors/codes.d.ts +120 -0
  31. package/dist/errors/codes.d.ts.map +1 -0
  32. package/dist/errors/codes.js +156 -0
  33. package/dist/errors/codes.js.map +1 -0
  34. package/dist/errors/index.d.ts +26 -0
  35. package/dist/errors/index.d.ts.map +1 -0
  36. package/dist/errors/index.js +51 -0
  37. package/dist/errors/index.js.map +1 -0
  38. package/dist/errors/recovery.d.ts +6 -0
  39. package/dist/errors/recovery.d.ts.map +1 -0
  40. package/dist/errors/recovery.js +118 -0
  41. package/dist/errors/recovery.js.map +1 -0
  42. package/dist/errors/specialized.d.ts +637 -0
  43. package/dist/errors/specialized.d.ts.map +1 -0
  44. package/dist/errors/specialized.js +1298 -0
  45. package/dist/errors/specialized.js.map +1 -0
  46. package/dist/errors/utils.d.ts +11 -0
  47. package/dist/errors/utils.d.ts.map +1 -0
  48. package/dist/errors/utils.js +61 -0
  49. package/dist/errors/utils.js.map +1 -0
  50. package/dist/evm/abi/CommitStore_1_5.js +1 -1
  51. package/dist/evm/abi/LockReleaseTokenPool_1_5.js +1 -1
  52. package/dist/evm/abi/OffRamp_1_5.js +1 -1
  53. package/dist/evm/abi/OnRamp_1_5.js +1 -1
  54. package/dist/evm/abi/PriceRegistry_1_2.d.ts +443 -0
  55. package/dist/evm/abi/PriceRegistry_1_2.d.ts.map +1 -0
  56. package/dist/evm/abi/PriceRegistry_1_2.js +439 -0
  57. package/dist/evm/abi/PriceRegistry_1_2.js.map +1 -0
  58. package/dist/evm/const.d.ts +1 -0
  59. package/dist/evm/const.d.ts.map +1 -1
  60. package/dist/evm/const.js +2 -0
  61. package/dist/evm/const.js.map +1 -1
  62. package/dist/evm/hasher.d.ts.map +1 -1
  63. package/dist/evm/hasher.js +7 -6
  64. package/dist/evm/hasher.js.map +1 -1
  65. package/dist/evm/index.d.ts +9 -13
  66. package/dist/evm/index.d.ts.map +1 -1
  67. package/dist/evm/index.js +85 -68
  68. package/dist/evm/index.js.map +1 -1
  69. package/dist/evm/logs.d.ts.map +1 -1
  70. package/dist/evm/logs.js +47 -16
  71. package/dist/evm/logs.js.map +1 -1
  72. package/dist/evm/messages.d.ts +7 -6
  73. package/dist/evm/messages.d.ts.map +1 -1
  74. package/dist/evm/offchain.js +1 -1
  75. package/dist/evm/offchain.js.map +1 -1
  76. package/dist/evm/types.d.ts +10 -0
  77. package/dist/evm/types.d.ts.map +1 -0
  78. package/dist/evm/types.js +2 -0
  79. package/dist/evm/types.js.map +1 -0
  80. package/dist/execution.d.ts.map +1 -1
  81. package/dist/execution.js +9 -5
  82. package/dist/execution.js.map +1 -1
  83. package/dist/extra-args.d.ts.map +1 -1
  84. package/dist/extra-args.js +4 -3
  85. package/dist/extra-args.js.map +1 -1
  86. package/dist/gas.d.ts.map +1 -1
  87. package/dist/gas.js +3 -2
  88. package/dist/gas.js.map +1 -1
  89. package/dist/hasher/hasher.d.ts.map +1 -1
  90. package/dist/hasher/hasher.js +2 -1
  91. package/dist/hasher/hasher.js.map +1 -1
  92. package/dist/hasher/merklemulti.d.ts.map +1 -1
  93. package/dist/hasher/merklemulti.js +9 -8
  94. package/dist/hasher/merklemulti.js.map +1 -1
  95. package/dist/index.d.ts +5 -2
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +6 -2
  98. package/dist/index.js.map +1 -1
  99. package/dist/offchain.d.ts.map +1 -1
  100. package/dist/offchain.js +5 -8
  101. package/dist/offchain.js.map +1 -1
  102. package/dist/requests.d.ts +1 -1
  103. package/dist/requests.d.ts.map +1 -1
  104. package/dist/requests.js +37 -43
  105. package/dist/requests.js.map +1 -1
  106. package/dist/selectors.d.ts.map +1 -1
  107. package/dist/selectors.js +22 -0
  108. package/dist/selectors.js.map +1 -1
  109. package/dist/solana/cleanup.d.ts +2 -2
  110. package/dist/solana/cleanup.d.ts.map +1 -1
  111. package/dist/solana/cleanup.js +2 -3
  112. package/dist/solana/cleanup.js.map +1 -1
  113. package/dist/solana/exec.d.ts.map +1 -1
  114. package/dist/solana/exec.js +12 -12
  115. package/dist/solana/exec.js.map +1 -1
  116. package/dist/solana/hasher.d.ts.map +1 -1
  117. package/dist/solana/hasher.js +6 -5
  118. package/dist/solana/hasher.js.map +1 -1
  119. package/dist/solana/index.d.ts +30 -13
  120. package/dist/solana/index.d.ts.map +1 -1
  121. package/dist/solana/index.js +96 -143
  122. package/dist/solana/index.js.map +1 -1
  123. package/dist/solana/logs.d.ts +15 -0
  124. package/dist/solana/logs.d.ts.map +1 -0
  125. package/dist/solana/logs.js +106 -0
  126. package/dist/solana/logs.js.map +1 -0
  127. package/dist/solana/offchain.d.ts.map +1 -1
  128. package/dist/solana/offchain.js +6 -5
  129. package/dist/solana/offchain.js.map +1 -1
  130. package/dist/solana/patchBorsh.d.ts.map +1 -1
  131. package/dist/solana/patchBorsh.js +3 -2
  132. package/dist/solana/patchBorsh.js.map +1 -1
  133. package/dist/solana/send.d.ts.map +1 -1
  134. package/dist/solana/send.js +8 -7
  135. package/dist/solana/send.js.map +1 -1
  136. package/dist/solana/utils.d.ts +7 -8
  137. package/dist/solana/utils.d.ts.map +1 -1
  138. package/dist/solana/utils.js +23 -11
  139. package/dist/solana/utils.js.map +1 -1
  140. package/dist/sui/discovery.d.ts +18 -0
  141. package/dist/sui/discovery.d.ts.map +1 -0
  142. package/dist/sui/discovery.js +116 -0
  143. package/dist/sui/discovery.js.map +1 -0
  144. package/dist/sui/events.d.ts +36 -0
  145. package/dist/sui/events.d.ts.map +1 -0
  146. package/dist/sui/events.js +176 -0
  147. package/dist/sui/events.js.map +1 -0
  148. package/dist/sui/hasher.d.ts.map +1 -1
  149. package/dist/sui/hasher.js +6 -5
  150. package/dist/sui/hasher.js.map +1 -1
  151. package/dist/sui/index.d.ts +69 -41
  152. package/dist/sui/index.d.ts.map +1 -1
  153. package/dist/sui/index.js +402 -65
  154. package/dist/sui/index.js.map +1 -1
  155. package/dist/sui/manuallyExec/encoder.d.ts +8 -0
  156. package/dist/sui/manuallyExec/encoder.d.ts.map +1 -0
  157. package/dist/sui/manuallyExec/encoder.js +76 -0
  158. package/dist/sui/manuallyExec/encoder.js.map +1 -0
  159. package/dist/sui/manuallyExec/index.d.ts +37 -0
  160. package/dist/sui/manuallyExec/index.d.ts.map +1 -0
  161. package/dist/sui/manuallyExec/index.js +81 -0
  162. package/dist/sui/manuallyExec/index.js.map +1 -0
  163. package/dist/sui/objects.d.ts +46 -0
  164. package/dist/sui/objects.d.ts.map +1 -0
  165. package/dist/sui/objects.js +259 -0
  166. package/dist/sui/objects.js.map +1 -0
  167. package/dist/ton/bindings/offramp.d.ts +48 -0
  168. package/dist/ton/bindings/offramp.d.ts.map +1 -0
  169. package/dist/ton/bindings/offramp.js +63 -0
  170. package/dist/ton/bindings/offramp.js.map +1 -0
  171. package/dist/ton/bindings/onramp.d.ts +40 -0
  172. package/dist/ton/bindings/onramp.d.ts.map +1 -0
  173. package/dist/ton/bindings/onramp.js +51 -0
  174. package/dist/ton/bindings/onramp.js.map +1 -0
  175. package/dist/ton/bindings/router.d.ts +47 -0
  176. package/dist/ton/bindings/router.d.ts.map +1 -0
  177. package/dist/ton/bindings/router.js +51 -0
  178. package/dist/ton/bindings/router.js.map +1 -0
  179. package/dist/ton/exec.d.ts +18 -0
  180. package/dist/ton/exec.d.ts.map +1 -0
  181. package/dist/ton/exec.js +28 -0
  182. package/dist/ton/exec.js.map +1 -0
  183. package/dist/ton/hasher.d.ts +27 -0
  184. package/dist/ton/hasher.d.ts.map +1 -0
  185. package/dist/ton/hasher.js +134 -0
  186. package/dist/ton/hasher.js.map +1 -0
  187. package/dist/ton/index.d.ts +247 -0
  188. package/dist/ton/index.d.ts.map +1 -0
  189. package/dist/ton/index.js +781 -0
  190. package/dist/ton/index.js.map +1 -0
  191. package/dist/ton/logs.d.ts +26 -0
  192. package/dist/ton/logs.d.ts.map +1 -0
  193. package/dist/ton/logs.js +126 -0
  194. package/dist/ton/logs.js.map +1 -0
  195. package/dist/ton/types.d.ts +37 -0
  196. package/dist/ton/types.d.ts.map +1 -0
  197. package/dist/ton/types.js +92 -0
  198. package/dist/ton/types.js.map +1 -0
  199. package/dist/ton/utils.d.ts +67 -0
  200. package/dist/ton/utils.d.ts.map +1 -0
  201. package/dist/ton/utils.js +425 -0
  202. package/dist/ton/utils.js.map +1 -0
  203. package/dist/types.d.ts +4 -2
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js +1 -0
  206. package/dist/types.js.map +1 -1
  207. package/dist/utils.d.ts +10 -0
  208. package/dist/utils.d.ts.map +1 -1
  209. package/dist/utils.js +52 -17
  210. package/dist/utils.js.map +1 -1
  211. package/package.json +11 -9
  212. package/src/aptos/hasher.ts +10 -6
  213. package/src/aptos/index.ts +50 -31
  214. package/src/aptos/logs.ts +85 -29
  215. package/src/aptos/token.ts +5 -1
  216. package/src/aptos/types.ts +6 -6
  217. package/src/chain.ts +83 -12
  218. package/src/commits.ts +23 -11
  219. package/src/errors/CCIPError.ts +86 -0
  220. package/src/errors/codes.ts +179 -0
  221. package/src/errors/index.ts +175 -0
  222. package/src/errors/recovery.ts +170 -0
  223. package/src/errors/specialized.ts +1655 -0
  224. package/src/errors/utils.ts +73 -0
  225. package/src/evm/abi/CommitStore_1_5.ts +1 -1
  226. package/src/evm/abi/LockReleaseTokenPool_1_5.ts +1 -1
  227. package/src/evm/abi/OffRamp_1_5.ts +1 -1
  228. package/src/evm/abi/OnRamp_1_5.ts +1 -1
  229. package/src/evm/abi/PriceRegistry_1_2.ts +438 -0
  230. package/src/evm/const.ts +2 -0
  231. package/src/evm/hasher.ts +7 -6
  232. package/src/evm/index.ts +104 -86
  233. package/src/evm/logs.ts +64 -16
  234. package/src/evm/messages.ts +14 -14
  235. package/src/evm/offchain.ts +1 -1
  236. package/src/evm/types.ts +11 -0
  237. package/src/execution.ts +13 -9
  238. package/src/extra-args.ts +4 -3
  239. package/src/gas.ts +10 -3
  240. package/src/hasher/hasher.ts +2 -1
  241. package/src/hasher/merklemulti.ts +18 -8
  242. package/src/index.ts +15 -2
  243. package/src/offchain.ts +10 -14
  244. package/src/requests.ts +51 -53
  245. package/src/selectors.ts +23 -0
  246. package/src/solana/cleanup.ts +2 -4
  247. package/src/solana/exec.ts +13 -13
  248. package/src/solana/hasher.ts +9 -5
  249. package/src/solana/index.ts +126 -200
  250. package/src/solana/logs.ts +155 -0
  251. package/src/solana/offchain.ts +10 -7
  252. package/src/solana/patchBorsh.ts +3 -2
  253. package/src/solana/send.ts +14 -7
  254. package/src/solana/utils.ts +31 -17
  255. package/src/sui/discovery.ts +163 -0
  256. package/src/sui/events.ts +325 -0
  257. package/src/sui/hasher.ts +6 -5
  258. package/src/sui/index.ts +528 -80
  259. package/src/sui/manuallyExec/encoder.ts +88 -0
  260. package/src/sui/manuallyExec/index.ts +137 -0
  261. package/src/sui/objects.ts +358 -0
  262. package/src/ton/bindings/offramp.ts +96 -0
  263. package/src/ton/bindings/onramp.ts +72 -0
  264. package/src/ton/bindings/router.ts +65 -0
  265. package/src/ton/exec.ts +44 -0
  266. package/src/ton/hasher.ts +184 -0
  267. package/src/ton/index.ts +989 -0
  268. package/src/ton/logs.ts +157 -0
  269. package/src/ton/types.ts +143 -0
  270. package/src/ton/utils.ts +514 -0
  271. package/src/types.ts +6 -2
  272. package/src/utils.ts +58 -23
  273. package/tsconfig.json +2 -1
package/dist/sui/index.js CHANGED
@@ -1,9 +1,21 @@
1
- import { isBytesLike } from 'ethers';
1
+ import { toHex } from '@mysten/bcs';
2
+ import { SuiClient } from '@mysten/sui/client';
3
+ import { SuiGraphQLClient } from '@mysten/sui/graphql';
4
+ import { Transaction } from '@mysten/sui/transactions';
5
+ import { AbiCoder, hexlify, isBytesLike } from 'ethers';
2
6
  import { AptosChain } from "../aptos/index.js";
3
7
  import { Chain } from "../chain.js";
8
+ import { CCIPContractNotRouterError, CCIPDataFormatUnsupportedError, CCIPError, CCIPErrorCode, CCIPExecTxRevertedError, CCIPExtraArgsInvalidError, CCIPNotImplementedError, CCIPSuiMessageVersionInvalidError, CCIPVersionFeatureUnavailableError, } from "../errors/index.js";
4
9
  import { getSuiLeafHasher } from "./hasher.js";
5
10
  import { supportedChains } from "../supported-chains.js";
6
11
  import { ChainFamily, } from "../types.js";
12
+ import { bytesToBuffer, decodeAddress, getDataBytes, networkInfo } from "../utils.js";
13
+ import { getSuiEventsInTimeRange } from "./events.js";
14
+ import { buildManualExecutionPTB, } from "./manuallyExec/index.js";
15
+ import { fetchTokenConfigs, getCcipObjectRef, getOffRampStateObject, getReceiverModule, } from "./objects.js";
16
+ import selectors from "../selectors.js";
17
+ import { discoverCCIP, discoverOfframp } from "./discovery.js";
18
+ export const SUI_EXTRA_ARGS_V1_TAG = '21ea4ca9';
7
19
  /**
8
20
  * Sui chain implementation supporting Sui networks.
9
21
  * Note: This implementation is currently a placeholder.
@@ -13,87 +25,284 @@ export class SuiChain extends Chain {
13
25
  supportedChains[ChainFamily.Sui] = SuiChain;
14
26
  }
15
27
  static family = ChainFamily.Sui;
16
- static decimals = 8;
28
+ static decimals = 9; // SUI has 9 decimals
29
+ network;
30
+ client;
31
+ graphqlClient;
32
+ // contracts dir <chainSelectorName, SuiContractDir>
33
+ contractsDir;
17
34
  /**
18
35
  * Creates a new SuiChain instance.
19
- * @param network - Sui network configuration.
36
+ * @param client - Sui client for interacting with the Sui network.
37
+ * @param network - Network information for this chain.
20
38
  */
21
- constructor(network, ctx) {
39
+ constructor(client, network, ctx) {
22
40
  super(network, ctx);
41
+ this.client = client;
42
+ this.network = network;
43
+ this.contractsDir = {};
44
+ // TODO: Graphql client should come from config
45
+ let graphqlUrl;
46
+ const selector = network.chainSelector;
47
+ if (selector === selectors['sui:1'].selector) {
48
+ // Sui mainnet (sui:1)
49
+ graphqlUrl = 'https://graphql.mainnet.sui.io/graphql';
50
+ }
51
+ else if (selector === selectors['sui:2'].selector) {
52
+ // Sui testnet (sui:2)
53
+ graphqlUrl = 'https://graphql.testnet.sui.io/graphql';
54
+ }
55
+ else {
56
+ // Localnet (sui:4) or unknown
57
+ graphqlUrl = 'https://graphql.devnet.sui.io/graphql';
58
+ }
59
+ this.graphqlClient = new SuiGraphQLClient({
60
+ url: graphqlUrl,
61
+ });
23
62
  }
24
63
  /**
25
64
  * Creates a SuiChain instance from an RPC URL.
26
- * @param _url - RPC endpoint URL.
65
+ * @param url - HTTP or WebSocket endpoint URL for the Sui network.
27
66
  * @returns A new SuiChain instance.
28
67
  */
29
- static async fromUrl(_url, _ctx) {
30
- return Promise.reject(new Error('Not implemented'));
68
+ static async fromUrl(url, ctx) {
69
+ const client = new SuiClient({ url });
70
+ // Get chain identifier from the client and map to network info format
71
+ const rawChainId = await client.getChainIdentifier().catch(() => null);
72
+ if (rawChainId === null) {
73
+ throw new CCIPDataFormatUnsupportedError(`Unable to fetch chain identifier from URL: ${url}`);
74
+ }
75
+ // Map Sui chain identifiers to our network info format
76
+ // Reference: https://docs.sui.io/guides/developer/getting-started/connect
77
+ let chainId;
78
+ if (rawChainId === '35834a8a') {
79
+ chainId = 'sui:1'; // mainnet
80
+ }
81
+ else if (rawChainId === '4c78adac') {
82
+ chainId = 'sui:2'; // testnet
83
+ }
84
+ else if (rawChainId === 'b0c08dea') {
85
+ chainId = 'sui:4'; // devnet
86
+ }
87
+ else {
88
+ throw new CCIPError(CCIPErrorCode.NETWORK_FAMILY_UNSUPPORTED, `Unsupported Sui chain identifier: ${rawChainId}`);
89
+ }
90
+ const network = networkInfo(chainId);
91
+ return new SuiChain(client, network, ctx);
31
92
  }
32
93
  /** {@inheritDoc Chain.getBlockTimestamp} */
33
- async getBlockTimestamp(_version) {
34
- return Promise.reject(new Error('Not implemented'));
94
+ async getBlockTimestamp(block) {
95
+ const checkpoint = await this.client.getCheckpoint({
96
+ id: String(block),
97
+ });
98
+ return Number(checkpoint.timestampMs) / 1000;
35
99
  }
36
100
  /** {@inheritDoc Chain.getTransaction} */
37
- async getTransaction(_hash) {
38
- return Promise.reject(new Error('Not implemented'));
101
+ async getTransaction(hash) {
102
+ // For Sui, hash should be a transaction digest (string)
103
+ const digest = typeof hash === 'number' ? String(hash) : hash;
104
+ const txResponse = await this.client.getTransactionBlock({
105
+ digest,
106
+ options: {
107
+ showEvents: true,
108
+ showEffects: true,
109
+ showInput: true,
110
+ },
111
+ });
112
+ // Extract events from the transaction
113
+ const events = [];
114
+ if (txResponse.events) {
115
+ for (let i = 0; i < txResponse.events.length; i++) {
116
+ const event = txResponse.events[i];
117
+ const eventType = event.type;
118
+ const packageId = eventType.split('::')[0];
119
+ const moduleName = eventType.split('::')[1];
120
+ const eventName = eventType.split('::')[2];
121
+ events.push({
122
+ address: `${packageId}::${moduleName}`,
123
+ transactionHash: digest,
124
+ index: i,
125
+ blockNumber: Number(txResponse.checkpoint || 0),
126
+ data: event.parsedJson,
127
+ topics: [eventName],
128
+ });
129
+ }
130
+ }
131
+ return {
132
+ hash: digest,
133
+ logs: events,
134
+ blockNumber: Number(txResponse.checkpoint || 0),
135
+ timestamp: Number(txResponse.timestampMs || 0) / 1000,
136
+ from: txResponse.transaction?.data?.sender || '',
137
+ };
39
138
  }
40
139
  /** {@inheritDoc Chain.getLogs} */
41
- // eslint-disable-next-line require-yield
42
- async *getLogs(_opts) {
43
- await Promise.resolve();
44
- throw new Error('Not implemented');
140
+ async *getLogs(opts) {
141
+ if (!this.contractsDir.offRamp) {
142
+ throw new CCIPContractNotRouterError('OffRamp address not set in contracts directory', 'Sui');
143
+ }
144
+ // Extract the event type from topics
145
+ const topic = Array.isArray(opts.topics?.[0]) ? opts.topics[0][0] : opts.topics?.[0] || '';
146
+ if (!topic || topic !== 'CommitReportAccepted') {
147
+ throw new CCIPVersionFeatureUnavailableError('Event type', topic || 'unknown', 'CommitReportAccepted');
148
+ }
149
+ const startTime = opts.startTime ? new Date(opts.startTime * 1000) : new Date(0);
150
+ const endTime = opts.endBlock
151
+ ? new Date(opts.endBlock)
152
+ : new Date(startTime.getTime() + 1 * 24 * 60 * 60 * 1000); // default to +24h
153
+ this.logger.info(`Fetching Sui events of type ${topic} from ${startTime.toISOString()} to ${endTime.toISOString()}`);
154
+ const events = await getSuiEventsInTimeRange(this.client, this.graphqlClient, `${this.contractsDir.offRamp}::offramp::CommitReportAccepted`, startTime, endTime);
155
+ for (const event of events) {
156
+ const eventData = event.contents.json;
157
+ yield {
158
+ address: this.contractsDir.offRamp,
159
+ transactionHash: event.transaction?.digest || '',
160
+ index: 0, // Sui events do not have an index, set to 0
161
+ blockNumber: Number(event.transaction?.effects.checkpoint.sequenceNumber || 0),
162
+ data: eventData,
163
+ topics: [topic],
164
+ };
165
+ }
45
166
  }
46
167
  /** {@inheritDoc Chain.fetchRequestsInTx} */
47
168
  async fetchRequestsInTx(_tx) {
48
- return Promise.reject(new Error('Not implemented'));
169
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.fetchRequestsInTx'));
49
170
  }
50
171
  /** {@inheritDoc Chain.fetchAllMessagesInBatch} */
51
172
  async fetchAllMessagesInBatch(_request, _commit, _opts) {
52
- return Promise.reject(new Error('Not implemented'));
173
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.fetchAllMessagesInBatch'));
53
174
  }
54
175
  /** {@inheritDoc Chain.typeAndVersion} */
55
176
  async typeAndVersion(_address) {
56
- return Promise.reject(new Error('Not implemented'));
177
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.typeAndVersion'));
57
178
  }
58
179
  /** {@inheritDoc Chain.getRouterForOnRamp} */
59
- getRouterForOnRamp(_onRamp, _destChainSelector) {
60
- return Promise.reject(new Error('Not implemented'));
180
+ async getRouterForOnRamp(onRamp, _destChainSelector) {
181
+ this.contractsDir.onRamp = onRamp;
182
+ if (onRamp !== this.contractsDir.onRamp) {
183
+ this.contractsDir.onRamp = onRamp;
184
+ }
185
+ return Promise.resolve(this.contractsDir.onRamp);
61
186
  }
62
187
  /** {@inheritDoc Chain.getRouterForOffRamp} */
63
- getRouterForOffRamp(_offRamp, _sourceChainSelector) {
64
- return Promise.reject(new Error('Not implemented'));
188
+ getRouterForOffRamp(offRamp, _sourceChainSelector) {
189
+ throw new CCIPContractNotRouterError(offRamp, 'unknown');
65
190
  }
66
191
  /** {@inheritDoc Chain.getNativeTokenForRouter} */
67
192
  getNativeTokenForRouter(_router) {
68
- return Promise.reject(new Error('Not implemented'));
193
+ // SUI native token is always 0x2::sui::SUI
194
+ return Promise.resolve('0x2::sui::SUI');
69
195
  }
70
196
  /** {@inheritDoc Chain.getOffRampsForRouter} */
71
- getOffRampsForRouter(_router, _sourceChainSelector) {
72
- return Promise.reject(new Error('Not implemented'));
197
+ async getOffRampsForRouter(router, _sourceChainSelector) {
198
+ const ccip = await discoverCCIP(this.client, router);
199
+ const offramp = await discoverOfframp(this.client, ccip);
200
+ this.contractsDir.offRamp = offramp;
201
+ this.contractsDir.ccip = ccip;
202
+ return [offramp];
73
203
  }
74
204
  /** {@inheritDoc Chain.getOnRampForRouter} */
75
205
  getOnRampForRouter(_router, _destChainSelector) {
76
- return Promise.reject(new Error('Not implemented'));
206
+ if (!this.contractsDir.onRamp) {
207
+ throw new CCIPContractNotRouterError('OnRamp address not set in contracts directory', 'Sui');
208
+ }
209
+ return Promise.resolve(this.contractsDir.onRamp);
77
210
  }
78
211
  /** {@inheritDoc Chain.getOnRampForOffRamp} */
79
- async getOnRampForOffRamp(_offRamp, _sourceChainSelector) {
80
- return Promise.reject(new Error('Not implemented'));
212
+ async getOnRampForOffRamp(offRamp, sourceChainSelector) {
213
+ if (!this.contractsDir.ccip) {
214
+ throw new CCIPError(CCIPErrorCode.UNKNOWN, 'CCIP address not set in contracts directory');
215
+ }
216
+ const offrampPackageId = offRamp;
217
+ const functionName = 'get_source_chain_config';
218
+ const target = `${offrampPackageId}::offramp::${functionName}`;
219
+ // Get the OffRampState object
220
+ const offrampStateObject = await getOffRampStateObject(this.client, offrampPackageId);
221
+ const ccipObjectRef = await getCcipObjectRef(this.client, this.contractsDir.ccip);
222
+ // Use the Transaction builder to create a move call
223
+ const tx = new Transaction();
224
+ // Add move call to the transaction with OffRampState object and source chain selector
225
+ tx.moveCall({
226
+ target,
227
+ arguments: [
228
+ tx.object(ccipObjectRef),
229
+ tx.object(offrampStateObject),
230
+ tx.pure.u64(sourceChainSelector),
231
+ ],
232
+ });
233
+ // Execute with devInspectTransactionBlock for read-only call
234
+ const result = await this.client.devInspectTransactionBlock({
235
+ sender: '0x0000000000000000000000000000000000000000000000000000000000000000',
236
+ transactionBlock: tx,
237
+ });
238
+ if (result.effects.status.status !== 'success' || !result.results?.[0]?.returnValues?.[0]) {
239
+ throw new CCIPDataFormatUnsupportedError(`Failed to call ${target}: ${result.effects.status.error || 'No return value'}`);
240
+ }
241
+ // The return value is a SourceChainConfig struct with the following fields:
242
+ // - Router (address = 32 bytes)
243
+ // - IsEnabled (bool = 1 byte)
244
+ // - MinSeqNr (u64 = 8 bytes)
245
+ // - IsRmnVerificationDisabled (bool = 1 byte)
246
+ // - OnRamp (vector<u8> = length + bytes)
247
+ const returnValue = result.results[0].returnValues[0];
248
+ const [data] = returnValue;
249
+ const configBytes = new Uint8Array(data);
250
+ let offset = 0;
251
+ // Skip Router (32 bytes)
252
+ offset += 32;
253
+ // Skip IsEnabled (1 byte)
254
+ offset += 1;
255
+ // Skip MinSeqNr (8 bytes)
256
+ offset += 8;
257
+ // Skip IsRmnVerificationDisabled (1 byte)
258
+ offset += 1;
259
+ // OnRamp (vector<u8>)
260
+ const onRampLength = configBytes[offset];
261
+ offset += 1;
262
+ const onRampBytes = configBytes.slice(offset, offset + onRampLength);
263
+ // Decode the address from the onRamp bytes
264
+ return decodeAddress(onRampBytes, networkInfo(sourceChainSelector).family);
81
265
  }
82
266
  /** {@inheritDoc Chain.getCommitStoreForOffRamp} */
83
- getCommitStoreForOffRamp(_offRamp) {
84
- return Promise.reject(new Error('Not implemented'));
267
+ getCommitStoreForOffRamp(offRamp) {
268
+ return Promise.resolve(offRamp);
85
269
  }
86
270
  /** {@inheritDoc Chain.getTokenForTokenPool} */
87
- async getTokenForTokenPool(_tokenPool) {
88
- return Promise.reject(new Error('Not implemented'));
271
+ getTokenForTokenPool(_tokenPool) {
272
+ throw new CCIPNotImplementedError();
89
273
  }
90
274
  /** {@inheritDoc Chain.getTokenInfo} */
91
- async getTokenInfo(_token) {
92
- return Promise.reject(new Error('Not implemented'));
275
+ async getTokenInfo(token) {
276
+ // Handle native SUI token
277
+ if (token === '0x2::sui::SUI' || token.includes('::sui::SUI')) {
278
+ return { symbol: 'SUI', decimals: 9 };
279
+ }
280
+ try {
281
+ // For Coin types, try to fetch metadata from the coin metadata object
282
+ // Format: 0xPACKAGE::module::TYPE
283
+ const coinMetadata = await this.client.getCoinMetadata({ coinType: token });
284
+ if (coinMetadata) {
285
+ return {
286
+ symbol: coinMetadata.symbol || 'UNKNOWN',
287
+ decimals: coinMetadata.decimals,
288
+ };
289
+ }
290
+ }
291
+ catch (error) {
292
+ console.log(`Failed to fetch coin metadata for ${token}:`, error);
293
+ }
294
+ // Fallback: parse from token type string if possible
295
+ const parts = token.split('::');
296
+ const symbol = parts[parts.length - 1] || 'UNKNOWN';
297
+ return {
298
+ symbol: symbol.toUpperCase(),
299
+ decimals: 9, // Default to 9 decimals (SUI standard)
300
+ };
93
301
  }
94
302
  /** {@inheritDoc Chain.getTokenAdminRegistryFor} */
303
+ /** {@inheritDoc Chain.getTokenAdminRegistryFor} */
95
304
  getTokenAdminRegistryFor(_address) {
96
- return Promise.reject(new Error('Not implemented'));
305
+ return Promise.reject(new CCIPNotImplementedError());
97
306
  }
98
307
  // Static methods for decoding
99
308
  /**
@@ -102,7 +311,7 @@ export class SuiChain extends Chain {
102
311
  * @returns Decoded CCIPMessage or undefined if not valid.
103
312
  */
104
313
  static decodeMessage(_log) {
105
- throw new Error('Not implemented');
314
+ throw new CCIPNotImplementedError();
106
315
  }
107
316
  /**
108
317
  * Decodes extra arguments from Sui CCIP messages.
@@ -110,32 +319,93 @@ export class SuiChain extends Chain {
110
319
  * @returns Decoded extra arguments or undefined if unknown format.
111
320
  */
112
321
  static decodeExtraArgs(extraArgs) {
113
- return AptosChain.decodeExtraArgs(extraArgs);
322
+ const data = getDataBytes(extraArgs);
323
+ const hexBytes = toHex(data);
324
+ if (!hexBytes.startsWith(SUI_EXTRA_ARGS_V1_TAG)) {
325
+ throw new CCIPExtraArgsInvalidError('Sui', hexBytes);
326
+ }
327
+ const abiData = '0x' + hexBytes.slice(8);
328
+ const decoded = AbiCoder.defaultAbiCoder().decode(['tuple(uint256,bool,bytes32,bytes32[])'], abiData);
329
+ const tuple = decoded[0];
330
+ return {
331
+ gasLimit: tuple[0],
332
+ allowOutOfOrderExecution: tuple[1],
333
+ tokenReceiver: tuple[2],
334
+ receiverObjectIds: tuple[3], // Already an array of hex strings
335
+ _tag: 'SuiExtraArgsV1',
336
+ };
114
337
  }
115
338
  /**
116
- * Encodes extra arguments for Sui CCIP messages.
117
- * @param extraArgs - Extra arguments to encode.
118
- * @returns Encoded extra arguments as hex string.
339
+ * Encodes extra arguments for CCIP messages.
340
+ * @param _extraArgs - Extra arguments to encode.
341
+ * @returns Encoded extra arguments as a hex string.
119
342
  */
120
- static encodeExtraArgs(extraArgs) {
121
- return AptosChain.encodeExtraArgs(extraArgs);
343
+ static encodeExtraArgs(_extraArgs) {
344
+ throw new CCIPNotImplementedError();
122
345
  }
123
346
  /**
124
- * Decodes commit reports from a Sui log event.
125
- * @param _log - Log event data.
126
- * @param _lane - Lane info for filtering.
127
- * @returns Array of CommitReport or undefined if not valid.
347
+ * Decodes commit reports from a log entry.
348
+ * @param log - The log entry to decode.
349
+ * @param _lane - Optional lane information.
350
+ * @returns Array of decoded commit reports or undefined.
128
351
  */
129
- static decodeCommits(_log, _lane) {
130
- throw new Error('Not implemented');
352
+ static decodeCommits(log, _lane) {
353
+ if (!log.data || typeof log.data !== 'object' || !('unblessed_merkle_roots' in log.data)) {
354
+ return;
355
+ }
356
+ const toHexFromBase64 = (b64) => '0x' + Buffer.from(b64, 'base64').toString('hex');
357
+ const eventData = log.data;
358
+ const unblessedRoots = eventData.unblessed_merkle_roots;
359
+ if (!Array.isArray(unblessedRoots) || unblessedRoots.length === 0) {
360
+ return;
361
+ }
362
+ return unblessedRoots.map((root) => {
363
+ return {
364
+ sourceChainSelector: BigInt(root.source_chain_selector),
365
+ onRampAddress: toHexFromBase64(root.on_ramp_address),
366
+ minSeqNr: BigInt(root.min_seq_nr),
367
+ maxSeqNr: BigInt(root.max_seq_nr),
368
+ merkleRoot: toHexFromBase64(root.merkle_root),
369
+ };
370
+ });
131
371
  }
132
372
  /**
133
- * Decodes an execution receipt from a Sui log event.
134
- * @param _log - Log event data.
135
- * @returns ExecutionReceipt or undefined if not valid.
373
+ * Decodes an execution receipt from a log entry.
374
+ * @param log - The log entry to decode.
375
+ * @returns Decoded execution receipt or undefined.
136
376
  */
137
- static decodeReceipt(_log) {
138
- throw new Error('Not implemented');
377
+ static decodeReceipt(log) {
378
+ // Check if this is an ExecutionStateChanged event
379
+ const topic = (Array.isArray(log.topics) ? log.topics[0] : log.topics);
380
+ if (topic !== 'ExecutionStateChanged') {
381
+ return undefined;
382
+ }
383
+ // Validate log data structure
384
+ if (!log.data || typeof log.data !== 'object') {
385
+ return undefined;
386
+ }
387
+ const eventData = log.data;
388
+ // Verify required fields exist
389
+ if (!eventData.message_id ||
390
+ !Array.isArray(eventData.message_id) ||
391
+ eventData.sequence_number === undefined ||
392
+ eventData.state === undefined) {
393
+ return undefined;
394
+ }
395
+ const toHex = (bytes) => hexlify(bytesToBuffer(bytes));
396
+ // Convert message_id bytes array to hex string
397
+ const messageId = toHex(eventData.message_id);
398
+ // Convert message_hash bytes array to hex string (if present)
399
+ const messageHash = eventData.message_hash ? toHex(eventData.message_hash) : undefined;
400
+ return {
401
+ messageId,
402
+ sequenceNumber: BigInt(eventData.sequence_number),
403
+ state: eventData.state,
404
+ sourceChainSelector: eventData.source_chain_selector
405
+ ? BigInt(eventData.source_chain_selector)
406
+ : undefined,
407
+ messageHash,
408
+ };
139
409
  }
140
410
  /**
141
411
  * Converts bytes to a Sui address.
@@ -145,6 +415,12 @@ export class SuiChain extends Chain {
145
415
  static getAddress(bytes) {
146
416
  return AptosChain.getAddress(bytes);
147
417
  }
418
+ /**
419
+ * Validates a transaction hash format for Sui
420
+ */
421
+ static isTxHash(_v) {
422
+ return false;
423
+ }
148
424
  /**
149
425
  * Gets the leaf hasher for Sui destination chains.
150
426
  * @param lane - Lane configuration.
@@ -155,31 +431,92 @@ export class SuiChain extends Chain {
155
431
  }
156
432
  /** {@inheritDoc Chain.getFee} */
157
433
  async getFee(_router, _destChainSelector, _message) {
158
- return Promise.reject(new Error('Not implemented'));
434
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getFee'));
159
435
  }
160
436
  /** {@inheritDoc Chain.generateUnsignedSendMessage} */
161
437
  generateUnsignedSendMessage(_sender, _router, _destChainSelector, _message, _opts) {
162
- return Promise.reject(new Error('Not implemented'));
438
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.generateUnsignedSendMessage'));
163
439
  }
164
440
  /** {@inheritDoc Chain.sendMessage} */
165
441
  async sendMessage(_router, _destChainSelector, _message, _opts) {
166
- return Promise.reject(new Error('Not implemented'));
442
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.sendMessage'));
167
443
  }
168
444
  /** {@inheritDoc Chain.fetchOffchainTokenData} */
169
445
  fetchOffchainTokenData(request) {
170
446
  if (!('receiverObjectIds' in request.message)) {
171
- throw new Error('Invalid message, not v1.6 Sui');
447
+ throw new CCIPSuiMessageVersionInvalidError();
172
448
  }
173
449
  // default offchain token data
174
450
  return Promise.resolve(request.message.tokenAmounts.map(() => undefined));
175
451
  }
176
452
  /** {@inheritDoc Chain.generateUnsignedExecuteReport} */
177
453
  generateUnsignedExecuteReport(_payer, _offRamp, _execReport, _opts) {
178
- return Promise.reject(new Error('Not implemented'));
454
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.generateUnsignedExecuteReport'));
179
455
  }
180
456
  /** {@inheritDoc Chain.executeReport} */
181
- async executeReport(_offRamp, _execReport, _opts) {
182
- return Promise.reject(new Error('Not implemented'));
457
+ async executeReport(_offRamp, execReport, opts) {
458
+ if (!this.contractsDir.offRamp || !this.contractsDir.ccip) {
459
+ throw new CCIPContractNotRouterError('OffRamp or CCIP address not set in contracts directory', 'Sui');
460
+ }
461
+ const wallet = opts.wallet;
462
+ const ccipObjectRef = await getCcipObjectRef(this.client, this.contractsDir.ccip);
463
+ const offrampStateObject = await getOffRampStateObject(this.client, this.contractsDir.offRamp);
464
+ const receiverConfig = await getReceiverModule(this.client, this.contractsDir.ccip, ccipObjectRef, execReport.message.receiver);
465
+ let tokenConfigs = [];
466
+ if (execReport.message.tokenAmounts.length !== 0) {
467
+ tokenConfigs = await fetchTokenConfigs(this.client, this.contractsDir.ccip, ccipObjectRef, execReport.message.tokenAmounts);
468
+ }
469
+ const input = {
470
+ executionReport: execReport,
471
+ offrampAddress: this.contractsDir.offRamp,
472
+ ccipAddress: this.contractsDir.ccip,
473
+ ccipObjectRef,
474
+ offrampStateObject,
475
+ receiverConfig,
476
+ tokenConfigs,
477
+ };
478
+ if (opts.receiverObjectIds) {
479
+ this.logger.info(`Overriding Sui Manual Execution receiverObjectIds with: ${opts.receiverObjectIds.join(', ')}`);
480
+ input.overrideReceiverObjectIds = opts.receiverObjectIds;
481
+ }
482
+ const tx = buildManualExecutionPTB(input);
483
+ // Set gas budget if provided
484
+ if (opts?.gasLimit) {
485
+ tx.setGasBudget(opts.gasLimit);
486
+ }
487
+ this.logger.info(`Executing Sui CCIP executeReport transaction...`);
488
+ // Sign and execute the transaction
489
+ let result;
490
+ try {
491
+ result = await this.client.signAndExecuteTransaction({
492
+ signer: wallet,
493
+ transaction: tx,
494
+ options: {
495
+ showEffects: true,
496
+ showEvents: true,
497
+ },
498
+ });
499
+ }
500
+ catch (e) {
501
+ throw new CCIPError(CCIPErrorCode.TRANSACTION_NOT_FINALIZED, `Failed to send Sui executeReport transaction: ${e.message}`);
502
+ }
503
+ // Check if transaction inmediately reverted
504
+ if (result.effects?.status?.status !== 'success') {
505
+ const errorMsg = result.effects?.status?.error || 'Unknown error';
506
+ throw new CCIPExecTxRevertedError(result.digest, {
507
+ context: { error: errorMsg },
508
+ });
509
+ }
510
+ this.logger.info(`Waiting for Sui transaction ${result.digest} to be finalized...`);
511
+ await this.client.waitForTransaction({
512
+ digest: result.digest,
513
+ options: {
514
+ showEffects: true,
515
+ showEvents: true,
516
+ },
517
+ });
518
+ // Return the transaction as a ChainTransaction
519
+ return this.getTransaction(result.digest);
183
520
  }
184
521
  /**
185
522
  * Parses raw Sui data into typed structures.
@@ -195,23 +532,23 @@ export class SuiChain extends Chain {
195
532
  }
196
533
  /** {@inheritDoc Chain.getSupportedTokens} */
197
534
  async getSupportedTokens(_address) {
198
- return Promise.reject(new Error('Not implemented'));
535
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getSupportedTokens'));
199
536
  }
200
537
  /** {@inheritDoc Chain.getRegistryTokenConfig} */
201
538
  async getRegistryTokenConfig(_address, _tokenName) {
202
- return Promise.reject(new Error('Not implemented'));
539
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getRegistryTokenConfig'));
203
540
  }
204
541
  /** {@inheritDoc Chain.getTokenPoolConfigs} */
205
542
  async getTokenPoolConfigs(_tokenPool) {
206
- return Promise.reject(new Error('Not implemented'));
543
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getTokenPoolConfigs'));
207
544
  }
208
545
  /** {@inheritDoc Chain.getTokenPoolRemotes} */
209
546
  async getTokenPoolRemotes(_tokenPool) {
210
- return Promise.reject(new Error('Not implemented'));
547
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getTokenPoolRemotes'));
211
548
  }
212
549
  /** {@inheritDoc Chain.getFeeTokens} */
213
550
  async getFeeTokens(_router) {
214
- return Promise.reject(new Error('Not implemented'));
551
+ return Promise.reject(new CCIPNotImplementedError('SuiChain.getFeeTokens'));
215
552
  }
216
553
  }
217
554
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sui/index.ts"],"names":[],"mappings":"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"}