@wormhole-foundation/sdk-sui-ntt 2.0.1 → 2.0.2
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/dist/cjs/bcs-types.d.ts +36 -0
- package/dist/cjs/bcs-types.d.ts.map +1 -0
- package/dist/cjs/bcs-types.js +39 -0
- package/dist/cjs/bcs-types.js.map +1 -0
- package/dist/cjs/ntt.d.ts.map +1 -1
- package/dist/cjs/ntt.js +63 -120
- package/dist/cjs/ntt.js.map +1 -1
- package/dist/cjs/utils.d.ts +47 -0
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +90 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/bcs-types.d.ts +36 -0
- package/dist/esm/bcs-types.d.ts.map +1 -0
- package/dist/esm/bcs-types.js +36 -0
- package/dist/esm/bcs-types.js.map +1 -0
- package/dist/esm/ntt.d.ts.map +1 -1
- package/dist/esm/ntt.js +65 -122
- package/dist/esm/ntt.js.map +1 -1
- package/dist/esm/utils.d.ts +47 -0
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +85 -0
- package/dist/esm/utils.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/utils.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.countSetBits = exports.extractGenericType = exports.getPackageIdFromObject = exports.getOriginalPackageId = exports.getTransceivers = exports.getPackageId = exports.getWormholePackageId = exports.getSuiObject = exports.getObjectFields = exports.getFieldsFromObjectResponse = exports.isNativeToken = void 0;
|
|
3
|
+
exports.parseInboxItemResult = exports.createNttManagerMessageObjects = exports.extractNttCommonPackageId = exports.parseInboxItemNative = exports.countSetBits = exports.extractGenericType = exports.getPackageIdFromObject = exports.getOriginalPackageId = exports.getTransceivers = exports.getPackageId = exports.getWormholePackageId = exports.getSuiObject = exports.getObjectFields = exports.getFieldsFromObjectResponse = exports.isNativeToken = void 0;
|
|
4
4
|
const utils_1 = require("@mysten/sui/utils");
|
|
5
|
+
const bcs_1 = require("@mysten/bcs");
|
|
5
6
|
const constants_js_1 = require("./constants.js");
|
|
7
|
+
const bcs_types_js_1 = require("./bcs-types.js");
|
|
6
8
|
/**
|
|
7
9
|
* Checks if a token is native SUI
|
|
8
10
|
*/
|
|
@@ -192,4 +194,91 @@ function countSetBits(n) {
|
|
|
192
194
|
return count;
|
|
193
195
|
}
|
|
194
196
|
exports.countSetBits = countSetBits;
|
|
197
|
+
/**
|
|
198
|
+
* BCS parsing function for inbox items
|
|
199
|
+
*/
|
|
200
|
+
function parseInboxItemNative(base64VecU8) {
|
|
201
|
+
const outer = (0, bcs_1.fromBase64)(base64VecU8); // bytes of vector<u8>
|
|
202
|
+
const inner = bcs_1.bcs.vector(bcs_1.bcs.u8()).parse(outer); // extract inner bytes[]
|
|
203
|
+
return bcs_types_js_1.InboxItemNative.parse(Uint8Array.from(inner)); // fully parsed struct
|
|
204
|
+
}
|
|
205
|
+
exports.parseInboxItemNative = parseInboxItemNative;
|
|
206
|
+
/**
|
|
207
|
+
* Extracts the NTT common package ID from a manager state's inbox type
|
|
208
|
+
* The inbox type format is: "0x<packageId>::ntt_manager_message::NttManagerMessage<...>"
|
|
209
|
+
*/
|
|
210
|
+
function extractNttCommonPackageId(inboxType) {
|
|
211
|
+
const match = inboxType.match("<(.+)>")?.[1]?.split("::")[0];
|
|
212
|
+
if (!match) {
|
|
213
|
+
throw new Error(`Unable to extract NTT common package ID from inbox type: ${inboxType}`);
|
|
214
|
+
}
|
|
215
|
+
return match;
|
|
216
|
+
}
|
|
217
|
+
exports.extractNttCommonPackageId = extractNttCommonPackageId;
|
|
218
|
+
/**
|
|
219
|
+
* Creates Move objects for NttManagerMessage construction in a Sui transaction
|
|
220
|
+
*/
|
|
221
|
+
function createNttManagerMessageObjects(txb, nttCommonPackageId, wormholeCoreBridgePackageId, messageBytes, messageId, senderAddress) {
|
|
222
|
+
// Create the native token transfer object from the serialized payload
|
|
223
|
+
const [native_token_transfer] = txb.moveCall({
|
|
224
|
+
target: `${nttCommonPackageId}::native_token_transfer::parse`,
|
|
225
|
+
arguments: [txb.pure.vector("u8", messageBytes)],
|
|
226
|
+
});
|
|
227
|
+
// Create the message ID from bytes
|
|
228
|
+
const [id] = txb.moveCall({
|
|
229
|
+
target: `${wormholeCoreBridgePackageId}::bytes32::from_bytes`,
|
|
230
|
+
arguments: [txb.pure.vector("u8", messageId)],
|
|
231
|
+
});
|
|
232
|
+
// Create the sender external address
|
|
233
|
+
const [sender] = txb.moveCall({
|
|
234
|
+
target: `${wormholeCoreBridgePackageId}::external_address::from_address`,
|
|
235
|
+
arguments: [
|
|
236
|
+
txb.pure.address("0x" + Buffer.from(senderAddress).toString("hex")),
|
|
237
|
+
],
|
|
238
|
+
});
|
|
239
|
+
// Create the NttManagerMessage object
|
|
240
|
+
const [manager_message] = txb.moveCall({
|
|
241
|
+
target: `${nttCommonPackageId}::ntt_manager_message::new`,
|
|
242
|
+
typeArguments: [
|
|
243
|
+
`${nttCommonPackageId}::native_token_transfer::NativeTokenTransfer`,
|
|
244
|
+
],
|
|
245
|
+
arguments: [id, sender, native_token_transfer],
|
|
246
|
+
});
|
|
247
|
+
return manager_message;
|
|
248
|
+
}
|
|
249
|
+
exports.createNttManagerMessageObjects = createNttManagerMessageObjects;
|
|
250
|
+
/**
|
|
251
|
+
* Parses the result of devInspectTransactionBlock to extract and deserialize inbox item data
|
|
252
|
+
*/
|
|
253
|
+
function parseInboxItemResult(inspectResult, threshold) {
|
|
254
|
+
if (!inspectResult.results || inspectResult.results.length === 0) {
|
|
255
|
+
throw new Error("No results returned from devInspectTransactionBlock");
|
|
256
|
+
}
|
|
257
|
+
// Get the last result which contains the serialized inbox item bytes from bcs::to_bytes call
|
|
258
|
+
const lastResult = inspectResult.results[inspectResult.results.length - 1];
|
|
259
|
+
const serializedInboxItem = lastResult?.returnValues?.[0];
|
|
260
|
+
if (!Array.isArray(serializedInboxItem)) {
|
|
261
|
+
throw new Error("Invalid result format from devInspectTransactionBlock");
|
|
262
|
+
}
|
|
263
|
+
const [bytesData, type] = serializedInboxItem;
|
|
264
|
+
if (type !== "vector<u8>" || !Array.isArray(bytesData)) {
|
|
265
|
+
throw new Error(`Expected vector<u8> but got ${type}`);
|
|
266
|
+
}
|
|
267
|
+
// Parse the serialized InboxItem using BCS
|
|
268
|
+
// The data is wrapped as vector<u8>, so we need to unwrap it first
|
|
269
|
+
const outerBytes = new Uint8Array(bytesData);
|
|
270
|
+
const innerBytes = bcs_1.bcs.vector(bcs_1.bcs.u8()).parse(outerBytes);
|
|
271
|
+
const parsedInboxItem = bcs_types_js_1.InboxItemNative.parse(Uint8Array.from(innerBytes));
|
|
272
|
+
const inboxItemFields = {
|
|
273
|
+
votes: {
|
|
274
|
+
fields: {
|
|
275
|
+
bitmap: parsedInboxItem.votes.bitmap.toString(),
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
release_status: parsedInboxItem.release_status,
|
|
279
|
+
data: parsedInboxItem.data,
|
|
280
|
+
};
|
|
281
|
+
return { inboxItemFields, threshold };
|
|
282
|
+
}
|
|
283
|
+
exports.parseInboxItemResult = parseInboxItemResult;
|
|
195
284
|
//# sourceMappingURL=utils.js.map
|
package/dist/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AACA,6CAAsD;AACtD,iDAA0D;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type BcsType } from "@mysten/bcs";
|
|
2
|
+
export declare const InboxItemNative: import("@mysten/bcs").BcsStruct<{
|
|
3
|
+
votes: import("@mysten/bcs").BcsStruct<{
|
|
4
|
+
bitmap: BcsType<string, string | number | bigint, "u128">;
|
|
5
|
+
}, string>;
|
|
6
|
+
release_status: import("@mysten/bcs").BcsEnum<{
|
|
7
|
+
NotApproved: null;
|
|
8
|
+
ReleaseAfter: BcsType<string, string | number | bigint, "u64">;
|
|
9
|
+
Released: null;
|
|
10
|
+
}, "ReleaseStatus">;
|
|
11
|
+
data: import("@mysten/bcs").BcsStruct<{
|
|
12
|
+
amount: import("@mysten/bcs").BcsStruct<{
|
|
13
|
+
amount: BcsType<string, string | number | bigint, "u64">;
|
|
14
|
+
decimals: BcsType<number, number, "u8">;
|
|
15
|
+
}, string>;
|
|
16
|
+
source_token: import("@mysten/bcs").BcsStruct<{
|
|
17
|
+
value: import("@mysten/bcs").BcsStruct<{
|
|
18
|
+
data: BcsType<number[], Iterable<number> & {
|
|
19
|
+
length: number;
|
|
20
|
+
}, string>;
|
|
21
|
+
}, string>;
|
|
22
|
+
}, string>;
|
|
23
|
+
to: import("@mysten/bcs").BcsStruct<{
|
|
24
|
+
value: import("@mysten/bcs").BcsStruct<{
|
|
25
|
+
data: BcsType<number[], Iterable<number> & {
|
|
26
|
+
length: number;
|
|
27
|
+
}, string>;
|
|
28
|
+
}, string>;
|
|
29
|
+
}, string>;
|
|
30
|
+
to_chain: BcsType<number, number, "u16">;
|
|
31
|
+
payload: BcsType<number[] | null, (Iterable<number> & {
|
|
32
|
+
length: number;
|
|
33
|
+
}) | null | undefined, "Option<vector<u8>>">;
|
|
34
|
+
}, string>;
|
|
35
|
+
}, string>;
|
|
36
|
+
//# sourceMappingURL=bcs-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bcs-types.d.ts","sourceRoot":"","sources":["../../src/bcs-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAyChD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAAiC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// BCS type definitions for NTT inbox items
|
|
2
|
+
import { bcs } from "@mysten/bcs";
|
|
3
|
+
const Bitmap = bcs.struct("Bitmap", {
|
|
4
|
+
bitmap: bcs.u128(),
|
|
5
|
+
});
|
|
6
|
+
const ReleaseStatus = bcs.enum("ReleaseStatus", {
|
|
7
|
+
NotApproved: null,
|
|
8
|
+
ReleaseAfter: bcs.u64(),
|
|
9
|
+
Released: null,
|
|
10
|
+
});
|
|
11
|
+
const TrimmedAmount = bcs.struct("TrimmedAmount", {
|
|
12
|
+
amount: bcs.u64(),
|
|
13
|
+
decimals: bcs.u8(),
|
|
14
|
+
});
|
|
15
|
+
const Bytes32 = bcs.struct("Bytes32", {
|
|
16
|
+
data: bcs.vector(bcs.u8()),
|
|
17
|
+
});
|
|
18
|
+
const ExternalAddress = bcs.struct("ExternalAddress", {
|
|
19
|
+
value: Bytes32,
|
|
20
|
+
});
|
|
21
|
+
const NativeTokenTransfer = bcs.struct("NativeTokenTransfer", {
|
|
22
|
+
amount: TrimmedAmount,
|
|
23
|
+
source_token: ExternalAddress,
|
|
24
|
+
to: ExternalAddress,
|
|
25
|
+
to_chain: bcs.u16(),
|
|
26
|
+
payload: bcs.option(bcs.vector(bcs.u8())),
|
|
27
|
+
});
|
|
28
|
+
function InboxItem(T) {
|
|
29
|
+
return bcs.struct(`InboxItem<${T.name}>`, {
|
|
30
|
+
votes: Bitmap,
|
|
31
|
+
release_status: ReleaseStatus,
|
|
32
|
+
data: T,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export const InboxItemNative = InboxItem(NativeTokenTransfer);
|
|
36
|
+
//# sourceMappingURL=bcs-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bcs-types.js","sourceRoot":"","sources":["../../src/bcs-types.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,GAAG,EAAgB,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE;IAC9C,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE;IACvB,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE;IAChD,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;IACjB,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;IACpC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE;IACpD,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC5D,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE,eAAe;IAC7B,EAAE,EAAE,eAAe;IACnB,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,CAAC,CAAC;AAEH,SAAS,SAAS,CAAyB,CAAI;IAC7C,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,EAAE;QACxC,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC"}
|
package/dist/esm/ntt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ntt.d.ts","sourceRoot":"","sources":["../../src/ntt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EAEnB,SAAS,EACT,YAAY,EAEb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ntt.d.ts","sourceRoot":"","sources":["../../src/ntt.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/ntt.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { toUniversal, serialize, } from "@wormhole-foundation/sdk-definitions";
|
|
2
|
-
import { chainToChainId, serializeLayout
|
|
2
|
+
import { chainToChainId, serializeLayout } from "@wormhole-foundation/sdk-base";
|
|
3
3
|
import { nativeTokenTransferLayout, } from "@wormhole-foundation/sdk-definitions-ntt";
|
|
4
4
|
import { SuiAddress, SuiPlatform, SuiUnsignedTransaction, } from "@wormhole-foundation/sdk-sui";
|
|
5
5
|
import { Transaction } from "@mysten/sui/transactions";
|
|
6
6
|
import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
|
|
7
7
|
import { SUI_ADDRESSES, RATE_LIMIT_DURATION } from "./constants.js";
|
|
8
|
-
import { isNativeToken, getSuiObject, getWormholePackageId, getPackageIdFromObject, countSetBits, } from "./utils.js";
|
|
8
|
+
import { isNativeToken, getSuiObject, getWormholePackageId, getPackageIdFromObject, countSetBits, extractNttCommonPackageId, createNttManagerMessageObjects, parseInboxItemResult, } from "./utils.js";
|
|
9
9
|
export class SuiNtt {
|
|
10
10
|
contracts;
|
|
11
11
|
coreBridgeStateId;
|
|
@@ -781,13 +781,12 @@ export class SuiNtt {
|
|
|
781
781
|
async getIsExecuted(attestation) {
|
|
782
782
|
const releaseStatus = await this.getTransferReleaseStatus(attestation);
|
|
783
783
|
// Check if release_status is Released
|
|
784
|
-
|
|
785
|
-
return releaseStatus?.variant === "Released";
|
|
784
|
+
return releaseStatus?.$kind === "Released";
|
|
786
785
|
}
|
|
787
786
|
async getIsTransferInboundQueued(attestation) {
|
|
788
787
|
const releaseStatus = await this.getTransferReleaseStatus(attestation);
|
|
789
|
-
// Check if release_status is ReleaseAfter
|
|
790
|
-
return releaseStatus
|
|
788
|
+
// Check if release_status is ReleaseAfter
|
|
789
|
+
return releaseStatus?.$kind === "ReleaseAfter";
|
|
791
790
|
}
|
|
792
791
|
async getInboundQueuedTransfer(fromChain, transceiverMessage) {
|
|
793
792
|
// Create an attestation object from the transceiver message
|
|
@@ -801,11 +800,11 @@ export class SuiNtt {
|
|
|
801
800
|
// Get the release status
|
|
802
801
|
const releaseStatus = await this.getTransferReleaseStatus(attestation);
|
|
803
802
|
// Check if it's queued (ReleaseAfter)
|
|
804
|
-
if (releaseStatus
|
|
803
|
+
if (releaseStatus?.$kind !== "ReleaseAfter") {
|
|
805
804
|
return null;
|
|
806
805
|
}
|
|
807
|
-
// The timestamp should be in the
|
|
808
|
-
const releaseTimestamp = parseInt(releaseStatus.
|
|
806
|
+
// The timestamp should be in the ReleaseAfter field
|
|
807
|
+
const releaseTimestamp = parseInt(releaseStatus.ReleaseAfter);
|
|
809
808
|
// Get the full inbox item to access the transfer data
|
|
810
809
|
const inboxItem = await this.getInboxItem(attestation);
|
|
811
810
|
if (!inboxItem) {
|
|
@@ -1119,13 +1118,8 @@ export class SuiNtt {
|
|
|
1119
1118
|
throw new Error("Failed to fetch manager state");
|
|
1120
1119
|
}
|
|
1121
1120
|
const managerStateObject = managerState.data.content;
|
|
1122
|
-
// Extract nttCommonPackageId from manager object
|
|
1123
|
-
const nttCommonPackageId = managerStateObject.fields.inbox.type
|
|
1124
|
-
.match("<(.+)>")?.[1]
|
|
1125
|
-
?.split("::")[0];
|
|
1126
|
-
if (!nttCommonPackageId) {
|
|
1127
|
-
throw new Error(`Unable to parse inbox type from manager state: ${managerStateObject.fields.inbox.type}`);
|
|
1128
|
-
}
|
|
1121
|
+
// Extract nttCommonPackageId from manager object's inbox type
|
|
1122
|
+
const nttCommonPackageId = extractNttCommonPackageId(managerStateObject.fields.inbox.type);
|
|
1129
1123
|
// Get manager payload
|
|
1130
1124
|
const nttPayload = wormholeAttestation.payload.nttManagerPayload;
|
|
1131
1125
|
// Get NTT object
|
|
@@ -1137,41 +1131,9 @@ export class SuiNtt {
|
|
|
1137
1131
|
catch (error) {
|
|
1138
1132
|
throw new Error(`Failed to serialize native token transfer payload: ${error instanceof Error ? error.message : String(error)}`);
|
|
1139
1133
|
}
|
|
1140
|
-
const [native_token_transfer] = txb.moveCall({
|
|
1141
|
-
target: `${nttCommonPackageId}::native_token_transfer::parse`,
|
|
1142
|
-
arguments: [txb.pure.vector("u8", payloadBytes)],
|
|
1143
|
-
});
|
|
1144
|
-
if (!native_token_transfer) {
|
|
1145
|
-
throw new Error("Failed to parse native token transfer");
|
|
1146
|
-
}
|
|
1147
1134
|
const wormholeCoreBridgePackageId = await getWormholePackageId(this.provider, this.coreBridgeStateId);
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
arguments: [txb.pure.vector("u8", nttPayload.id)],
|
|
1151
|
-
});
|
|
1152
|
-
if (!id) {
|
|
1153
|
-
throw new Error("Failed to create message ID from bytes");
|
|
1154
|
-
}
|
|
1155
|
-
const [sender] = txb.moveCall({
|
|
1156
|
-
target: `${wormholeCoreBridgePackageId}::external_address::from_address`,
|
|
1157
|
-
arguments: [
|
|
1158
|
-
txb.pure.address(encoding.hex.encode(nttPayload.sender.toUint8Array(), true)),
|
|
1159
|
-
],
|
|
1160
|
-
});
|
|
1161
|
-
if (!sender) {
|
|
1162
|
-
throw new Error("Failed to create external address from sender");
|
|
1163
|
-
}
|
|
1164
|
-
// Get NttManagerMessage
|
|
1165
|
-
const [manager_message] = txb.moveCall({
|
|
1166
|
-
target: `${nttCommonPackageId}::ntt_manager_message::new`,
|
|
1167
|
-
typeArguments: [
|
|
1168
|
-
`${nttCommonPackageId}::native_token_transfer::NativeTokenTransfer`,
|
|
1169
|
-
],
|
|
1170
|
-
arguments: [id, sender, native_token_transfer],
|
|
1171
|
-
});
|
|
1172
|
-
if (!manager_message) {
|
|
1173
|
-
throw new Error("Failed to create manager message");
|
|
1174
|
-
}
|
|
1135
|
+
// Create the NttManagerMessage object using the utility function
|
|
1136
|
+
const manager_message = createNttManagerMessageObjects(txb, nttCommonPackageId, wormholeCoreBridgePackageId, payloadBytes, nttPayload.id, nttPayload.sender.toUint8Array());
|
|
1175
1137
|
// Create version gated object for release
|
|
1176
1138
|
const [versionGated] = txb.moveCall({
|
|
1177
1139
|
target: `${packageId}::upgrades::new_version_gated`,
|
|
@@ -1264,82 +1226,63 @@ export class SuiNtt {
|
|
|
1264
1226
|
}
|
|
1265
1227
|
// Helper function to get inbox item from an NTT attestation
|
|
1266
1228
|
async getInboxItem(attestation) {
|
|
1229
|
+
const nttState = await this.getNttState();
|
|
1230
|
+
const threshold = parseInt(nttState.threshold);
|
|
1231
|
+
const nttCommonPackageId = extractNttCommonPackageId(nttState.inbox.type);
|
|
1232
|
+
// Get the coin type from the contracts configuration
|
|
1233
|
+
const coinType = this.contracts.ntt["token"];
|
|
1234
|
+
// Get chain ID
|
|
1235
|
+
const sourceChain = attestation.emitterChain;
|
|
1236
|
+
if (!sourceChain) {
|
|
1237
|
+
throw new Error("No emitter chain found in attestation");
|
|
1238
|
+
}
|
|
1239
|
+
const sourceChainId = chainToChainId(sourceChain);
|
|
1240
|
+
// Get the NTT package ID
|
|
1241
|
+
const nttPackageId = await this.getPackageId();
|
|
1242
|
+
// Extract the NTT message from attestation
|
|
1243
|
+
const nttManagerPayload = attestation.payload.nttManagerPayload;
|
|
1244
|
+
if (!nttManagerPayload) {
|
|
1245
|
+
throw new Error("No NTT manager payload found in attestation");
|
|
1246
|
+
}
|
|
1247
|
+
// Prepare the message bytes for the Move call
|
|
1248
|
+
let messageBytes;
|
|
1267
1249
|
try {
|
|
1268
|
-
|
|
1269
|
-
const state = await this.provider.getObject({
|
|
1270
|
-
id: this.contracts.ntt["manager"],
|
|
1271
|
-
options: {
|
|
1272
|
-
showContent: true,
|
|
1273
|
-
},
|
|
1274
|
-
});
|
|
1275
|
-
if (!state.data?.content ||
|
|
1276
|
-
state.data.content.dataType !== "moveObject") {
|
|
1277
|
-
throw new Error("Failed to fetch NTT state object");
|
|
1278
|
-
}
|
|
1279
|
-
const fields = state.data.content.fields;
|
|
1280
|
-
const inboxTable = fields.inbox.fields.entries;
|
|
1281
|
-
const threshold = parseInt(fields.threshold);
|
|
1282
|
-
// Get chain ID
|
|
1283
|
-
const sourceChain = attestation.emitterChain;
|
|
1284
|
-
if (!sourceChain) {
|
|
1285
|
-
return null;
|
|
1286
|
-
}
|
|
1287
|
-
const sourceChainId = chainToChainId(sourceChain);
|
|
1288
|
-
// Since we can't easily query by the complex key structure,
|
|
1289
|
-
// let's get all dynamic fields and find the matching one
|
|
1290
|
-
const dynamicFields = await this.provider.getDynamicFields({
|
|
1291
|
-
parentId: inboxTable.fields.id.id,
|
|
1292
|
-
});
|
|
1293
|
-
// Look for an inbox entry that matches our chain and message
|
|
1294
|
-
let inboxEntry = null;
|
|
1295
|
-
for (const field of dynamicFields.data) {
|
|
1296
|
-
try {
|
|
1297
|
-
// Check if this field matches our criteria
|
|
1298
|
-
if (field.name?.value) {
|
|
1299
|
-
const keyValue = field.name.value;
|
|
1300
|
-
// Check if chain_id matches
|
|
1301
|
-
if (keyValue?.chain_id === sourceChainId) {
|
|
1302
|
-
// Get the first matching chain_id
|
|
1303
|
-
const inboxEntryObject = await this.provider.getObject({
|
|
1304
|
-
id: field.objectId,
|
|
1305
|
-
options: { showContent: true },
|
|
1306
|
-
});
|
|
1307
|
-
// Verify this is the right message by checking the message ID if available
|
|
1308
|
-
if (inboxEntryObject.data?.content?.dataType === "moveObject") {
|
|
1309
|
-
// Check if the message ID matches (if we have it in the attestation)
|
|
1310
|
-
if (attestation.payload.nttManagerPayload?.id &&
|
|
1311
|
-
keyValue?.message?.id?.data) {
|
|
1312
|
-
// Compare the message ID from the key with our expected hash
|
|
1313
|
-
// Convert both Uint8Arrays to hex strings for proper comparison
|
|
1314
|
-
const msgIdStr = Buffer.from(keyValue.message.id.data).toString("hex");
|
|
1315
|
-
const attestationMsgIdStr = Buffer.from(attestation.payload.nttManagerPayload?.id).toString("hex");
|
|
1316
|
-
if (msgIdStr === attestationMsgIdStr) {
|
|
1317
|
-
// Found the exact match
|
|
1318
|
-
inboxEntry = inboxEntryObject;
|
|
1319
|
-
break;
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
|
-
}
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
catch (e) {
|
|
1327
|
-
// Skip this field if we can't read it
|
|
1328
|
-
continue;
|
|
1329
|
-
}
|
|
1330
|
-
}
|
|
1331
|
-
// Check if we found a matching inbox entry
|
|
1332
|
-
if (!inboxEntry) {
|
|
1333
|
-
return null;
|
|
1334
|
-
}
|
|
1335
|
-
const inboxItemFields = inboxEntry.data.content.fields
|
|
1336
|
-
.value.fields;
|
|
1337
|
-
return { inboxItemFields, threshold };
|
|
1250
|
+
messageBytes = serializeLayout(nativeTokenTransferLayout, nttManagerPayload.payload);
|
|
1338
1251
|
}
|
|
1339
1252
|
catch (error) {
|
|
1340
|
-
|
|
1341
|
-
return null;
|
|
1253
|
+
throw new Error(`Failed to serialize native token transfer payload: ${error instanceof Error ? error.message : String(error)}`);
|
|
1342
1254
|
}
|
|
1255
|
+
// Create transaction to call borrow_inbox_item
|
|
1256
|
+
const txb = new Transaction();
|
|
1257
|
+
// Get the wormhole core bridge package ID for creating message components
|
|
1258
|
+
const wormholeCoreBridgePackageId = await getWormholePackageId(this.provider, this.contracts.coreBridge);
|
|
1259
|
+
// Create the NttManagerMessage object using the utility function
|
|
1260
|
+
const manager_message = createNttManagerMessageObjects(txb, nttCommonPackageId, wormholeCoreBridgePackageId, messageBytes, nttManagerPayload.id, nttManagerPayload.sender.toUint8Array());
|
|
1261
|
+
// Now call borrow_inbox_item with the properly constructed message object
|
|
1262
|
+
const [inboxItemRef] = txb.moveCall({
|
|
1263
|
+
target: `${nttPackageId}::state::borrow_inbox_item`,
|
|
1264
|
+
typeArguments: [coinType],
|
|
1265
|
+
arguments: [
|
|
1266
|
+
txb.object(this.contracts.ntt["manager"]), // State object
|
|
1267
|
+
txb.pure.u16(sourceChainId), // Chain ID
|
|
1268
|
+
manager_message,
|
|
1269
|
+
],
|
|
1270
|
+
});
|
|
1271
|
+
// Then serialize the inbox item reference to bytes
|
|
1272
|
+
txb.moveCall({
|
|
1273
|
+
target: `0x2::bcs::to_bytes`,
|
|
1274
|
+
typeArguments: [
|
|
1275
|
+
`${nttPackageId}::inbox::InboxItem<${nttCommonPackageId}::native_token_transfer::NativeTokenTransfer>`,
|
|
1276
|
+
],
|
|
1277
|
+
arguments: [inboxItemRef],
|
|
1278
|
+
});
|
|
1279
|
+
// Execute the transaction in dev inspect mode to read the result
|
|
1280
|
+
const inspectResult = await this.provider.devInspectTransactionBlock({
|
|
1281
|
+
transactionBlock: txb,
|
|
1282
|
+
sender: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
1283
|
+
});
|
|
1284
|
+
// Parse and return the result
|
|
1285
|
+
return parseInboxItemResult(inspectResult, threshold);
|
|
1343
1286
|
}
|
|
1344
1287
|
}
|
|
1345
1288
|
//# sourceMappingURL=ntt.js.map
|