@wormhole-foundation/sdk-sui-tokenbridge 4.22.0 → 5.0.0-beta.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 (38) hide show
  1. package/dist/esm/automaticTokenBridge.d.ts +9 -5
  2. package/dist/esm/automaticTokenBridge.d.ts.map +1 -1
  3. package/dist/esm/automaticTokenBridge.js +51 -87
  4. package/dist/esm/automaticTokenBridge.js.map +1 -1
  5. package/dist/esm/executorTokenBridge.d.ts +6 -5
  6. package/dist/esm/executorTokenBridge.d.ts.map +1 -1
  7. package/dist/esm/executorTokenBridge.js +1 -3
  8. package/dist/esm/executorTokenBridge.js.map +1 -1
  9. package/dist/esm/tokenBridge.d.ts +4 -4
  10. package/dist/esm/tokenBridge.d.ts.map +1 -1
  11. package/dist/esm/tokenBridge.js +62 -113
  12. package/dist/esm/tokenBridge.js.map +1 -1
  13. package/dist/esm/utils.d.ts +8 -3
  14. package/dist/esm/utils.d.ts.map +1 -1
  15. package/dist/esm/utils.js +38 -45
  16. package/dist/esm/utils.js.map +1 -1
  17. package/package.json +13 -31
  18. package/dist/cjs/automaticTokenBridge.d.ts +0 -34
  19. package/dist/cjs/automaticTokenBridge.d.ts.map +0 -1
  20. package/dist/cjs/automaticTokenBridge.js +0 -315
  21. package/dist/cjs/automaticTokenBridge.js.map +0 -1
  22. package/dist/cjs/executorTokenBridge.d.ts +0 -26
  23. package/dist/cjs/executorTokenBridge.d.ts.map +0 -1
  24. package/dist/cjs/executorTokenBridge.js +0 -208
  25. package/dist/cjs/executorTokenBridge.js.map +0 -1
  26. package/dist/cjs/index.d.ts +0 -5
  27. package/dist/cjs/index.d.ts.map +0 -1
  28. package/dist/cjs/index.js +0 -28
  29. package/dist/cjs/index.js.map +0 -1
  30. package/dist/cjs/package.json +0 -1
  31. package/dist/cjs/tokenBridge.d.ts +0 -33
  32. package/dist/cjs/tokenBridge.d.ts.map +0 -1
  33. package/dist/cjs/tokenBridge.js +0 -478
  34. package/dist/cjs/tokenBridge.js.map +0 -1
  35. package/dist/cjs/utils.d.ts +0 -4
  36. package/dist/cjs/utils.d.ts.map +0 -1
  37. package/dist/cjs/utils.js +0 -69
  38. package/dist/cjs/utils.js.map +0 -1
