@chainlink/ccip-sdk 0.97.0 → 1.1.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 (166) hide show
  1. package/README.md +12 -9
  2. package/dist/api/index.d.ts +7 -3
  3. package/dist/api/index.d.ts.map +1 -1
  4. package/dist/api/index.js +124 -13
  5. package/dist/api/index.js.map +1 -1
  6. package/dist/api/types.d.ts +34 -0
  7. package/dist/api/types.d.ts.map +1 -1
  8. package/dist/aptos/index.d.ts +4 -6
  9. package/dist/aptos/index.d.ts.map +1 -1
  10. package/dist/aptos/index.js +0 -5
  11. package/dist/aptos/index.js.map +1 -1
  12. package/dist/aptos/logs.d.ts +2 -2
  13. package/dist/aptos/logs.d.ts.map +1 -1
  14. package/dist/chain.d.ts +104 -16
  15. package/dist/chain.d.ts.map +1 -1
  16. package/dist/chain.js +97 -9
  17. package/dist/chain.js.map +1 -1
  18. package/dist/errors/codes.d.ts +1 -1
  19. package/dist/errors/codes.d.ts.map +1 -1
  20. package/dist/errors/codes.js +2 -1
  21. package/dist/errors/codes.js.map +1 -1
  22. package/dist/errors/index.d.ts +5 -5
  23. package/dist/errors/index.d.ts.map +1 -1
  24. package/dist/errors/index.js +5 -5
  25. package/dist/errors/index.js.map +1 -1
  26. package/dist/errors/recovery.js +1 -1
  27. package/dist/errors/recovery.js.map +1 -1
  28. package/dist/errors/specialized.d.ts +22 -19
  29. package/dist/errors/specialized.d.ts.map +1 -1
  30. package/dist/errors/specialized.js +30 -25
  31. package/dist/errors/specialized.js.map +1 -1
  32. package/dist/evm/abi/OffRamp_2_0.d.ts +24 -12
  33. package/dist/evm/abi/OffRamp_2_0.d.ts.map +1 -1
  34. package/dist/evm/abi/OffRamp_2_0.js +16 -8
  35. package/dist/evm/abi/OffRamp_2_0.js.map +1 -1
  36. package/dist/evm/abi/OnRamp_2_0.d.ts +1 -1
  37. package/dist/evm/abi/OnRamp_2_0.js +1 -1
  38. package/dist/evm/abi/OnRamp_2_0.js.map +1 -1
  39. package/dist/evm/abi/TokenPool_2_0.d.ts +1552 -0
  40. package/dist/evm/abi/TokenPool_2_0.d.ts.map +1 -0
  41. package/dist/evm/abi/TokenPool_2_0.js +1637 -0
  42. package/dist/evm/abi/TokenPool_2_0.js.map +1 -0
  43. package/dist/evm/const.d.ts +1 -0
  44. package/dist/evm/const.d.ts.map +1 -1
  45. package/dist/evm/const.js +2 -0
  46. package/dist/evm/const.js.map +1 -1
  47. package/dist/evm/index.d.ts +11 -7
  48. package/dist/evm/index.d.ts.map +1 -1
  49. package/dist/evm/index.js +139 -46
  50. package/dist/evm/index.js.map +1 -1
  51. package/dist/evm/logs.d.ts +1 -1
  52. package/dist/evm/logs.js +1 -1
  53. package/dist/evm/messages.d.ts +2 -33
  54. package/dist/evm/messages.d.ts.map +1 -1
  55. package/dist/evm/messages.js +0 -210
  56. package/dist/evm/messages.js.map +1 -1
  57. package/dist/evm/offchain.d.ts +1 -14
  58. package/dist/evm/offchain.d.ts.map +1 -1
  59. package/dist/evm/offchain.js +1 -133
  60. package/dist/evm/offchain.js.map +1 -1
  61. package/dist/gas.d.ts +4 -0
  62. package/dist/gas.d.ts.map +1 -1
  63. package/dist/gas.js +27 -21
  64. package/dist/gas.js.map +1 -1
  65. package/dist/index.d.ts +5 -4
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +3 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/messages.d.ts +34 -0
  70. package/dist/messages.d.ts.map +1 -0
  71. package/dist/messages.js +211 -0
  72. package/dist/messages.js.map +1 -0
  73. package/dist/offchain.d.ts +23 -6
  74. package/dist/offchain.d.ts.map +1 -1
  75. package/dist/offchain.js +92 -17
  76. package/dist/offchain.js.map +1 -1
  77. package/dist/requests.d.ts.map +1 -1
  78. package/dist/requests.js +0 -1
  79. package/dist/requests.js.map +1 -1
  80. package/dist/solana/cleanup.js +2 -2
  81. package/dist/solana/cleanup.js.map +1 -1
  82. package/dist/solana/exec.js +1 -1
  83. package/dist/solana/exec.js.map +1 -1
  84. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.d.ts +1 -1
  85. package/dist/solana/idl/1.6.0/BASE_TOKEN_POOL.js +1 -1
  86. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.d.ts +1 -1
  87. package/dist/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.js +1 -1
  88. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.d.ts +1 -1
  89. package/dist/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.js +1 -1
  90. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts +16 -1
  91. package/dist/solana/idl/1.6.0/CCIP_COMMON.d.ts.map +1 -1
  92. package/dist/solana/idl/1.6.0/CCIP_COMMON.js +16 -1
  93. package/dist/solana/idl/1.6.0/CCIP_COMMON.js.map +1 -1
  94. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.d.ts +1 -1
  95. package/dist/solana/idl/1.6.0/CCIP_OFFRAMP.js +1 -1
  96. package/dist/solana/idl/1.6.0/CCIP_ROUTER.d.ts +1 -1
  97. package/dist/solana/idl/1.6.0/CCIP_ROUTER.js +1 -1
  98. package/dist/solana/index.d.ts +25 -27
  99. package/dist/solana/index.d.ts.map +1 -1
  100. package/dist/solana/index.js +16 -7
  101. package/dist/solana/index.js.map +1 -1
  102. package/dist/solana/offchain.d.ts +1 -13
  103. package/dist/solana/offchain.d.ts.map +1 -1
  104. package/dist/solana/offchain.js +1 -66
  105. package/dist/solana/offchain.js.map +1 -1
  106. package/dist/solana/utils.d.ts +4 -4
  107. package/dist/solana/utils.d.ts.map +1 -1
  108. package/dist/solana/utils.js +1 -1
  109. package/dist/solana/utils.js.map +1 -1
  110. package/dist/sui/index.d.ts +4 -6
  111. package/dist/sui/index.d.ts.map +1 -1
  112. package/dist/sui/index.js +14 -6
  113. package/dist/sui/index.js.map +1 -1
  114. package/dist/ton/exec.d.ts +2 -2
  115. package/dist/ton/exec.d.ts.map +1 -1
  116. package/dist/ton/exec.js +1 -1
  117. package/dist/ton/exec.js.map +1 -1
  118. package/dist/ton/index.d.ts +5 -6
  119. package/dist/ton/index.d.ts.map +1 -1
  120. package/dist/ton/index.js +3 -5
  121. package/dist/ton/index.js.map +1 -1
  122. package/dist/ton/types.d.ts +3 -5
  123. package/dist/ton/types.d.ts.map +1 -1
  124. package/dist/ton/types.js.map +1 -1
  125. package/dist/types.d.ts +10 -10
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.js.map +1 -1
  128. package/package.json +11 -7
  129. package/src/api/index.ts +145 -17
  130. package/src/api/types.ts +43 -0
  131. package/src/aptos/index.ts +4 -11
  132. package/src/aptos/logs.ts +2 -2
  133. package/src/chain.ts +148 -23
  134. package/src/errors/codes.ts +2 -1
  135. package/src/errors/index.ts +4 -1
  136. package/src/errors/recovery.ts +1 -1
  137. package/src/errors/specialized.ts +35 -30
  138. package/src/evm/abi/OffRamp_2_0.ts +16 -8
  139. package/src/evm/abi/OnRamp_2_0.ts +1 -1
  140. package/src/evm/abi/TokenPool_2_0.ts +1636 -0
  141. package/src/evm/const.ts +2 -0
  142. package/src/evm/index.ts +234 -85
  143. package/src/evm/logs.ts +1 -1
  144. package/src/evm/messages.ts +3 -285
  145. package/src/evm/offchain.ts +2 -191
  146. package/src/gas.ts +27 -19
  147. package/src/index.ts +10 -2
  148. package/src/messages.ts +278 -0
  149. package/src/offchain.ts +125 -28
  150. package/src/requests.ts +2 -3
  151. package/src/solana/cleanup.ts +2 -2
  152. package/src/solana/exec.ts +1 -1
  153. package/src/solana/idl/1.6.0/BASE_TOKEN_POOL.ts +2 -2
  154. package/src/solana/idl/1.6.0/BURN_MINT_TOKEN_POOL.ts +2 -2
  155. package/src/solana/idl/1.6.0/CCIP_CCTP_TOKEN_POOL.ts +2 -2
  156. package/src/solana/idl/1.6.0/CCIP_COMMON.ts +32 -2
  157. package/src/solana/idl/1.6.0/CCIP_OFFRAMP.ts +2 -2
  158. package/src/solana/idl/1.6.0/CCIP_ROUTER.ts +2 -2
  159. package/src/solana/index.ts +27 -17
  160. package/src/solana/offchain.ts +3 -100
  161. package/src/solana/utils.ts +8 -5
  162. package/src/sui/index.ts +22 -12
  163. package/src/ton/exec.ts +3 -6
  164. package/src/ton/index.ts +15 -16
  165. package/src/ton/types.ts +3 -6
  166. package/src/types.ts +13 -10
