@interest-protocol/blast-cctp-sdk 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,9 @@
1
- # Temporary Holding Version
1
+ # @interest-protocol/blast-cctp-sdk
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The cctp package in the [Blast SDK monorepo](https://github.com/interest-protocol/blast-v2-sdk).
4
+
5
+ ```sh
6
+ npm install @interest-protocol/blast-cctp-sdk
7
+ ```
8
+
9
+ See the repository README and docs for usage, development, and release guidance.
package/dist/abi.d.ts ADDED
@@ -0,0 +1,342 @@
1
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, ForwarderFactory.sol. */
2
+ export declare const cctpForwarderFactoryAbi: readonly [{
3
+ readonly name: "usdc";
4
+ readonly type: 'function';
5
+ readonly stateMutability: "view";
6
+ readonly inputs: readonly [];
7
+ readonly outputs: readonly [{
8
+ readonly type: "address";
9
+ }];
10
+ }, {
11
+ readonly name: "rescuer";
12
+ readonly type: 'function';
13
+ readonly stateMutability: "view";
14
+ readonly inputs: readonly [];
15
+ readonly outputs: readonly [{
16
+ readonly type: "address";
17
+ }];
18
+ }, {
19
+ readonly name: "initCode";
20
+ readonly type: 'function';
21
+ readonly stateMutability: "pure";
22
+ readonly inputs: readonly [{
23
+ readonly type: "bytes32";
24
+ readonly name: "recipient";
25
+ }, {
26
+ readonly type: "uint8";
27
+ readonly name: "mode";
28
+ }, {
29
+ readonly type: "uint32";
30
+ readonly name: "index";
31
+ }];
32
+ readonly outputs: readonly [{
33
+ readonly type: "bytes";
34
+ }];
35
+ }, {
36
+ readonly name: "addressOf";
37
+ readonly type: 'function';
38
+ readonly stateMutability: "view";
39
+ readonly inputs: readonly [{
40
+ readonly type: "bytes32";
41
+ readonly name: "recipient";
42
+ }, {
43
+ readonly type: "uint8";
44
+ readonly name: "mode";
45
+ }, {
46
+ readonly type: "uint32";
47
+ readonly name: "index";
48
+ }];
49
+ readonly outputs: readonly [{
50
+ readonly type: "address";
51
+ }];
52
+ }, {
53
+ readonly name: "deploy";
54
+ readonly type: 'function';
55
+ readonly stateMutability: "nonpayable";
56
+ readonly inputs: readonly [{
57
+ readonly type: "bytes32";
58
+ readonly name: "recipient";
59
+ }, {
60
+ readonly type: "uint8";
61
+ readonly name: "mode";
62
+ }, {
63
+ readonly type: "uint32";
64
+ readonly name: "index";
65
+ }];
66
+ readonly outputs: readonly [{
67
+ readonly type: "address";
68
+ readonly name: "forwarder";
69
+ }];
70
+ }, {
71
+ readonly name: "forward";
72
+ readonly type: 'function';
73
+ readonly stateMutability: "nonpayable";
74
+ readonly inputs: readonly [{
75
+ readonly type: "bytes32";
76
+ readonly name: "recipient";
77
+ }, {
78
+ readonly type: "uint8";
79
+ readonly name: "mode";
80
+ }, {
81
+ readonly type: "uint32";
82
+ readonly name: "index";
83
+ }];
84
+ readonly outputs: readonly [{
85
+ readonly type: "address";
86
+ readonly name: "forwarder";
87
+ }, {
88
+ readonly type: "uint256";
89
+ readonly name: "amount";
90
+ }, {
91
+ readonly type: "uint256";
92
+ readonly name: "maxFee";
93
+ }];
94
+ }, {
95
+ readonly name: "ForwarderDeployed";
96
+ readonly type: 'event';
97
+ readonly inputs: readonly [{
98
+ readonly type: "bytes32";
99
+ readonly name: "recipient";
100
+ readonly indexed: true;
101
+ }, {
102
+ readonly type: "uint8";
103
+ readonly name: "mode";
104
+ }, {
105
+ readonly type: "uint32";
106
+ readonly name: "index";
107
+ }, {
108
+ readonly type: "address";
109
+ readonly name: "forwarder";
110
+ readonly indexed: true;
111
+ }];
112
+ }, {
113
+ readonly name: "LocalDomainIsSui";
114
+ readonly type: 'error';
115
+ readonly inputs: readonly [];
116
+ }, {
117
+ readonly name: "SuiNotRegistered";
118
+ readonly type: 'error';
119
+ readonly inputs: readonly [];
120
+ }, {
121
+ readonly name: "MinterNotWired";
122
+ readonly type: 'error';
123
+ readonly inputs: readonly [{
124
+ readonly type: "address";
125
+ readonly name: "minter";
126
+ }];
127
+ }, {
128
+ readonly name: "NoLocalUsdc";
129
+ readonly type: 'error';
130
+ readonly inputs: readonly [];
131
+ }, {
132
+ readonly name: "BurnLimitZero";
133
+ readonly type: 'error';
134
+ readonly inputs: readonly [];
135
+ }, {
136
+ readonly name: "ZeroRecipient";
137
+ readonly type: 'error';
138
+ readonly inputs: readonly [];
139
+ }, {
140
+ readonly name: "InvalidMode";
141
+ readonly type: 'error';
142
+ readonly inputs: readonly [{
143
+ readonly type: "uint8";
144
+ readonly name: "mode";
145
+ }];
146
+ }];
147
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, Forwarder.sol. */
148
+ export declare const cctpForwarderAbi: readonly [{
149
+ readonly name: "MODE_STANDARD";
150
+ readonly type: 'function';
151
+ readonly stateMutability: "view";
152
+ readonly inputs: readonly [];
153
+ readonly outputs: readonly [{
154
+ readonly type: "uint8";
155
+ }];
156
+ }, {
157
+ readonly name: "MODE_FAST";
158
+ readonly type: 'function';
159
+ readonly stateMutability: "view";
160
+ readonly inputs: readonly [];
161
+ readonly outputs: readonly [{
162
+ readonly type: "uint8";
163
+ }];
164
+ }, {
165
+ readonly name: "FEE_CEILING_BPS";
166
+ readonly type: 'function';
167
+ readonly stateMutability: "view";
168
+ readonly inputs: readonly [];
169
+ readonly outputs: readonly [{
170
+ readonly type: "uint256";
171
+ }];
172
+ }, {
173
+ readonly name: "MESSENGER";
174
+ readonly type: 'function';
175
+ readonly stateMutability: "view";
176
+ readonly inputs: readonly [];
177
+ readonly outputs: readonly [{
178
+ readonly type: "address";
179
+ }];
180
+ }, {
181
+ readonly name: "usdc";
182
+ readonly type: 'function';
183
+ readonly stateMutability: "view";
184
+ readonly inputs: readonly [];
185
+ readonly outputs: readonly [{
186
+ readonly type: "address";
187
+ }];
188
+ }, {
189
+ readonly name: "recipient";
190
+ readonly type: 'function';
191
+ readonly stateMutability: "view";
192
+ readonly inputs: readonly [];
193
+ readonly outputs: readonly [{
194
+ readonly type: "bytes32";
195
+ }];
196
+ }, {
197
+ readonly name: "minFinalityThreshold";
198
+ readonly type: 'function';
199
+ readonly stateMutability: "view";
200
+ readonly inputs: readonly [];
201
+ readonly outputs: readonly [{
202
+ readonly type: "uint32";
203
+ }];
204
+ }, {
205
+ readonly name: "index";
206
+ readonly type: 'function';
207
+ readonly stateMutability: "view";
208
+ readonly inputs: readonly [];
209
+ readonly outputs: readonly [{
210
+ readonly type: "uint32";
211
+ }];
212
+ }, {
213
+ readonly name: "rescuer";
214
+ readonly type: 'function';
215
+ readonly stateMutability: "view";
216
+ readonly inputs: readonly [];
217
+ readonly outputs: readonly [{
218
+ readonly type: "address";
219
+ }];
220
+ }, {
221
+ readonly name: "forward";
222
+ readonly type: 'function';
223
+ readonly stateMutability: "nonpayable";
224
+ readonly inputs: readonly [];
225
+ readonly outputs: readonly [{
226
+ readonly type: "uint256";
227
+ readonly name: "amount";
228
+ }, {
229
+ readonly type: "uint256";
230
+ readonly name: "maxFee";
231
+ }];
232
+ }, {
233
+ readonly name: "rescueToken";
234
+ readonly type: 'function';
235
+ readonly stateMutability: "nonpayable";
236
+ readonly inputs: readonly [{
237
+ readonly type: "address";
238
+ readonly name: "token";
239
+ }, {
240
+ readonly type: "address";
241
+ readonly name: "to";
242
+ }, {
243
+ readonly type: "uint256";
244
+ readonly name: "amount";
245
+ }];
246
+ readonly outputs: readonly [];
247
+ }, {
248
+ readonly name: "rescueNative";
249
+ readonly type: 'function';
250
+ readonly stateMutability: "nonpayable";
251
+ readonly inputs: readonly [{
252
+ readonly type: "address";
253
+ readonly name: "to";
254
+ }];
255
+ readonly outputs: readonly [];
256
+ }, {
257
+ readonly name: "Forwarded";
258
+ readonly type: 'event';
259
+ readonly inputs: readonly [{
260
+ readonly type: "bytes32";
261
+ readonly name: "recipient";
262
+ readonly indexed: true;
263
+ }, {
264
+ readonly type: "uint256";
265
+ readonly name: "amount";
266
+ }, {
267
+ readonly type: "uint256";
268
+ readonly name: "maxFee";
269
+ }, {
270
+ readonly type: "uint32";
271
+ readonly name: "minFinalityThreshold";
272
+ }];
273
+ }, {
274
+ readonly name: "Rescued";
275
+ readonly type: 'event';
276
+ readonly inputs: readonly [{
277
+ readonly type: "address";
278
+ readonly name: "token";
279
+ readonly indexed: true;
280
+ }, {
281
+ readonly type: "address";
282
+ readonly name: "to";
283
+ readonly indexed: true;
284
+ }, {
285
+ readonly type: "uint256";
286
+ readonly name: "amount";
287
+ }];
288
+ }, {
289
+ readonly name: "InvalidMode";
290
+ readonly type: 'error';
291
+ readonly inputs: readonly [{
292
+ readonly type: "uint8";
293
+ readonly name: "mode";
294
+ }];
295
+ }, {
296
+ readonly name: "ZeroRecipient";
297
+ readonly type: 'error';
298
+ readonly inputs: readonly [];
299
+ }, {
300
+ readonly name: "NothingToForward";
301
+ readonly type: 'error';
302
+ readonly inputs: readonly [];
303
+ }, {
304
+ readonly name: "BurnLimitZero";
305
+ readonly type: 'error';
306
+ readonly inputs: readonly [];
307
+ }, {
308
+ readonly name: "FeeAboveCeiling";
309
+ readonly type: 'error';
310
+ readonly inputs: readonly [{
311
+ readonly type: "uint256";
312
+ readonly name: "fee";
313
+ }, {
314
+ readonly type: "uint256";
315
+ readonly name: "ceiling";
316
+ }];
317
+ }, {
318
+ readonly name: "ApproveFailed";
319
+ readonly type: 'error';
320
+ readonly inputs: readonly [];
321
+ }, {
322
+ readonly name: "NotRescuer";
323
+ readonly type: 'error';
324
+ readonly inputs: readonly [];
325
+ }, {
326
+ readonly name: "CannotRescueUsdc";
327
+ readonly type: 'error';
328
+ readonly inputs: readonly [];
329
+ }, {
330
+ readonly name: "RescueFailed";
331
+ readonly type: 'error';
332
+ readonly inputs: readonly [];
333
+ }, {
334
+ readonly name: "TransferFailed";
335
+ readonly type: 'error';
336
+ readonly inputs: readonly [];
337
+ }, {
338
+ readonly name: "ETHTransferFailed";
339
+ readonly type: 'error';
340
+ readonly inputs: readonly [];
341
+ }];
342
+ //# sourceMappingURL=abi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAelC,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B3B,CAAC"}
package/dist/abi.js ADDED
@@ -0,0 +1,47 @@
1
+ import { parseAbi } from "viem";
2
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, ForwarderFactory.sol. */
3
+ export const cctpForwarderFactoryAbi = parseAbi([
4
+ "function usdc() view returns (address)",
5
+ "function rescuer() view returns (address)",
6
+ "function initCode(bytes32 recipient, uint8 mode, uint32 index) pure returns (bytes)",
7
+ "function addressOf(bytes32 recipient, uint8 mode, uint32 index) view returns (address)",
8
+ "function deploy(bytes32 recipient, uint8 mode, uint32 index) returns (address forwarder)",
9
+ "function forward(bytes32 recipient, uint8 mode, uint32 index) returns (address forwarder, uint256 amount, uint256 maxFee)",
10
+ "event ForwarderDeployed(bytes32 indexed recipient, uint8 mode, uint32 index, address indexed forwarder)",
11
+ "error LocalDomainIsSui()",
12
+ "error SuiNotRegistered()",
13
+ "error MinterNotWired(address minter)",
14
+ "error NoLocalUsdc()",
15
+ "error BurnLimitZero()",
16
+ "error ZeroRecipient()",
17
+ "error InvalidMode(uint8 mode)",
18
+ ]);
19
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, Forwarder.sol. */
20
+ export const cctpForwarderAbi = parseAbi([
21
+ "function MODE_STANDARD() view returns (uint8)",
22
+ "function MODE_FAST() view returns (uint8)",
23
+ "function FEE_CEILING_BPS() view returns (uint256)",
24
+ "function MESSENGER() view returns (address)",
25
+ "function usdc() view returns (address)",
26
+ "function recipient() view returns (bytes32)",
27
+ "function minFinalityThreshold() view returns (uint32)",
28
+ "function index() view returns (uint32)",
29
+ "function rescuer() view returns (address)",
30
+ "function forward() returns (uint256 amount, uint256 maxFee)",
31
+ "function rescueToken(address token, address to, uint256 amount)",
32
+ "function rescueNative(address to)",
33
+ "event Forwarded(bytes32 indexed recipient, uint256 amount, uint256 maxFee, uint32 minFinalityThreshold)",
34
+ "event Rescued(address indexed token, address indexed to, uint256 amount)",
35
+ "error InvalidMode(uint8 mode)",
36
+ "error ZeroRecipient()",
37
+ "error NothingToForward()",
38
+ "error BurnLimitZero()",
39
+ "error FeeAboveCeiling(uint256 fee, uint256 ceiling)",
40
+ "error ApproveFailed()",
41
+ "error NotRescuer()",
42
+ "error CannotRescueUsdc()",
43
+ "error RescueFailed()",
44
+ "error TransferFailed()",
45
+ "error ETHTransferFailed()",
46
+ ]);
47
+ //# sourceMappingURL=abi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC9C,wCAAwC;IACxC,2CAA2C;IAC3C,qFAAqF;IACrF,wFAAwF;IACxF,0FAA0F;IAC1F,2HAA2H;IAC3H,yGAAyG;IACzG,0BAA0B;IAC1B,0BAA0B;IAC1B,sCAAsC;IACtC,qBAAqB;IACrB,uBAAuB;IACvB,uBAAuB;IACvB,+BAA+B;CAChC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACvC,+CAA+C;IAC/C,2CAA2C;IAC3C,mDAAmD;IACnD,6CAA6C;IAC7C,wCAAwC;IACxC,6CAA6C;IAC7C,uDAAuD;IACvD,wCAAwC;IACxC,2CAA2C;IAC3C,6DAA6D;IAC7D,iEAAiE;IACjE,mCAAmC;IACnC,yGAAyG;IACzG,0EAA0E;IAC1E,+BAA+B;IAC/B,uBAAuB;IACvB,0BAA0B;IAC1B,uBAAuB;IACvB,qDAAqD;IACrD,uBAAuB;IACvB,oBAAoB;IACpB,0BAA0B;IAC1B,sBAAsB;IACtB,wBAAwB;IACxB,2BAA2B;CAC5B,CAAC,CAAC"}
@@ -0,0 +1,165 @@
1
+ import type { Address, Hex } from "viem";
2
+ export * from "./abi.ts";
3
+ export declare const CCTP_MODE_STANDARD = 0;
4
+ export declare const CCTP_MODE_FAST = 1;
5
+ export type CctpMode = typeof CCTP_MODE_STANDARD | typeof CCTP_MODE_FAST;
6
+ /**
7
+ * Parameters for viem's readContract (addressOf/initCode), simulateContract
8
+ * or writeContract (deploy/forward). The caller supplies the deployed factory
9
+ * on its selected chain. The recipient is a Sui address, never an EVM address.
10
+ */
11
+ export declare function cctpDepositParameters({ factory, recipient, mode, index, }: {
12
+ factory: Address;
13
+ recipient: string;
14
+ mode?: CctpMode;
15
+ index?: number;
16
+ }): {
17
+ address: `0x${string}`;
18
+ abi: readonly [{
19
+ readonly name: "usdc";
20
+ readonly type: 'function';
21
+ readonly stateMutability: "view";
22
+ readonly inputs: readonly [];
23
+ readonly outputs: readonly [{
24
+ readonly type: "address";
25
+ }];
26
+ }, {
27
+ readonly name: "rescuer";
28
+ readonly type: 'function';
29
+ readonly stateMutability: "view";
30
+ readonly inputs: readonly [];
31
+ readonly outputs: readonly [{
32
+ readonly type: "address";
33
+ }];
34
+ }, {
35
+ readonly name: "initCode";
36
+ readonly type: 'function';
37
+ readonly stateMutability: "pure";
38
+ readonly inputs: readonly [{
39
+ readonly type: "bytes32";
40
+ readonly name: "recipient";
41
+ }, {
42
+ readonly type: "uint8";
43
+ readonly name: "mode";
44
+ }, {
45
+ readonly type: "uint32";
46
+ readonly name: "index";
47
+ }];
48
+ readonly outputs: readonly [{
49
+ readonly type: "bytes";
50
+ }];
51
+ }, {
52
+ readonly name: "addressOf";
53
+ readonly type: 'function';
54
+ readonly stateMutability: "view";
55
+ readonly inputs: readonly [{
56
+ readonly type: "bytes32";
57
+ readonly name: "recipient";
58
+ }, {
59
+ readonly type: "uint8";
60
+ readonly name: "mode";
61
+ }, {
62
+ readonly type: "uint32";
63
+ readonly name: "index";
64
+ }];
65
+ readonly outputs: readonly [{
66
+ readonly type: "address";
67
+ }];
68
+ }, {
69
+ readonly name: "deploy";
70
+ readonly type: 'function';
71
+ readonly stateMutability: "nonpayable";
72
+ readonly inputs: readonly [{
73
+ readonly type: "bytes32";
74
+ readonly name: "recipient";
75
+ }, {
76
+ readonly type: "uint8";
77
+ readonly name: "mode";
78
+ }, {
79
+ readonly type: "uint32";
80
+ readonly name: "index";
81
+ }];
82
+ readonly outputs: readonly [{
83
+ readonly type: "address";
84
+ readonly name: "forwarder";
85
+ }];
86
+ }, {
87
+ readonly name: "forward";
88
+ readonly type: 'function';
89
+ readonly stateMutability: "nonpayable";
90
+ readonly inputs: readonly [{
91
+ readonly type: "bytes32";
92
+ readonly name: "recipient";
93
+ }, {
94
+ readonly type: "uint8";
95
+ readonly name: "mode";
96
+ }, {
97
+ readonly type: "uint32";
98
+ readonly name: "index";
99
+ }];
100
+ readonly outputs: readonly [{
101
+ readonly type: "address";
102
+ readonly name: "forwarder";
103
+ }, {
104
+ readonly type: "uint256";
105
+ readonly name: "amount";
106
+ }, {
107
+ readonly type: "uint256";
108
+ readonly name: "maxFee";
109
+ }];
110
+ }, {
111
+ readonly name: "ForwarderDeployed";
112
+ readonly type: 'event';
113
+ readonly inputs: readonly [{
114
+ readonly type: "bytes32";
115
+ readonly name: "recipient";
116
+ readonly indexed: true;
117
+ }, {
118
+ readonly type: "uint8";
119
+ readonly name: "mode";
120
+ }, {
121
+ readonly type: "uint32";
122
+ readonly name: "index";
123
+ }, {
124
+ readonly type: "address";
125
+ readonly name: "forwarder";
126
+ readonly indexed: true;
127
+ }];
128
+ }, {
129
+ readonly name: "LocalDomainIsSui";
130
+ readonly type: 'error';
131
+ readonly inputs: readonly [];
132
+ }, {
133
+ readonly name: "SuiNotRegistered";
134
+ readonly type: 'error';
135
+ readonly inputs: readonly [];
136
+ }, {
137
+ readonly name: "MinterNotWired";
138
+ readonly type: 'error';
139
+ readonly inputs: readonly [{
140
+ readonly type: "address";
141
+ readonly name: "minter";
142
+ }];
143
+ }, {
144
+ readonly name: "NoLocalUsdc";
145
+ readonly type: 'error';
146
+ readonly inputs: readonly [];
147
+ }, {
148
+ readonly name: "BurnLimitZero";
149
+ readonly type: 'error';
150
+ readonly inputs: readonly [];
151
+ }, {
152
+ readonly name: "ZeroRecipient";
153
+ readonly type: 'error';
154
+ readonly inputs: readonly [];
155
+ }, {
156
+ readonly name: "InvalidMode";
157
+ readonly type: 'error';
158
+ readonly inputs: readonly [{
159
+ readonly type: "uint8";
160
+ readonly name: "mode";
161
+ }];
162
+ }];
163
+ args: readonly [Hex, 0 | 1, number];
164
+ };
165
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKzC,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,MAAM,MAAM,QAAQ,GAAG,OAAO,kBAAkB,GAAG,OAAO,cAAc,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,EACT,IAAqB,EACrB,KAAS,GACV,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmBiC,GAAG;EAEpC"}
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ import { isValidSuiAddress, normalizeSuiAddress } from "@mysten/sui/utils";
2
+ import invariant from "tiny-invariant";
3
+ import { getAddress, zeroAddress, zeroHash } from "viem";
4
+ import { cctpForwarderFactoryAbi } from "./abi.js";
5
+ export * from "./abi.js";
6
+ export const CCTP_MODE_STANDARD = 0;
7
+ export const CCTP_MODE_FAST = 1;
8
+ /**
9
+ * Parameters for viem's readContract (addressOf/initCode), simulateContract
10
+ * or writeContract (deploy/forward). The caller supplies the deployed factory
11
+ * on its selected chain. The recipient is a Sui address, never an EVM address.
12
+ */
13
+ export function cctpDepositParameters({ factory, recipient, mode = CCTP_MODE_FAST, index = 0, }) {
14
+ const address = getAddress(factory);
15
+ invariant(address !== zeroAddress, "CCTP factory must be nonzero");
16
+ const normalizedRecipient = normalizeSuiAddress(recipient);
17
+ invariant(isValidSuiAddress(normalizedRecipient) && normalizedRecipient !== zeroHash, "CCTP recipient must be a nonzero Sui address");
18
+ invariant(mode === CCTP_MODE_STANDARD || mode === CCTP_MODE_FAST, "CCTP mode must be Standard (0) or Fast (1)");
19
+ invariant(Number.isInteger(index) && index >= 0 && index <= 0xffff_ffff, "CCTP index must be a uint32");
20
+ return {
21
+ address,
22
+ abi: cctpForwarderFactoryAbi,
23
+ args: [normalizedRecipient, mode, index],
24
+ };
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,cAAc,UAAU,CAAC;AAEzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAGhC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,EACT,IAAI,GAAG,cAAc,EACrB,KAAK,GAAG,CAAC,GAMV;IACC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,OAAO,KAAK,WAAW,EAAE,8BAA8B,CAAC,CAAC;IACnE,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC3D,SAAS,CACP,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,KAAK,QAAQ,EAC1E,8CAA8C,CAC/C,CAAC;IACF,SAAS,CACP,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,cAAc,EACtD,4CAA4C,CAC7C,CAAC;IACF,SAAS,CACP,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,WAAW,EAC7D,6BAA6B,CAC9B,CAAC;IACF,OAAO;QACL,OAAO;QACP,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,CAAC,mBAA0B,EAAE,IAAI,EAAE,KAAK,CAAU;KACzD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,46 @@
1
1
  {
2
2
  "name": "@interest-protocol/blast-cctp-sdk",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "Blast cctp SDK",
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/interest-protocol/blast-v2-sdk.git",
9
+ "directory": "packages/cctp"
10
+ },
11
+ "sideEffects": false,
12
+ "files": [
13
+ "dist",
14
+ "src"
15
+ ],
16
+ "exports": {
17
+ "./abi": {
18
+ "types": "./dist/abi.d.ts",
19
+ "default": "./dist/abi.js"
20
+ },
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "./package.json": "./package.json"
26
+ },
27
+ "engines": {
28
+ "node": ">=22"
29
+ },
30
+ "scripts": {
31
+ "build": "node --eval \"fs.rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "check:package": "publint --strict && attw --pack . --profile esm-only",
34
+ "prepack": "npm run build"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "dependencies": {
40
+ "tiny-invariant": "^1.3.3",
41
+ "viem": "^2.57.4"
42
+ },
43
+ "peerDependencies": {
44
+ "@mysten/sui": "^2.26.2"
45
+ }
46
+ }
package/src/abi.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { parseAbi } from "viem";
2
+
3
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, ForwarderFactory.sol. */
4
+ export const cctpForwarderFactoryAbi = parseAbi([
5
+ "function usdc() view returns (address)",
6
+ "function rescuer() view returns (address)",
7
+ "function initCode(bytes32 recipient, uint8 mode, uint32 index) pure returns (bytes)",
8
+ "function addressOf(bytes32 recipient, uint8 mode, uint32 index) view returns (address)",
9
+ "function deploy(bytes32 recipient, uint8 mode, uint32 index) returns (address forwarder)",
10
+ "function forward(bytes32 recipient, uint8 mode, uint32 index) returns (address forwarder, uint256 amount, uint256 maxFee)",
11
+ "event ForwarderDeployed(bytes32 indexed recipient, uint8 mode, uint32 index, address indexed forwarder)",
12
+ "error LocalDomainIsSui()",
13
+ "error SuiNotRegistered()",
14
+ "error MinterNotWired(address minter)",
15
+ "error NoLocalUsdc()",
16
+ "error BurnLimitZero()",
17
+ "error ZeroRecipient()",
18
+ "error InvalidMode(uint8 mode)",
19
+ ]);
20
+
21
+ /** blast-cctp b670f07ee290aace73b62b91694a9de0f7068f49, Forwarder.sol. */
22
+ export const cctpForwarderAbi = parseAbi([
23
+ "function MODE_STANDARD() view returns (uint8)",
24
+ "function MODE_FAST() view returns (uint8)",
25
+ "function FEE_CEILING_BPS() view returns (uint256)",
26
+ "function MESSENGER() view returns (address)",
27
+ "function usdc() view returns (address)",
28
+ "function recipient() view returns (bytes32)",
29
+ "function minFinalityThreshold() view returns (uint32)",
30
+ "function index() view returns (uint32)",
31
+ "function rescuer() view returns (address)",
32
+ "function forward() returns (uint256 amount, uint256 maxFee)",
33
+ "function rescueToken(address token, address to, uint256 amount)",
34
+ "function rescueNative(address to)",
35
+ "event Forwarded(bytes32 indexed recipient, uint256 amount, uint256 maxFee, uint32 minFinalityThreshold)",
36
+ "event Rescued(address indexed token, address indexed to, uint256 amount)",
37
+ "error InvalidMode(uint8 mode)",
38
+ "error ZeroRecipient()",
39
+ "error NothingToForward()",
40
+ "error BurnLimitZero()",
41
+ "error FeeAboveCeiling(uint256 fee, uint256 ceiling)",
42
+ "error ApproveFailed()",
43
+ "error NotRescuer()",
44
+ "error CannotRescueUsdc()",
45
+ "error RescueFailed()",
46
+ "error TransferFailed()",
47
+ "error ETHTransferFailed()",
48
+ ]);
package/src/index.ts ADDED
@@ -0,0 +1,50 @@
1
+ import { isValidSuiAddress, normalizeSuiAddress } from "@mysten/sui/utils";
2
+ import invariant from "tiny-invariant";
3
+ import type { Address, Hex } from "viem";
4
+ import { getAddress, zeroAddress, zeroHash } from "viem";
5
+
6
+ import { cctpForwarderFactoryAbi } from "./abi.ts";
7
+
8
+ export * from "./abi.ts";
9
+
10
+ export const CCTP_MODE_STANDARD = 0;
11
+ export const CCTP_MODE_FAST = 1;
12
+ export type CctpMode = typeof CCTP_MODE_STANDARD | typeof CCTP_MODE_FAST;
13
+
14
+ /**
15
+ * Parameters for viem's readContract (addressOf/initCode), simulateContract
16
+ * or writeContract (deploy/forward). The caller supplies the deployed factory
17
+ * on its selected chain. The recipient is a Sui address, never an EVM address.
18
+ */
19
+ export function cctpDepositParameters({
20
+ factory,
21
+ recipient,
22
+ mode = CCTP_MODE_FAST,
23
+ index = 0,
24
+ }: {
25
+ factory: Address;
26
+ recipient: string;
27
+ mode?: CctpMode;
28
+ index?: number;
29
+ }) {
30
+ const address = getAddress(factory);
31
+ invariant(address !== zeroAddress, "CCTP factory must be nonzero");
32
+ const normalizedRecipient = normalizeSuiAddress(recipient);
33
+ invariant(
34
+ isValidSuiAddress(normalizedRecipient) && normalizedRecipient !== zeroHash,
35
+ "CCTP recipient must be a nonzero Sui address",
36
+ );
37
+ invariant(
38
+ mode === CCTP_MODE_STANDARD || mode === CCTP_MODE_FAST,
39
+ "CCTP mode must be Standard (0) or Fast (1)",
40
+ );
41
+ invariant(
42
+ Number.isInteger(index) && index >= 0 && index <= 0xffff_ffff,
43
+ "CCTP index must be a uint32",
44
+ );
45
+ return {
46
+ address,
47
+ abi: cctpForwarderFactoryAbi,
48
+ args: [normalizedRecipient as Hex, mode, index] as const,
49
+ };
50
+ }