@@ -1,315 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiAutomaticTokenBridge = void 0;
4
- const transactions_1 = require("@mysten/sui/transactions");
5
- const utils_1 = require("@mysten/sui/utils");
6
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
7
- const sdk_sui_1 = require("@wormhole-foundation/sdk-sui");
8
- require("@wormhole-foundation/sdk-sui-core");
9
- const utils_js_1 = require("./utils.js");
10
- class SuiAutomaticTokenBridge {
11
- network;
12
- chain;
13
- connection;
14
- contracts;
15
- tokenBridgeRelayerObjectId;
16
- coreBridgeObjectId;
17
- tokenBridgeObjectId;
18
- fields;
19
- constructor(network, chain, connection, contracts) {
20
- this.network = network;
21
- this.chain = chain;
22
- this.connection = connection;
23
- this.contracts = contracts;
24
- const { tokenBridge, tokenBridgeRelayer, coreBridge } = contracts;
25
- if (!tokenBridge || !tokenBridgeRelayer || !coreBridge)
26
- throw new Error(`Some object IDs for ${chain} Automatic Token Bridge not found`);
27
- this.tokenBridgeRelayerObjectId = tokenBridgeRelayer;
28
- this.tokenBridgeObjectId = tokenBridge;
29
- this.coreBridgeObjectId = coreBridge;
30
- }
31
- static async fromRpc(connection, config) {
32
- const [network, chain] = await sdk_sui_1.SuiPlatform.chainFromRpc(connection);
33
- const conf = config[chain];
34
- if (conf.network !== network)
35
- throw new Error(`Network mismatch for chain ${chain}: ${conf.network} != ${network}`);
36
- return new SuiAutomaticTokenBridge(network, chain, connection, conf.contracts);
37
- }
38
- async *transfer(sender, recipient, token, amount, nativeGas) {
39
- const tokenAddress = new sdk_sui_1.SuiAddress((0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SuiPlatform.nativeTokenId(this.network, this.chain).address : token);
40
- const coinType = tokenAddress.getCoinType();
41
- const { coreBridge: coreBridgePackageId, tokenBridge: tokenBridgePackageId } = await this.getPackageIds();
42
- const tx = new transactions_1.Transaction();
43
- const feeAmount = BigInt(0); // TODO: wormhole fee
44
- const [feeCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(feeAmount)]);
45
- const [transferCoin] = await (async () => {
46
- if ((0, sdk_connect_1.isNative)(token)) {
47
- return tx.splitCoins(tx.gas, [tx.pure.u64(amount)]);
48
- }
49
- else {
50
- const coins = await sdk_sui_1.SuiPlatform.getCoins(this.connection, sender, coinType);
51
- const [primaryCoin, ...mergeCoins] = coins.filter((coin) => coin.coinType === coinType);
52
- if (primaryCoin === undefined) {
53
- throw new Error(`Coins array doesn't contain any coins of type ${coinType}`);
54
- }
55
- const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
56
- if (mergeCoins.length) {
57
- tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
58
- }
59
- return tx.splitCoins(primaryCoinInput, [tx.pure.u64(amount)]);
60
- }
61
- })();
62
- const [assetInfo] = tx.moveCall({
63
- target: `${tokenBridgePackageId}::state::verified_asset`,
64
- arguments: [tx.object(this.tokenBridgeObjectId)],
65
- typeArguments: [coinType],
66
- });
67
- const suiRelayerPackageId = await this.getPackageId();
68
- const [transferTicket] = tx.moveCall({
69
- target: `${suiRelayerPackageId}::transfer::transfer_tokens_with_relay`,
70
- arguments: [
71
- tx.object(this.tokenBridgeRelayerObjectId),
72
- transferCoin,
73
- assetInfo,
74
- tx.pure.u64(nativeGas ?? 0n),
75
- tx.pure.u16((0, sdk_connect_1.toChainId)(recipient.chain)),
76
- tx.pure.address(sdk_connect_1.encoding.hex.encode(recipient.address.toUint8Array(), true)),
77
- tx.pure.u32(123),
78
- ],
79
- typeArguments: [coinType],
80
- });
81
- const [messageTicket] = tx.moveCall({
82
- target: `${tokenBridgePackageId}::transfer_tokens_with_payload::transfer_tokens_with_payload`,
83
- arguments: [tx.object(this.tokenBridgeObjectId), transferTicket],
84
- typeArguments: [coinType],
85
- });
86
- tx.moveCall({
87
- target: `${coreBridgePackageId}::publish_message::publish_message`,
88
- arguments: [
89
- tx.object(this.coreBridgeObjectId),
90
- feeCoin,
91
- messageTicket,
92
- tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
93
- ],
94
- });
95
- yield this.createUnsignedTx(tx, "AutomaticTokenBridge.transfer");
96
- }
97
- async *redeem(sender, vaa) {
98
- const { coreBridge: coreBridgePackageId, tokenBridge: tokenBridgePackageId } = await this.getPackageIds();
99
- const { address: tokenAddress, chain: tokenChain } = vaa.payload.token;
100
- const coinType = await (0, utils_js_1.getTokenCoinType)(this.connection, this.tokenBridgeObjectId, tokenAddress.toUniversalAddress().toUint8Array(), (0, sdk_connect_1.toChainId)(tokenChain));
101
- if (!coinType) {
102
- throw new Error("Unable to fetch token coinType");
103
- }
104
- const tx = new transactions_1.Transaction();
105
- const [verifiedVAA] = tx.moveCall({
106
- target: `${coreBridgePackageId}::vaa::parse_and_verify`,
107
- arguments: [
108
- tx.object(this.coreBridgeObjectId),
109
- tx.pure.vector('u8', (0, sdk_connect_1.serialize)(vaa)),
110
- tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
111
- ],
112
- });
113
- const [tokenBridgeMessage] = tx.moveCall({
114
- target: `${tokenBridgePackageId}::vaa::verify_only_once`,
115
- arguments: [tx.object(this.tokenBridgeObjectId), verifiedVAA],
116
- });
117
- const [redeemerReceipt] = tx.moveCall({
118
- target: `${tokenBridgePackageId}::complete_transfer_with_payload::authorize_transfer`,
119
- arguments: [tx.object(this.tokenBridgeObjectId), tokenBridgeMessage],
120
- typeArguments: [coinType],
121
- });
122
- const packageId = await this.getPackageId();
123
- tx.moveCall({
124
- target: `${packageId}::redeem::complete_transfer`,
125
- arguments: [tx.object(this.tokenBridgeRelayerObjectId), redeemerReceipt],
126
- typeArguments: [coinType],
127
- });
128
- yield this.createUnsignedTx(tx, "AutomaticTokenBridge.redeem");
129
- }
130
- async getRelayerFee(destination, token) {
131
- const _token = (0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SuiPlatform.nativeTokenId(this.network, this.chain) : token;
132
- const tokenInfo = await this.getTokenInfo(_token.toString());
133
- if (tokenInfo === null) {
134
- throw new Error("Unsupported token for relay");
135
- }
136
- const fields = await this.getFields();
137
- const relayerFees = await this.connection.getDynamicFieldObject({
138
- parentId: this.tokenBridgeRelayerObjectId,
139
- name: { type: "vector<u8>", value: Array.from(sdk_connect_1.encoding.bytes.encode("relayer_fees")) },
140
- });
141
- if (!relayerFees.data || !relayerFees.data.content) {
142
- if (relayerFees.error)
143
- throw new Error("Failed to get relayer fees: " + JSON.stringify(relayerFees.error));
144
- throw new Error("Unable to compute relayer fee");
145
- }
146
- const { content } = relayerFees.data;
147
- if (!(0, sdk_sui_1.isMoveStructStruct)(content) || !(0, sdk_sui_1.isMoveStructId)(content.fields.id)) {
148
- throw new Error("Unable to compute relayer fee");
149
- }
150
- const entry = await this.connection.getDynamicFieldObject({
151
- parentId: content.fields.id.id,
152
- name: { type: "u16", value: (0, sdk_connect_1.toChainId)(destination) },
153
- });
154
- if (!entry.data || !entry.data.content) {
155
- if (entry.error)
156
- throw new Error("Failed to get relayer fees: " + JSON.stringify(relayerFees.error));
157
- throw new Error("Unable to compute relayer fee");
158
- }
159
- const { content: feeData } = entry.data;
160
- if (!(0, sdk_sui_1.isMoveStructStruct)(feeData)) {
161
- throw new Error("Unable to compute relayer fee");
162
- }
163
- const decimals = await sdk_sui_1.SuiPlatform.getDecimals(this.network, this.chain, this.connection, token.toString());
164
- const swapRate = tokenInfo.swap_rate;
165
- const relayerFeePrecision = fields.relayer_fee_precision;
166
- const swapRatePrecision = fields.swap_rate_precision;
167
- const fee = feeData.fields.value;
168
- return ((10n ** BigInt(decimals) * BigInt(fee) * BigInt(swapRatePrecision)) /
169
- (BigInt(swapRate) * BigInt(relayerFeePrecision)));
170
- }
171
- async maxSwapAmount(token) {
172
- const _token = (0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SuiPlatform.nativeTokenId(this.network, this.chain) : token;
173
- const coinType = _token.toString();
174
- const metadata = await this.connection.getCoinMetadata({ coinType });
175
- if (!metadata) {
176
- throw new Error("metadata is null");
177
- }
178
- const packageId = await this.getPackageId();
179
- const tx = new transactions_1.Transaction();
180
- tx.moveCall({
181
- // Calculates the max number of tokens the recipient can convert to native
182
- // Sui. The max amount of native assets the contract will swap with the
183
- // recipient is governed by the `max_native_swap_amount` variable.
184
- target: `${packageId}::redeem::calculate_max_swap_amount_in`,
185
- arguments: [tx.object(this.tokenBridgeRelayerObjectId), tx.pure.u8(metadata.decimals)],
186
- typeArguments: [coinType],
187
- });
188
- const result = await this.connection.devInspectTransactionBlock({
189
- transactionBlock: tx,
190
- sender: sdk_connect_1.encoding.hex.encode(new Uint8Array(32)),
191
- });
192
- if (!result.results ||
193
- result.results.length == 0 ||
194
- !result.results[0]?.returnValues ||
195
- result.results[0]?.returnValues.length !== 1)
196
- throw Error("swap rate not set");
197
- // The result is a u64 in little-endian, so we need to reverse it for decode
198
- return sdk_connect_1.encoding.bignum.decode(new Uint8Array(result.results[0].returnValues[0][0].toReversed()));
199
- }
200
- async nativeTokenAmount(token, amount) {
201
- const _token = (0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SuiPlatform.nativeTokenId(this.network, this.chain) : token;
202
- const coinType = _token.toString();
203
- const metadata = await this.connection.getCoinMetadata({ coinType });
204
- if (!metadata) {
205
- throw new Error("metadata is null");
206
- }
207
- const packageId = await this.getPackageId();
208
- const tx = new transactions_1.Transaction();
209
- tx.moveCall({
210
- // Calculates the amount of native Sui that the recipient will receive
211
- // for swapping the `to_native_amount` of tokens.
212
- target: `${packageId}::redeem::calculate_native_swap_amount_out`,
213
- arguments: [
214
- tx.object(this.tokenBridgeRelayerObjectId),
215
- tx.pure.u64(amount),
216
- tx.pure.u8(metadata.decimals),
217
- ],
218
- typeArguments: [coinType],
219
- });
220
- const result = await this.connection.devInspectTransactionBlock({
221
- transactionBlock: tx,
222
- sender: sdk_connect_1.encoding.hex.encode(new Uint8Array(32)),
223
- });
224
- if (!result.results ||
225
- result.results.length == 0 ||
226
- !result.results[0]?.returnValues ||
227
- result.results[0]?.returnValues.length !== 1)
228
- throw Error("swap rate not set");
229
- // The result is a u64 in little-endian, so we need to reverse it for decode
230
- return sdk_connect_1.encoding.bignum.decode(new Uint8Array(result.results[0].returnValues[0][0].toReversed()));
231
- }
232
- async getRegisteredTokens() {
233
- const fields = await this.getFields();
234
- const registeredTokensObjectId = fields.registered_tokens.fields.id.id;
235
- const allTokensInfo = await this.connection.getDynamicFields({
236
- parentId: registeredTokensObjectId,
237
- });
238
- const tokenAddresses = allTokensInfo.data.map((token) => {
239
- const { address, module, name } = (0, utils_1.parseStructTag)(token.objectType);
240
- return new sdk_sui_1.SuiAddress([address, module, name].join(sdk_sui_1.SUI_SEPARATOR));
241
- });
242
- return tokenAddresses;
243
- }
244
- async isRegisteredToken(token) {
245
- const tokenAddress = new sdk_sui_1.SuiAddress((0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SuiPlatform.nativeTokenId(this.network, this.chain).address : token).unwrap();
246
- try {
247
- return (await this.getTokenInfo(tokenAddress)) !== null;
248
- }
249
- catch (e) {
250
- console.error(e);
251
- }
252
- return false;
253
- }
254
- async getTokenInfo(coinType) {
255
- const fields = await this.getFields();
256
- // Pulling the package id from the registered_tokens field
257
- const registeredTokensType = new sdk_sui_1.SuiAddress(fields.registered_tokens.type);
258
- const packageId = registeredTokensType.getPackageId();
259
- const registeredTokensObjectId = fields.registered_tokens.fields.id.id;
260
- // Get the coin type (sui:SUI or ::coin::COIN)
261
- const parsed = new sdk_sui_1.SuiAddress(coinType);
262
- const coin = (0, sdk_sui_1.isSameType)(sdk_sui_1.SUI_COIN, parsed.unwrap()) ? sdk_sui_1.SUI_COIN : parsed.getCoinType();
263
- try {
264
- // if the token isn't registered, then this will throw
265
- const tokenInfo = await this.connection.getDynamicFieldObject({
266
- parentId: registeredTokensObjectId,
267
- name: {
268
- type: `${packageId}::registered_tokens::Key<${coin}>`,
269
- value: { dummy_field: false },
270
- },
271
- });
272
- if (tokenInfo.error)
273
- throw new Error("Failed to get token info: " + JSON.stringify(tokenInfo.error));
274
- if (!tokenInfo.data || !tokenInfo.data.content)
275
- throw new Error("Failed to get token info: " + JSON.stringify(tokenInfo));
276
- const { content } = tokenInfo.data;
277
- if ((0, sdk_sui_1.isMoveStructStruct)(content) && (0, sdk_sui_1.isMoveStructStruct)(content.fields.value)) {
278
- return content.fields.value.fields;
279
- }
280
- return null;
281
- }
282
- catch (e) {
283
- if (e?.code === -32000 && e.message?.includes("RPC Error")) {
284
- console.error(e);
285
- return null;
286
- }
287
- throw e;
288
- }
289
- }
290
- async getFields() {
291
- if (!this.fields) {
292
- const fields = await (0, sdk_sui_1.getObjectFields)(this.connection, this.tokenBridgeRelayerObjectId);
293
- if (fields === null)
294
- throw new Error("Failed to get fields from token bridge relayer state");
295
- this.fields = fields;
296
- }
297
- return this.fields;
298
- }
299
- async getPackageId() {
300
- const fields = await this.getFields();
301
- return new sdk_sui_1.SuiAddress(fields.registered_tokens.type).getPackageId();
302
- }
303
- async getPackageIds() {
304
- const [coreBridge, tokenBridge] = await Promise.all([
305
- (0, sdk_sui_1.getPackageId)(this.connection, this.coreBridgeObjectId),
306
- (0, sdk_sui_1.getPackageId)(this.connection, this.tokenBridgeObjectId),
307
- ]);
308
- return { coreBridge, tokenBridge };
309
- }
310
- createUnsignedTx(txReq, description, parallelizable = false) {
311
- return new sdk_sui_1.SuiUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
312
- }
313
- }
314
- exports.SuiAutomaticTokenBridge = SuiAutomaticTokenBridge;
315
- //# sourceMappingURL=automaticTokenBridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"automaticTokenBridge.js","sourceRoot":"","sources":["../../src/automaticTokenBridge.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import type { SuiClient } from "@mysten/sui/client";
2
- import { type AccountAddress, type ChainAddress, type ChainsConfig, type Contracts, type ExecutorTokenBridge, type Network, type TokenAddress, type TokenId } from "@wormhole-foundation/sdk-connect";
3
- import { SuiChains, SuiUnsignedTransaction } from "@wormhole-foundation/sdk-sui";
4
- export declare class SuiExecutorTokenBridge<N extends Network, C extends SuiChains = SuiChains> implements ExecutorTokenBridge<N, C> {
5
- readonly network: N;
6
- readonly chain: C;
7
- readonly provider: SuiClient;
8
- readonly contracts: Contracts;
9
- readonly chainId: bigint;
10
- readonly tokenBridgeObjectId: string;
11
- readonly coreBridgeObjectId: string;
12
- readonly relayerStateId: string;
13
- readonly relayerPackageId: string;
14
- readonly ptbResolverStateId: string;
15
- readonly relayerEmitterCap: string;
16
- constructor(network: N, chain: C, provider: SuiClient, contracts: Contracts);
17
- static fromRpc<N extends Network>(provider: SuiClient, config: ChainsConfig<N, "Sui">): Promise<SuiExecutorTokenBridge<N, SuiChains>>;
18
- transfer(sender: AccountAddress<C>, recipient: ChainAddress, token: TokenAddress<C>, amount: bigint, executorQuote: ExecutorTokenBridge.ExecutorQuote, referrerFee?: ExecutorTokenBridge.ReferrerFee): AsyncGenerator<SuiUnsignedTransaction<N, C>>;
19
- redeem(_sender: AccountAddress<C>, vaa: ExecutorTokenBridge.VAA): AsyncGenerator<SuiUnsignedTransaction<N, C>>;
20
- estimateMsgValueAndGasLimit(_token: TokenId, _recipient?: ChainAddress): Promise<{
21
- gasLimit: bigint;
22
- msgValue: bigint;
23
- }>;
24
- private createUnsignedTx;
25
- }
26
- //# sourceMappingURL=executorTokenBridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executorTokenBridge.d.ts","sourceRoot":"","sources":["../../src/executorTokenBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAWL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAIL,SAAS,EAET,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAGtC,qBAAa,sBAAsB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,GAAG,SAAS,CACpF,YAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAalC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,SAAS;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAd/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAGpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAGxB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS;WAmBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IASzC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,mBAAmB,CAAC,aAAa,EAChD,WAAW,CAAC,EAAE,mBAAmB,CAAC,WAAW,GAC5C,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAwIxC,MAAM,CACX,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,GAAG,EAAE,mBAAmB,CAAC,GAAG,GAC3B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAqDzC,2BAA2B,CAC/B,MAAM,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlD,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -1,208 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiExecutorTokenBridge = void 0;
4
- const transactions_1 = require("@mysten/sui/transactions");
5
- const utils_1 = require("@mysten/sui/utils");
6
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
7
- const sdk_sui_1 = require("@wormhole-foundation/sdk-sui");
8
- const utils_js_1 = require("./utils.js");
9
- class SuiExecutorTokenBridge {
10
- network;
11
- chain;
12
- provider;
13
- contracts;
14
- chainId;
15
- tokenBridgeObjectId;
16
- coreBridgeObjectId;
17
- // Sui-specific state for Token Bridge Relayer V4
18
- relayerStateId;
19
- relayerPackageId;
20
- ptbResolverStateId;
21
- relayerEmitterCap;
22
- constructor(network, chain, provider, contracts) {
23
- this.network = network;
24
- this.chain = chain;
25
- this.provider = provider;
26
- this.contracts = contracts;
27
- this.chainId = sdk_connect_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
28
- if (!contracts.tokenBridge)
29
- throw new Error(`Token Bridge contract for ${chain} not found`);
30
- this.tokenBridgeObjectId = contracts.tokenBridge;
31
- if (!contracts.coreBridge)
32
- throw new Error(`Wormhole Core Bridge contract for ${chain} not found`);
33
- this.coreBridgeObjectId = contracts.coreBridge;
34
- // Get Sui-specific state from constants based on the Environment
35
- const stateRefs = (0, sdk_connect_1.suiExecutorTokenBridgeState)(network);
36
- this.relayerStateId = stateRefs.relayerStateId;
37
- this.relayerPackageId = stateRefs.relayerPackageId;
38
- this.ptbResolverStateId = stateRefs.ptbResolverStateId;
39
- this.relayerEmitterCap = stateRefs.relayerEmitterCap;
40
- }
41
- static async fromRpc(provider, config) {
42
- const [network, chain] = await sdk_sui_1.SuiPlatform.chainFromRpc(provider);
43
- const conf = config[chain];
44
- if (conf.network !== network)
45
- throw new Error(`Network mismatch: ${conf.network} != ${network}`);
46
- return new SuiExecutorTokenBridge(network, chain, provider, conf.contracts);
47
- }
48
- async *transfer(sender, recipient, token, amount, executorQuote, referrerFee) {
49
- const tx = new transactions_1.Transaction();
50
- const senderAddress = sender.toString();
51
- const coinType = ((0, sdk_connect_1.isNative)(token) ? sdk_sui_1.SUI_COIN : token).toString();
52
- const messageFee = 0n;
53
- // Get destination relayer contract (we're departing FROM Sui, destination is never Sui)
54
- const dstContracts = sdk_connect_1.contracts.executorTokenBridge.get(this.network, recipient.chain);
55
- if (!dstContracts?.relayer) {
56
- throw new Error(`Token Bridge Executor Relayer contract for destination ${recipient.chain} not found`);
57
- }
58
- const dstRelayer = (0, sdk_connect_1.toUniversal)(recipient.chain, dstContracts.relayer);
59
- // For Token Bridge transfers, dstTransferRecipient and dstExecutionAddress are the same
60
- const dstExecutionAddress = "0x" + Buffer.from(dstRelayer.toUint8Array()).toString("hex");
61
- // Serialize executor quote data
62
- const signedQuoteBytes = (0, sdk_connect_1.serializeLayout)(sdk_connect_1.signedQuoteLayout, executorQuote.signedQuote);
63
- const relayInstructionsBytes = (0, sdk_connect_1.serializeLayout)(sdk_connect_1.relayInstructionsLayout, executorQuote.relayInstructions);
64
- // 1. Fetch and merge coins (following TokenBridge pattern)
65
- const coins = await sdk_sui_1.SuiPlatform.getCoins(this.provider, sender, coinType);
66
- const [primaryCoin, ...mergeCoins] = coins.filter((coin) => (0, sdk_sui_1.isSameType)(coin.coinType, coinType));
67
- if (!primaryCoin) {
68
- throw new Error(`No coins of type ${coinType} found for sender ${sender}`);
69
- }
70
- // 2. Handle referrer fee (following Solana ExecutorTokenBridge pattern).
71
- // For native SUI, the token and gas fees are both denominated in MIST —
72
- // combine them into a single transfer out of the gas coin. Otherwise pay
73
- // transferTokenFee as the source coin and nativeTokenFee as SUI.
74
- let actualTransferAmount = amount;
75
- let coinsMerged = false;
76
- if (referrerFee) {
77
- const referrerAddress = referrerFee.referrer.address.toString();
78
- if ((0, sdk_connect_1.isNative)(token)) {
79
- const combinedFee = referrerFee.nativeTokenFee + referrerFee.transferTokenFee;
80
- if (combinedFee > 0n) {
81
- const [refFee] = tx.splitCoins(tx.gas, [tx.pure.u64(combinedFee)]);
82
- tx.transferObjects([refFee], tx.pure.address(referrerAddress));
83
- }
84
- }
85
- else {
86
- if (referrerFee.transferTokenFee > 0n) {
87
- // For tokens, merge first then split fee
88
- const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
89
- if (mergeCoins.length > 0) {
90
- tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
91
- coinsMerged = true;
92
- }
93
- const [refFee] = tx.splitCoins(primaryCoinInput, [
94
- tx.pure.u64(referrerFee.transferTokenFee),
95
- ]);
96
- tx.transferObjects([refFee], tx.pure.address(referrerAddress));
97
- }
98
- if (referrerFee.nativeTokenFee > 0n) {
99
- const [refFee] = tx.splitCoins(tx.gas, [
100
- tx.pure.u64(referrerFee.nativeTokenFee),
101
- ]);
102
- tx.transferObjects([refFee], tx.pure.address(referrerAddress));
103
- }
104
- }
105
- // Use remaining amount for actual transfer
106
- actualTransferAmount = referrerFee.remainingAmount;
107
- }
108
- // 3. Split coins for transfer (following TokenBridge pattern)
109
- const [transferCoin] = (() => {
110
- if ((0, sdk_connect_1.isNative)(token)) {
111
- return tx.splitCoins(tx.gas, [tx.pure.u64(actualTransferAmount)]);
112
- }
113
- else {
114
- const primaryCoinInput = tx.object(primaryCoin.coinObjectId);
115
- if (mergeCoins.length && !coinsMerged) {
116
- // Only merge if we didn't already merge while paying the referrer
117
- tx.mergeCoins(primaryCoinInput, mergeCoins.map((coin) => tx.object(coin.coinObjectId)));
118
- }
119
- return tx.splitCoins(primaryCoinInput, [tx.pure.u64(actualTransferAmount)]);
120
- }
121
- })();
122
- // 4. Split coins for fees
123
- const [feeCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(messageFee)]);
124
- const [executorPaymentCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(executorQuote.estimatedCost)]);
125
- // 5. Get verified asset from Token Bridge
126
- const tokenBridgePackageId = await (0, sdk_sui_1.getPackageId)(this.provider, this.tokenBridgeObjectId);
127
- const [assetInfo] = tx.moveCall({
128
- target: `${tokenBridgePackageId}::state::verified_asset`,
129
- arguments: [tx.object(this.tokenBridgeObjectId)],
130
- typeArguments: [coinType],
131
- });
132
- // 6. Call relayer transfer function
133
- // Arguments match the Move function signature in relayer_transfer.move
134
- tx.moveCall({
135
- target: `${this.relayerPackageId}::relayer_transfer::transfer_tokens_with_relay`,
136
- arguments: [
137
- tx.object(this.relayerStateId),
138
- tx.object(this.coreBridgeObjectId),
139
- tx.object(this.tokenBridgeObjectId),
140
- transferCoin,
141
- assetInfo,
142
- feeCoin,
143
- executorPaymentCoin,
144
- tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
145
- tx.pure.u16((0, sdk_connect_1.toChainId)(recipient.chain)),
146
- tx.pure.vector("u8", Array.from(recipient.address.toUniversalAddress().toUint8Array())), // recipient (32 bytes)
147
- tx.pure.address(dstExecutionAddress), // dst_execution_address
148
- tx.pure.address(senderAddress), // refund_addr
149
- tx.pure.vector("u8", Array.from(signedQuoteBytes)), // signed_quote
150
- tx.pure.vector("u8", Array.from(relayInstructionsBytes)), // relay_instructions
151
- tx.pure.u32(0), // nonce
152
- ],
153
- typeArguments: [coinType],
154
- });
155
- yield this.createUnsignedTx(tx, "Sui.ExecutorTokenBridge.Transfer");
156
- }
157
- async *redeem(_sender, vaa) {
158
- // Get coin type from VAA
159
- const coinType = await (0, utils_js_1.getTokenCoinType)(this.provider, this.tokenBridgeObjectId, vaa.payload.token.address.toUint8Array(), (0, sdk_connect_1.toChainId)(vaa.payload.token.chain));
160
- if (!coinType) {
161
- throw new Error("Unable to fetch token coinType from VAA");
162
- }
163
- const tx = new transactions_1.Transaction();
164
- // Get package IDs dynamically
165
- const coreBridgePackageId = await (0, sdk_sui_1.getPackageId)(this.provider, this.coreBridgeObjectId);
166
- const tokenBridgePackageId = await (0, sdk_sui_1.getPackageId)(this.provider, this.tokenBridgeObjectId);
167
- // Build 4-command redemption PTB (matching redeem.move pattern)
168
- // Command 1: parse_and_verify (Wormhole core)
169
- const [verifiedVaa] = tx.moveCall({
170
- target: `${coreBridgePackageId}::vaa::parse_and_verify`,
171
- arguments: [
172
- tx.object(this.coreBridgeObjectId),
173
- tx.pure.vector("u8", Array.from((0, sdk_connect_1.serialize)(vaa))),
174
- tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
175
- ],
176
- });
177
- // Command 2: verify_only_once (Token Bridge replay protection)
178
- const [msg] = tx.moveCall({
179
- target: `${tokenBridgePackageId}::vaa::verify_only_once`,
180
- arguments: [tx.object(this.tokenBridgeObjectId), verifiedVaa],
181
- });
182
- // Command 3: authorize_transfer (Token Bridge authorization)
183
- const [receipt] = tx.moveCall({
184
- target: `${tokenBridgePackageId}::complete_transfer_with_payload::authorize_transfer`,
185
- arguments: [tx.object(this.tokenBridgeObjectId), msg],
186
- typeArguments: [coinType],
187
- });
188
- // Command 4: execute_vaa_v1 (TB Relayer V4 execution)
189
- tx.moveCall({
190
- target: `${this.relayerPackageId}::redeem::execute_vaa_v1`,
191
- arguments: [tx.object(this.relayerStateId), receipt],
192
- typeArguments: [coinType],
193
- });
194
- yield this.createUnsignedTx(tx, "Sui.ExecutorTokenBridge.Redeem");
195
- }
196
- async estimateMsgValueAndGasLimit(_token, _recipient) {
197
- // Sui uses fixed gas budget in PTB
198
- return {
199
- gasLimit: 100000000n, // 0.1 SUI budget
200
- msgValue: 0n,
201
- };
202
- }
203
- createUnsignedTx(txReq, description, parallelizable = false) {
204
- return new sdk_sui_1.SuiUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
205
- }
206
- }
207
- exports.SuiExecutorTokenBridge = SuiExecutorTokenBridge;
208
- //# sourceMappingURL=executorTokenBridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executorTokenBridge.js","sourceRoot":"","sources":["../../src/executorTokenBridge.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export * from "./tokenBridge.js";
2
- export * from "./automaticTokenBridge.js";
3
- export * from "./executorTokenBridge.js";
4
- export * from "./utils.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAUA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC"}
package/dist/cjs/index.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
18
- const tokenBridge_js_1 = require("./tokenBridge.js");
19
- const automaticTokenBridge_js_1 = require("./automaticTokenBridge.js");
20
- const executorTokenBridge_js_1 = require("./executorTokenBridge.js");
21
- (0, sdk_connect_1.registerProtocol)("Sui", "TokenBridge", tokenBridge_js_1.SuiTokenBridge);
22
- (0, sdk_connect_1.registerProtocol)("Sui", "AutomaticTokenBridge", automaticTokenBridge_js_1.SuiAutomaticTokenBridge);
23
- (0, sdk_connect_1.registerProtocol)("Sui", "ExecutorTokenBridge", executorTokenBridge_js_1.SuiExecutorTokenBridge);
24
- __exportStar(require("./tokenBridge.js"), exports);
25
- __exportStar(require("./automaticTokenBridge.js"), exports);
26
- __exportStar(require("./executorTokenBridge.js"), exports);
27
- __exportStar(require("./utils.js"), exports);
28
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kEAAoE;AACpE,qDAAkD;AAClD,uEAAoE;AACpE,qEAAkE;AAElE,IAAA,8BAAgB,EAAC,KAAK,EAAE,aAAa,EAAE,+BAAc,CAAC,CAAC;AACvD,IAAA,8BAAgB,EAAC,KAAK,EAAE,sBAAsB,EAAE,iDAAuB,CAAC,CAAC;AACzE,IAAA,8BAAgB,EAAC,KAAK,EAAE,qBAAqB,EAAE,+CAAsB,CAAC,CAAC;AAEvE,mDAAiC;AACjC,4DAA0C;AAC1C,2DAAyC;AACzC,6CAA2B"}