@@ -1,56 +1,4 @@
1
- import { EventFragment } from 'ethers';
2
- import { getLbtcAttestation, getUsdcAttestation } from "../offchain.js";
3
- import { networkInfo } from "../utils.js";
4
- import { defaultAbiCoder, interfaces, requestsFragments } from "./const.js";
5
- import { parseSourceTokenData } from "./messages.js";
6
- const BURNED_EVENT_1_5 = interfaces.TokenPool_v1_5.getEvent('Burned');
7
- const BURNED_EVENT_1_6 = interfaces.TokenPool_v1_6.getEvent('LockedOrBurned');
8
- const BURNED_EVENT_TOPIC_HASHES = new Set([BURNED_EVENT_1_5.topicHash, BURNED_EVENT_1_6.topicHash]);
9
- const USDC_EVENT = EventFragment.from('MessageSent(bytes message)');
10
- const TRANSFER_EVENT = EventFragment.from('Transfer(address from, address to, uint256 value)');
11
- export const LBTC_EVENT = EventFragment.from('DepositToBridge(address fromAddress, bytes32 toAddress, bytes32 payloadHash, bytes payload)');
12
- export const LBTC_EVENT_V2 = EventFragment.from('DepositToBridge(address fromAddress, bytes32 toAddress, bytes32 payloadHash)');
13
- const LBTC_EVENTS_HASHES = new Set([LBTC_EVENT.topicHash, LBTC_EVENT_V2.topicHash]);
14
- /**
15
- * Fetch offchain token data for all transfers in request
16
- *
17
- * @param request - Request (or subset of) to fetch offchainTokenData for
18
- * @returns Array of byte arrays, one per transfer in request
19
- */
20
- export async function fetchEVMOffchainTokenData(request, ctx) {
21
- const { networkType } = networkInfo(request.message.sourceChainSelector);
22
- // there's a chance there are other CCIPSendRequested in same tx,
23
- // and they may contain USDC transfers as well, so we select
24
- // any USDC logs after that and before our CCIPSendRequested
25
- const prevCcipRequestIdx = request.tx.logs.find(({ topics, index }) => topics[0] in requestsFragments && index < request.log.index)?.index ?? -1;
26
- const usdcRequestLogs = request.tx.logs.filter(({ index }) => prevCcipRequestIdx < index && index < request.log.index);
27
- const offchainTokenData = request.message.tokenAmounts.map(() => undefined);
28
- const usdcTokenData = await getUsdcTokenData(request.message.tokenAmounts, usdcRequestLogs, networkType, ctx);
29
- let lbtcTokenData = [];
30
- try {
31
- let tokenAmounts;
32
- if ('sourceTokenData' in request.message) {
33
- tokenAmounts = request.message.sourceTokenData.map(parseSourceTokenData);
34
- }
35
- else {
36
- tokenAmounts = request.message.tokenAmounts;
37
- }
38
- //for lbtc we distinguish logs by hash in event, so we can pass all of them
39
- lbtcTokenData = await getLbtcTokenData(tokenAmounts, request.tx.logs, networkType, ctx);
40
- }
41
- catch (_) {
42
- // pass
43
- }
44
- for (let i = 0; i < offchainTokenData.length; i++) {
45
- if (usdcTokenData[i]) {
46
- offchainTokenData[i] = usdcTokenData[i];
47
- }
48
- else if (lbtcTokenData[i]) {
49
- offchainTokenData[i] = lbtcTokenData[i];
50
- }
51
- }
52
- return offchainTokenData;
53
- }
1
+ import { defaultAbiCoder } from "./const.js";
54
2
  /**
55
3
  * Encodes offchain token data for EVM execution.
56
4
  * @param data - Offchain token data to encode.
@@ -65,84 +13,4 @@ export function encodeEVMOffchainTokenData(data) {
65
13
  }
66
14
  return '0x';
67
15
  }
68
- /**
69
- * Try to fetch USDC attestations for transfers, return undefined in position if can't
70
- *
71
- * @param tokenAmounts - all tokenAmounts to try
72
- * @param allLogsInRequest - all other logs in same tx as CCIPSendRequested
73
- * @param networkType - network type (mainnet or testnet)
74
- * @returns array where each position is either the attestation for that transfer or undefined
75
- **/
76
- async function getUsdcTokenData(tokenAmounts, allLogsInRequest, networkType, { logger = console } = {}) {
77
- const attestations = [];
78
- const messageSentPerTokenAndPool = allLogsInRequest.reduce((acc, log, i, arr) => {
79
- // for our MessageSent of interest (USDC-like), the token is the contract
80
- // which emitted a (burn) Transfer immediately before this event, and the pool emitted a Burned
81
- // event 2 events after
82
- const transferLog = arr[i - 1];
83
- const poolLog = arr[i + 2];
84
- if (log.topics[0] !== USDC_EVENT.topicHash ||
85
- transferLog?.topics[0] !== TRANSFER_EVENT.topicHash ||
86
- !poolLog?.topics.length ||
87
- !BURNED_EVENT_TOPIC_HASHES.has(poolLog.topics[0])) {
88
- return acc;
89
- }
90
- const token = transferLog.address;
91
- const pool = poolLog.address;
92
- acc.set(token, [...(acc.get(token) ?? []), log]);
93
- acc.set(pool, [...(acc.get(pool) ?? []), log]);
94
- return acc;
95
- }, new Map());
96
- for (const [i, tokenAmount] of tokenAmounts.entries()) {
97
- const tokenOrPool = 'token' in tokenAmount ? tokenAmount.token : tokenAmount.sourcePoolAddress;
98
- // what if there are more USDC transfers of this same token after this one?
99
- const tokenTransfersCountAfter = tokenAmounts.filter((ta, j) => ('token' in ta ? ta.token : ta.sourcePoolAddress) === tokenOrPool && j > i).length;
100
- let messageSentLog;
101
- const messageSents = messageSentPerTokenAndPool.get(tokenOrPool);
102
- if (messageSents) {
103
- // look from the end (near our request), but skip MessageSents for further transfers
104
- messageSentLog = messageSents[messageSents.length - 1 - tokenTransfersCountAfter];
105
- }
106
- let tokenData;
107
- if (messageSentLog) {
108
- let message;
109
- try {
110
- message = defaultAbiCoder.decode(USDC_EVENT.inputs, messageSentLog.data)[0];
111
- const attestation = await getUsdcAttestation(message, networkType);
112
- tokenData = {
113
- _tag: 'usdc',
114
- message,
115
- attestation,
116
- };
117
- // encoding of OffchainTokenData to be done as part of Chain.executeReceipt
118
- }
119
- catch (err) {
120
- // maybe not a USDC transfer, or not ready
121
- logger.warn(`❌ EVM CCTP: Failed to fetch attestation for message:`, message, err);
122
- }
123
- }
124
- attestations.push(tokenData);
125
- }
126
- return attestations;
127
- }
128
- /**
129
- * Try to fetch LBTC attestations for transfers, return undefined in position if can't or not required
130
- **/
131
- async function getLbtcTokenData(tokenAmounts, allLogsInRequest, networkType, { logger = console } = {}) {
132
- const lbtcDepositHashes = new Set(allLogsInRequest
133
- .filter(({ topics }) => LBTC_EVENTS_HASHES.has(topics[0]))
134
- .map(({ topics }) => topics[3]));
135
- return Promise.all(tokenAmounts.map(async ({ extraData }) => {
136
- // Attestation is required when SourceTokenData.extraData is 32 bytes long ('0x' + 64 hex chars)
137
- // otherwise attestation is not required
138
- if (lbtcDepositHashes.has(extraData)) {
139
- try {
140
- return { _tag: 'lbtc', extraData, ...(await getLbtcAttestation(extraData, networkType)) };
141
- }
142
- catch (err) {
143
- logger.warn(`❌ EVM LBTC: Failed to fetch attestation for message:`, extraData, err);
144
- }
145
- }
146
- }));
147
- }
148
16
  //# sourceMappingURL=offchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offchain.js","sourceRoot":"","sources":["../../src/evm/offchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offchain.js","sourceRoot":"","sources":["../../src/evm/offchain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAuB;IAChE,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IACpF,CAAC;SAAM,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,WAAqB,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
