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