package/dist/gas.d.ts CHANGED
@@ -10,6 +10,10 @@ export type EstimateMessageInput = {
10
10
  messageId?: string;
11
11
  /** optional sender: zero address will be used if omitted */
12
12
  sender?: string;
13
+ /** optional onRampAddress */
14
+ onRampAddress?: string;
15
+ /** optional offRampAddress */
16
+ offRampAddress?: string;
13
17
  /** optional data: zero bytes will be used if omitted */
14
18
  data?: BytesLike;
15
19
  /**
package/dist/gas.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,QAAQ,CAAA;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;QACvB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,CACA;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GACjB;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CACvF,CAAC,EAAE,CAAA;CACL,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,uDAAuD;IACvD,MAAM,EAAE,KAAK,CAAA;IACb,+DAA+D;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,OAAO,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE,4BAA4B,mBAgE9B"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,QAAQ,CAAA;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;QACvB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,CACA;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GACjB;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CACvF,CAAC,EAAE,CAAA;CACL,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,uDAAuD;IACvD,MAAM,EAAE,KAAK,CAAA;IACb,+DAA+D;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,OAAO,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE,4BAA4B,mBAoE9B"}
package/dist/gas.js CHANGED
@@ -37,29 +37,34 @@ export async function estimateReceiveExecution({ source, dest, routerOrRamp, mes
37
37
  if (!dest.estimateReceiveExecution)
38
38
  throw new CCIPMethodUnsupportedError(dest.constructor.name, 'estimateReceiveExecution');
39
39
  let onRamp, offRamp;
40
- try {
41
- const tnv = await source.typeAndVersion(routerOrRamp);
42
- if (!tnv[0].includes('OnRamp'))
43
- onRamp = await source.getOnRampForRouter(routerOrRamp, dest.network.chainSelector);
44
- else
45
- onRamp = routerOrRamp;
46
- offRamp = await discoverOffRamp(source, dest, onRamp, source);
47
- }
48
- catch (sourceErr) {
40
+ if (message.onRampAddress)
41
+ onRamp = message.onRampAddress;
42
+ if (message.offRampAddress)
43
+ offRamp = message.offRampAddress;
44
+ if (!onRamp || !offRamp)
49
45
  try {
50
- const tnv = await dest.typeAndVersion(routerOrRamp);
51
- if (!tnv[0].includes('OffRamp'))
52
- throw new CCIPContractTypeInvalidError(routerOrRamp, tnv[2], ['OffRamp']);
53
- offRamp = routerOrRamp;
54
- const onRamps = await dest.getOnRampsForOffRamp(offRamp, source.network.chainSelector);
55
- if (!onRamps.length)
56
- throw new CCIPOnRampRequiredError();
57
- onRamp = onRamps[onRamps.length - 1];
46
+ const tnv = await source.typeAndVersion(routerOrRamp);
47
+ if (!tnv[0].includes('OnRamp'))
48
+ onRamp = await source.getOnRampForRouter(routerOrRamp, dest.network.chainSelector);
49
+ else
50
+ onRamp = routerOrRamp;
51
+ offRamp = await discoverOffRamp(source, dest, onRamp, source);
58
52
  }
59
- catch {
60
- throw sourceErr; // re-throw original error
53
+ catch (sourceErr) {
54
+ try {
55
+ const tnv = await dest.typeAndVersion(routerOrRamp);
56
+ if (!tnv[0].includes('OffRamp'))
57
+ throw new CCIPContractTypeInvalidError(routerOrRamp, tnv[2], ['OffRamp']);
58
+ offRamp = routerOrRamp;
59
+ const onRamps = await dest.getOnRampsForOffRamp(offRamp, source.network.chainSelector);
60
+ if (!onRamps.length)
61
+ throw new CCIPOnRampRequiredError();
62
+ onRamp = onRamps[onRamps.length - 1];
63
+ }
64
+ catch {
65
+ throw sourceErr; // re-throw original error
66
+ }
61
67
  }
62
- }
63
68
  const destTokenAmounts = await Promise.all((message.tokenAmounts ?? []).map(async (ta) => {
64
69
  const tokenAmount = 'destTokenAddress' in ta
65
70
  ? ta
@@ -73,7 +78,8 @@ export async function estimateReceiveExecution({ source, dest, routerOrRamp, mes
73
78
  source.getTokenInfo(sourceTokenAddress),
74
79
  dest.getTokenInfo(tokenAmount.destTokenAddress),
75
80
  ]);
76
- const destAmount = (tokenAmount.amount * 10n ** BigInt(destDecimals)) / 10n ** BigInt(sourceDecimals);
81
+ const destAmount = (tokenAmount.amount * BigInt(10) ** BigInt(destDecimals)) /
82
+ BigInt(10) ** BigInt(sourceDecimals);
77
83
  if (destAmount === 0n)
78
84
  throw new CCIPTokenDecimalsInsufficientError(tokenAmount.destTokenAddress, destDecimals, dest.network.name, formatUnits(tokenAmount.amount, sourceDecimals));
79
85
  return { token: tokenAmount.destTokenAddress, amount: destAmount };
package/dist/gas.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../src/gas.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,14 +7,15 @@
7
7
  * @packageDocumentation
8
8
  */
9
9
  export type { APICCIPRequestMetadata, APIErrorResponse, CCIPAPIClientContext, LaneLatencyResponse, } from './api/index.ts';
10
- export { CCIPAPIClient, DEFAULT_API_BASE_URL } from './api/index.ts';
11
- export type { ApiRetryConfig, Chain, ChainContext, ChainGetter, ChainStatic, GetBalanceOpts, LogFilter, RateLimiterState, RegistryTokenConfig, TokenInfo, TokenPoolConfig, TokenPoolRemote, } from './chain.ts';
12
- export { DEFAULT_API_RETRY_CONFIG } from './chain.ts';
10
+ export { CCIPAPIClient, DEFAULT_API_BASE_URL, SDK_VERSION, SDK_VERSION_HEADER, } from './api/index.ts';
11
+ export type { ApiRetryConfig, Chain, ChainContext, ChainGetter, ChainStatic, GetBalanceOpts, LaneFeatures, LogFilter, RateLimiterState, RegistryTokenConfig, TokenInfo, TokenPoolConfig, TokenPoolRemote, } from './chain.ts';
12
+ export { DEFAULT_API_RETRY_CONFIG, LaneFeature } from './chain.ts';
13
13
  export { calculateManualExecProof, discoverOffRamp } from './execution.ts';
14
14
  export { type EVMExtraArgsV1, type EVMExtraArgsV2, type ExtraArgs, type SVMExtraArgsV1, type SuiExtraArgsV1, decodeExtraArgs, encodeExtraArgs, } from './extra-args.ts';
15
15
  export { estimateReceiveExecution } from './gas.ts';
16
+ export { getOffchainTokenData } from './offchain.ts';
16
17
  export { decodeMessage, getMessagesForSender, sourceToDestTokenAddresses } from './requests.ts';
17
- export { type CCIPExecution, type CCIPMessage, type CCIPRequest, type CCIPVerifications, type ChainTransaction, type CommitReport, type ExecutionInput, type ExecutionReceipt, type Lane, type Logger, type MessageInput, type NetworkInfo, type OffchainTokenData, type WithLogger, CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from './types.ts';
18
+ export { type CCIPExecution, type CCIPMessage, type CCIPRequest, type CCIPVerifications, type ChainLog, type ChainTransaction, type CommitReport, type ExecutionInput, type ExecutionReceipt, type Lane, type Logger, type MessageInput, type NetworkInfo, type OffchainTokenData, type WithLogger, CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from './types.ts';
18
19
  export type { WithRetryConfig } from './utils.ts';
19
20
  export { bigIntReplacer, bigIntReviver, bytesToBuffer, decodeAddress, getDataBytes, isSupportedTxHash, networkInfo, withRetry, } from './utils.ts';
20
21
  export { type CCIPExplorerLinks, type ExplorerLinkType, CCIP_EXPLORER_BASE_URL, getCCIPExplorerLinks, getCCIPExplorerUrl, } from './explorer.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,YAAY,EACV,cAAc,EACd,KAAK,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAGtB,cAAc,mBAAmB,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAE1F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,cAAc,EACd,KAAK,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAGtB,cAAc,mBAAmB,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAE1F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -6,11 +6,12 @@
6
6
  *
7
7
  * @packageDocumentation
8
8
  */
9
- export { CCIPAPIClient, DEFAULT_API_BASE_URL } from "./api/index.js";
10
- export { DEFAULT_API_RETRY_CONFIG } from "./chain.js";
9
+ export { CCIPAPIClient, DEFAULT_API_BASE_URL, SDK_VERSION, SDK_VERSION_HEADER, } from "./api/index.js";
10
+ export { DEFAULT_API_RETRY_CONFIG, LaneFeature } from "./chain.js";
11
11
  export { calculateManualExecProof, discoverOffRamp } from "./execution.js";
12
12
  export { decodeExtraArgs, encodeExtraArgs, } from "./extra-args.js";
13
13
  export { estimateReceiveExecution } from "./gas.js";
14
+ export { getOffchainTokenData } from "./offchain.js";
14
15
  export { decodeMessage, getMessagesForSender, sourceToDestTokenAddresses } from "./requests.js";
15
16
  export { CCIPVersion, ExecutionState, IntentStatus, MessageStatus, } from "./types.js";
16
17
  export { bigIntReplacer, bigIntReviver, bytesToBuffer, decodeAddress, getDataBytes, isSupportedTxHash, networkInfo, withRetry, } from "./utils.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAgBpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAML,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EAeL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAEtB,SAAS;AACT,cAAc,mBAAmB,CAAA;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC1F,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAiBvB,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAML,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,EAgBL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAGL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAA;AAEtB,SAAS;AACT,cAAc,mBAAmB,CAAA;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC1F,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { type BytesLike } from 'ethers';
2
+ /** Token transfer in MessageV1 format. */
3
+ export type TokenTransferV1 = {
4
+ amount: bigint;
5
+ sourcePoolAddress: string;
6
+ sourceTokenAddress: string;
7
+ destTokenAddress: string;
8
+ tokenReceiver: string;
9
+ extraData: string;
10
+ };
11
+ /** MessageV1 struct matching the Solidity MessageV1Codec format. */
12
+ export type MessageV1 = {
13
+ sourceChainSelector: bigint;
14
+ destChainSelector: bigint;
15
+ messageNumber: bigint;
16
+ executionGasLimit: number;
17
+ ccipReceiveGasLimit: number;
18
+ finality: number;
19
+ ccvAndExecutorHash: string;
20
+ onRampAddress: string;
21
+ offRampAddress: string;
22
+ sender: string;
23
+ receiver: string;
24
+ destBlob: string;
25
+ tokenTransfer: readonly TokenTransferV1[];
26
+ data: string;
27
+ };
28
+ /**
29
+ * Decodes a MessageV1 from bytes following the v1 protocol format.
30
+ * @param encodedMessage - The encoded message bytes to decode.
31
+ * @returns The decoded MessageV1 struct.
32
+ */
33
+ export declare function decodeMessageV1(encodedMessage: BytesLike): MessageV1;
34
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,QAAQ,CAAA;AAM/E,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,SAAS,GAAG;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,SAAS,eAAe,EAAE,CAAA;IACzC,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AA2GD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,CAqIpE"}
@@ -0,0 +1,211 @@
1
+ import { dataSlice, hexlify, toBigInt, toNumber } from 'ethers';
2
+ import { CCIPMessageDecodeError } from "./errors/index.js";
3
+ import { decodeAddress, getDataBytes, networkInfo } from "./utils.js";
4
+ /**
5
+ * Decodes a TokenTransferV1 from bytes.
6
+ * @param encoded - The encoded bytes.
7
+ * @param offset - The starting offset.
8
+ * @param sourceFamily - The source chain family for source addresses.
9
+ * @param destFamily - The destination chain family for dest addresses.
10
+ * @returns The decoded token transfer and the new offset.
11
+ */
12
+ function decodeTokenTransferV1(encoded, offset, sourceFamily, destFamily) {
13
+ // version (1 byte)
14
+ if (offset >= encoded.length)
15
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_VERSION');
16
+ const version = encoded[offset++];
17
+ if (version !== 1)
18
+ throw new CCIPMessageDecodeError(`Invalid encoding version: ${version}`);
19
+ // amount (32 bytes)
20
+ if (offset + 32 > encoded.length)
21
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_AMOUNT');
22
+ const amount = toBigInt(dataSlice(encoded, offset, offset + 32));
23
+ offset += 32;
24
+ // sourcePoolAddressLength and sourcePoolAddress
25
+ if (offset >= encoded.length) {
26
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_SOURCE_POOL_LENGTH');
27
+ }
28
+ const sourcePoolAddressLength = encoded[offset++];
29
+ if (offset + sourcePoolAddressLength > encoded.length) {
30
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_SOURCE_POOL_CONTENT');
31
+ }
32
+ const sourcePoolAddress = decodeAddress(dataSlice(encoded, offset, offset + sourcePoolAddressLength), sourceFamily);
33
+ offset += sourcePoolAddressLength;
34
+ // sourceTokenAddressLength and sourceTokenAddress
35
+ if (offset >= encoded.length) {
36
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_SOURCE_TOKEN_LENGTH');
37
+ }
38
+ const sourceTokenAddressLength = encoded[offset++];
39
+ if (offset + sourceTokenAddressLength > encoded.length) {
40
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_SOURCE_TOKEN_CONTENT');
41
+ }
42
+ const sourceTokenAddress = decodeAddress(dataSlice(encoded, offset, offset + sourceTokenAddressLength), sourceFamily);
43
+ offset += sourceTokenAddressLength;
44
+ // destTokenAddressLength and destTokenAddress
45
+ if (offset >= encoded.length) {
46
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_DEST_TOKEN_LENGTH');
47
+ }
48
+ const destTokenAddressLength = encoded[offset++];
49
+ if (offset + destTokenAddressLength > encoded.length) {
50
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_DEST_TOKEN_CONTENT');
51
+ }
52
+ const destTokenAddress = decodeAddress(dataSlice(encoded, offset, offset + destTokenAddressLength), destFamily);
53
+ offset += destTokenAddressLength;
54
+ // tokenReceiverLength and tokenReceiver
55
+ if (offset >= encoded.length) {
56
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_TOKEN_RECEIVER_LENGTH');
57
+ }
58
+ const tokenReceiverLength = encoded[offset++];
59
+ if (offset + tokenReceiverLength > encoded.length) {
60
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_TOKEN_RECEIVER_CONTENT');
61
+ }
62
+ const tokenReceiver = decodeAddress(dataSlice(encoded, offset, offset + tokenReceiverLength), destFamily);
63
+ offset += tokenReceiverLength;
64
+ // extraDataLength and extraData
65
+ if (offset + 2 > encoded.length) {
66
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_EXTRA_DATA_LENGTH');
67
+ }
68
+ const extraDataLength = toNumber(dataSlice(encoded, offset, offset + 2));
69
+ offset += 2;
70
+ if (offset + extraDataLength > encoded.length) {
71
+ throw new CCIPMessageDecodeError('TOKEN_TRANSFER_EXTRA_DATA_CONTENT');
72
+ }
73
+ const extraData = hexlify(dataSlice(encoded, offset, offset + extraDataLength));
74
+ offset += extraDataLength;
75
+ return {
76
+ tokenTransfer: {
77
+ amount,
78
+ sourcePoolAddress,
79
+ sourceTokenAddress,
80
+ destTokenAddress,
81
+ tokenReceiver,
82
+ extraData,
83
+ },
84
+ newOffset: offset,
85
+ };
86
+ }
87
+ /**
88
+ * Decodes a MessageV1 from bytes following the v1 protocol format.
89
+ * @param encodedMessage - The encoded message bytes to decode.
90
+ * @returns The decoded MessageV1 struct.
91
+ */
92
+ export function decodeMessageV1(encodedMessage) {
93
+ const MESSAGE_V1_BASE_SIZE = 77;
94
+ const encoded = getDataBytes(encodedMessage);
95
+ if (encoded.length < MESSAGE_V1_BASE_SIZE)
96
+ throw new CCIPMessageDecodeError('MESSAGE_MIN_SIZE');
97
+ const version = encoded[0];
98
+ if (version !== 1)
99
+ throw new CCIPMessageDecodeError(`Invalid encoding version: ${version}`);
100
+ // sourceChainSelector (8 bytes, big endian)
101
+ const sourceChainSelector = toBigInt(dataSlice(encoded, 1, 9));
102
+ // destChainSelector (8 bytes, big endian)
103
+ const destChainSelector = toBigInt(dataSlice(encoded, 9, 17));
104
+ // Get chain families for address decoding
105
+ const sourceNetworkInfo = networkInfo(sourceChainSelector);
106
+ const destNetworkInfo = networkInfo(destChainSelector);
107
+ const sourceFamily = sourceNetworkInfo.family;
108
+ const destFamily = destNetworkInfo.family;
109
+ // messageNumber (8 bytes, big endian)
110
+ const messageNumber = toBigInt(dataSlice(encoded, 17, 25));
111
+ // executionGasLimit (4 bytes, big endian)
112
+ const executionGasLimit = toNumber(dataSlice(encoded, 25, 29));
113
+ // ccipReceiveGasLimit (4 bytes, big endian)
114
+ const ccipReceiveGasLimit = toNumber(dataSlice(encoded, 29, 33));
115
+ // finality (2 bytes, big endian)
116
+ const finality = toNumber(dataSlice(encoded, 33, 35));
117
+ // ccvAndExecutorHash (32 bytes)
118
+ const ccvAndExecutorHash = hexlify(dataSlice(encoded, 35, 67));
119
+ // onRampAddressLength and onRampAddress
120
+ let offset = 67;
121
+ if (offset >= encoded.length)
122
+ throw new CCIPMessageDecodeError('MESSAGE_ONRAMP_ADDRESS_LENGTH');
123
+ const onRampAddressLength = encoded[offset++];
124
+ if (offset + onRampAddressLength > encoded.length) {
125
+ throw new CCIPMessageDecodeError('MESSAGE_ONRAMP_ADDRESS_CONTENT');
126
+ }
127
+ const onRampAddress = decodeAddress(dataSlice(encoded, offset, offset + onRampAddressLength), sourceFamily);
128
+ offset += onRampAddressLength;
129
+ // offRampAddressLength and offRampAddress
130
+ if (offset >= encoded.length)
131
+ throw new CCIPMessageDecodeError('MESSAGE_OFFRAMP_ADDRESS_LENGTH');
132
+ const offRampAddressLength = encoded[offset++];
133
+ if (offset + offRampAddressLength > encoded.length) {
134
+ throw new CCIPMessageDecodeError('MESSAGE_OFFRAMP_ADDRESS_CONTENT');
135
+ }
136
+ const offRampAddress = decodeAddress(dataSlice(encoded, offset, offset + offRampAddressLength), destFamily);
137
+ offset += offRampAddressLength;
138
+ // senderLength and sender
139
+ if (offset >= encoded.length)
140
+ throw new CCIPMessageDecodeError('MESSAGE_SENDER_LENGTH');
141
+ const senderLength = encoded[offset++];
142
+ if (offset + senderLength > encoded.length) {
143
+ throw new CCIPMessageDecodeError('MESSAGE_SENDER_CONTENT');
144
+ }
145
+ const sender = decodeAddress(dataSlice(encoded, offset, offset + senderLength), sourceFamily);
146
+ offset += senderLength;
147
+ // receiverLength and receiver
148
+ if (offset >= encoded.length)
149
+ throw new CCIPMessageDecodeError('MESSAGE_RECEIVER_LENGTH');
150
+ const receiverLength = encoded[offset++];
151
+ if (offset + receiverLength > encoded.length) {
152
+ throw new CCIPMessageDecodeError('MESSAGE_RECEIVER_CONTENT');
153
+ }
154
+ const receiver = decodeAddress(dataSlice(encoded, offset, offset + receiverLength), destFamily);
155
+ offset += receiverLength;
156
+ // destBlobLength and destBlob
157
+ if (offset + 2 > encoded.length)
158
+ throw new CCIPMessageDecodeError('MESSAGE_DEST_BLOB_LENGTH');
159
+ const destBlobLength = toNumber(dataSlice(encoded, offset, offset + 2));
160
+ offset += 2;
161
+ if (offset + destBlobLength > encoded.length) {
162
+ throw new CCIPMessageDecodeError('MESSAGE_DEST_BLOB_CONTENT');
163
+ }
164
+ const destBlob = hexlify(dataSlice(encoded, offset, offset + destBlobLength));
165
+ offset += destBlobLength;
166
+ // tokenTransferLength and tokenTransfer
167
+ if (offset + 2 > encoded.length)
168
+ throw new CCIPMessageDecodeError('MESSAGE_TOKEN_TRANSFER_LENGTH');
169
+ const tokenTransferLength = toNumber(dataSlice(encoded, offset, offset + 2));
170
+ offset += 2;
171
+ // Decode token transfer, which is either 0 or 1
172
+ const tokenTransfer = [];
173
+ if (tokenTransferLength > 0) {
174
+ const expectedEnd = offset + tokenTransferLength;
175
+ const result = decodeTokenTransferV1(encoded, offset, sourceFamily, destFamily);
176
+ tokenTransfer.push(result.tokenTransfer);
177
+ offset = result.newOffset;
178
+ if (offset !== expectedEnd)
179
+ throw new CCIPMessageDecodeError('MESSAGE_TOKEN_TRANSFER_CONTENT');
180
+ }
181
+ // dataLength and data
182
+ if (offset + 2 > encoded.length)
183
+ throw new CCIPMessageDecodeError('MESSAGE_DATA_LENGTH');
184
+ const dataLength = toNumber(dataSlice(encoded, offset, offset + 2));
185
+ offset += 2;
186
+ if (offset + dataLength > encoded.length) {
187
+ throw new CCIPMessageDecodeError('MESSAGE_DATA_CONTENT');
188
+ }
189
+ const data = hexlify(dataSlice(encoded, offset, offset + dataLength));
190
+ offset += dataLength;
191
+ // Ensure we've consumed all bytes
192
+ if (offset !== encoded.length)
193
+ throw new CCIPMessageDecodeError('MESSAGE_FINAL_OFFSET');
194
+ return {
195
+ sourceChainSelector,
196
+ destChainSelector,
197
+ messageNumber,
198
+ executionGasLimit,
199
+ ccipReceiveGasLimit,
200
+ finality,
201
+ ccvAndExecutorHash,
202
+ onRampAddress,
203
+ offRampAddress,
204
+ sender,
205
+ receiver,
206
+ destBlob,
207
+ tokenTransfer,
208
+ data,
209
+ };
210
+ }
211
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,24 @@
1
- import { NetworkType } from './types.ts';
1
+ import type { PickDeep } from 'type-fest';
2
+ import { type CCIPRequest, type OffchainTokenData, type WithLogger, NetworkType } from './types.ts';
2
3
  /**
3
- * Returns the USDC attestation for a given MessageSent Log
4
- * https://developers.circle.com/stablecoins/reference/getattestation
4
+ * Returns the USDC attestation for a given tokenAmount.extraData and txHash
5
+ * https://developers.circle.com/cctp/quickstarts/transfer-usdc-ethereum-to-arc#3-3-retrieve-attestation
5
6
  *
6
- * @param message - payload of USDC MessageSent(bytes message) event
7
+ * @param opts - CCTPv2 options
7
8
  * @param networkType - network type (mainnet or testnet)
8
- * @returns USDC/CCTP attestation bytes
9
+ * @returns USDC/CCTP attestation and message
9
10
  */
10
- export declare function getUsdcAttestation(message: string, networkType: NetworkType): Promise<string>;
11
+ export declare function getUsdcAttestation(opts: {
12
+ /** CCTP sourceDomain */
13
+ sourceDomain: number;
14
+ /** CCTP burn eventNonce */
15
+ nonce: number;
16
+ /** burn txHash, same as CCIP request */
17
+ txHash: string;
18
+ }, networkType: NetworkType): Promise<{
19
+ attestation: string;
20
+ message: string;
21
+ }>;
11
22
  /**
12
23
  * Returns the LBTC attestation for a given payload hash
13
24
  *
@@ -18,4 +29,10 @@ export declare function getUsdcAttestation(message: string, networkType: Network
18
29
  export declare function getLbtcAttestation(payloadHash: string, networkType: NetworkType): Promise<{
19
30
  attestation: string;
20
31
  }>;
32
+ /**
33
+ * Fetch CCIPv1 offchain token data for USDC and LBTC tokenAmounts
34
+ * @param request - CCIPRequest containing tx.hash and message
35
+ * @returns Promise resolving to an OffchainTokenData for each tokenAmount
36
+ */
37
+ export declare function getOffchainTokenData(request: PickDeep<CCIPRequest, 'tx.hash' | `message`>, { logger }?: WithLogger): Promise<OffchainTokenData[]>;
21
38
  //# sourceMappingURL=offchain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offchain.d.ts","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAsBxC;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAsBD"}
1
+ {"version":3,"file":"offchain.d.ts","sourceRoot":"","sources":["../src/offchain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmBnG;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,EACD,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAcnD;AAgBD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAsBD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC,EACrD,EAAE,MAAgB,EAAE,GAAE,UAAe,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgE9B"}