@hyperbridge/sdk 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +45 -3
  2. package/dist/browser/index.d.ts +2190 -0
  3. package/dist/browser/index.js +11662 -0
  4. package/dist/browser/index.js.map +1 -0
  5. package/dist/browser/web_bg.wasm +0 -0
  6. package/dist/node/index.d.ts +2190 -0
  7. package/dist/node/index.js +11613 -0
  8. package/dist/node/index.js.map +1 -0
  9. package/dist/node/node_bg.wasm +0 -0
  10. package/package.json +46 -16
  11. package/plugins/vite.d.ts +11 -0
  12. package/plugins/vite.js +55 -0
  13. package/dist/abis/erc6160.d.ts +0 -370
  14. package/dist/abis/erc6160.js +0 -238
  15. package/dist/abis/erc6160.js.map +0 -1
  16. package/dist/abis/evmHost.d.ts +0 -1752
  17. package/dist/abis/evmHost.js +0 -2250
  18. package/dist/abis/evmHost.js.map +0 -1
  19. package/dist/abis/handler.d.ts +0 -580
  20. package/dist/abis/handler.js +0 -750
  21. package/dist/abis/handler.js.map +0 -1
  22. package/dist/abis/pingModule.d.ts +0 -594
  23. package/dist/abis/pingModule.js +0 -765
  24. package/dist/abis/pingModule.js.map +0 -1
  25. package/dist/abis/tokenGateway.d.ts +0 -839
  26. package/dist/abis/tokenGateway.js +0 -471
  27. package/dist/abis/tokenGateway.js.map +0 -1
  28. package/dist/chain.d.ts +0 -83
  29. package/dist/chain.js +0 -34
  30. package/dist/chain.js.map +0 -1
  31. package/dist/chains/evm.d.ts +0 -86
  32. package/dist/chains/evm.js +0 -249
  33. package/dist/chains/evm.js.map +0 -1
  34. package/dist/chains/substrate.d.ts +0 -88
  35. package/dist/chains/substrate.js +0 -287
  36. package/dist/chains/substrate.js.map +0 -1
  37. package/dist/client.d.ts +0 -216
  38. package/dist/client.js +0 -774
  39. package/dist/client.js.map +0 -1
  40. package/dist/index.d.ts +0 -6
  41. package/dist/index.js +0 -7
  42. package/dist/index.js.map +0 -1
  43. package/dist/queries.d.ts +0 -3
  44. package/dist/queries.js +0 -78
  45. package/dist/queries.js.map +0 -1
  46. package/dist/tests/hyperbridgeRequests.test.d.ts +0 -1
  47. package/dist/tests/hyperbridgeRequests.test.js +0 -415
  48. package/dist/tests/hyperbridgeRequests.test.js.map +0 -1
  49. package/dist/tests/postRequest.test.d.ts +0 -1
  50. package/dist/tests/postRequest.test.js +0 -293
  51. package/dist/tests/postRequest.test.js.map +0 -1
  52. package/dist/tests/setup.d.ts +0 -1
  53. package/dist/tests/setup.js +0 -6
  54. package/dist/tests/setup.js.map +0 -1
  55. package/dist/tests/tokenGateway.test.d.ts +0 -1
  56. package/dist/tests/tokenGateway.test.js +0 -85
  57. package/dist/tests/tokenGateway.test.js.map +0 -1
  58. package/dist/tests/xcmGateway.test.d.ts +0 -1
  59. package/dist/tests/xcmGateway.test.js +0 -71
  60. package/dist/tests/xcmGateway.test.js.map +0 -1
  61. package/dist/types/index.d.ts +0 -238
  62. package/dist/types/index.js +0 -30
  63. package/dist/types/index.js.map +0 -1
  64. package/dist/utils/mmr.d.ts +0 -13
  65. package/dist/utils/mmr.js +0 -153
  66. package/dist/utils/mmr.js.map +0 -1
  67. package/dist/utils/substrate.d.ts +0 -1913
  68. package/dist/utils/substrate.js +0 -361
  69. package/dist/utils/substrate.js.map +0 -1
  70. package/dist/utils/tokenGateway.d.ts +0 -68
  71. package/dist/utils/tokenGateway.js +0 -151
  72. package/dist/utils/tokenGateway.js.map +0 -1
  73. package/dist/utils/xcmGateway.d.ts +0 -81
  74. package/dist/utils/xcmGateway.js +0 -218
  75. package/dist/utils/xcmGateway.js.map +0 -1
  76. package/dist/utils.d.ts +0 -57
  77. package/dist/utils.js +0 -96
  78. package/dist/utils.js.map +0 -1
@@ -1,238 +0,0 @@
1
- import { Hex } from "viem";
2
- export type HexString = `0x${string}`;
3
- export interface IConfig {
4
- source: IEvmConfig | ISubstrateConfig;
5
- dest: IEvmConfig | ISubstrateConfig;
6
- hyperbridge: IHyperbridgeConfig;
7
- tracing?: boolean;
8
- }
9
- export interface IEvmConfig {
10
- rpcUrl: string;
11
- stateMachineId: string;
12
- host: string;
13
- consensusStateId: string;
14
- }
15
- export interface ISubstrateConfig {
16
- wsUrl: string;
17
- consensusStateId: string;
18
- hasher: "Keccak" | "Blake2";
19
- stateMachineId: string;
20
- }
21
- export interface IHyperbridgeConfig {
22
- wsUrl: string;
23
- stateMachineId: string;
24
- consensusStateId: string;
25
- }
26
- export interface IPostRequest {
27
- source: string;
28
- dest: string;
29
- from: HexString;
30
- to: HexString;
31
- nonce: bigint;
32
- body: HexString;
33
- timeoutTimestamp: bigint;
34
- }
35
- export interface IGetRequest {
36
- source: string;
37
- dest: string;
38
- from: string;
39
- nonce: bigint;
40
- height: bigint;
41
- keys: HexString[];
42
- timeoutTimestamp: bigint;
43
- }
44
- export interface IPostResponse {
45
- post: IPostRequest;
46
- response: string;
47
- timeoutTimestamp: bigint;
48
- }
49
- export interface ClientConfig {
50
- pollInterval?: number;
51
- url?: string;
52
- source: IEvmConfig | ISubstrateConfig;
53
- dest: IEvmConfig | ISubstrateConfig;
54
- hyperbridge: IHyperbridgeConfig;
55
- }
56
- export interface RetryConfig {
57
- maxRetries: number;
58
- backoffMs: number;
59
- }
60
- export interface IsmpRequest {
61
- source: string;
62
- dest: string;
63
- from: string;
64
- to: string;
65
- nonce: bigint;
66
- body: string;
67
- timeoutTimestamp: bigint;
68
- storage_key?: string;
69
- }
70
- export declare enum RequestStatus {
71
- SOURCE = "SOURCE",
72
- SOURCE_FINALIZED = "SOURCE_FINALIZED",
73
- HYPERBRIDGE_DELIVERED = "HYPERBRIDGE_DELIVERED",
74
- HYPERBRIDGE_FINALIZED = "HYPERBRIDGE_FINALIZED",
75
- DESTINATION = "DESTINATION",
76
- TIMED_OUT = "TIMED_OUT",
77
- HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT"
78
- }
79
- export declare enum TimeoutStatus {
80
- PENDING_TIMEOUT = "PENDING_TIMEOUT",
81
- DESTINATION_FINALIZED_TIMEOUT = "DESTINATION_FINALIZED_TIMEOUT",
82
- HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT",
83
- HYPERBRIDGE_FINALIZED_TIMEOUT = "HYPERBRIDGE_FINALIZED_TIMEOUT",
84
- TIMED_OUT = "TIMED_OUT"
85
- }
86
- export declare enum HyperClientStatus {
87
- PENDING = "PENDING",
88
- SOURCE_FINALIZED = "SOURCE_FINALIZED",
89
- HYPERBRIDGE_FINALIZED = "HYPERBRIDGE_FINALIZED",
90
- HYPERBRIDGE_VERIFIED = "HYPERBRIDGE_VERIFIED",
91
- DESTINATION = "DESTINATION",
92
- TIMED_OUT = "TIMED_OUT",
93
- HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT",
94
- ERROR = "ERROR"
95
- }
96
- export interface BlockMetadata {
97
- blockHash: string;
98
- blockNumber: number;
99
- transactionHash: string;
100
- calldata?: string;
101
- }
102
- export interface PostRequestStatus {
103
- status: RequestStatus;
104
- metadata: Partial<BlockMetadata>;
105
- }
106
- export interface PostRequestTimeoutStatus {
107
- status: TimeoutStatus;
108
- metadata?: Partial<BlockMetadata>;
109
- }
110
- export interface StateMachineUpdate {
111
- height: number;
112
- chain: string;
113
- blockHash: string;
114
- blockNumber: number;
115
- transactionHash: string;
116
- transactionIndex: number;
117
- stateMachineId: string;
118
- createdAt: string;
119
- }
120
- export interface RequestResponse {
121
- requests: {
122
- nodes: Array<{
123
- source: string;
124
- dest: string;
125
- to: HexString;
126
- from: HexString;
127
- nonce: bigint;
128
- body: HexString;
129
- timeoutTimestamp: bigint;
130
- statusMetadata: {
131
- nodes: Array<{
132
- blockHash: string;
133
- blockNumber: string;
134
- timestamp: string;
135
- chain: string;
136
- status: string;
137
- transactionHash: string;
138
- }>;
139
- };
140
- }>;
141
- };
142
- }
143
- export type RequestStatusWithMetadata = {
144
- status: RequestStatus.SOURCE;
145
- metadata: {
146
- blockHash: string;
147
- blockNumber: number;
148
- transactionHash: string;
149
- };
150
- } | {
151
- status: RequestStatus.SOURCE_FINALIZED;
152
- metadata: {
153
- blockHash: string;
154
- blockNumber: number;
155
- transactionHash: string;
156
- };
157
- } | {
158
- status: RequestStatus.HYPERBRIDGE_DELIVERED;
159
- metadata: {
160
- blockHash: string;
161
- blockNumber: number;
162
- transactionHash: string;
163
- };
164
- } | {
165
- status: RequestStatus.HYPERBRIDGE_FINALIZED;
166
- metadata: {
167
- calldata: Hex;
168
- blockHash: string;
169
- blockNumber: number;
170
- transactionHash: string;
171
- };
172
- } | {
173
- status: RequestStatus.DESTINATION;
174
- metadata: {
175
- blockHash: string;
176
- blockNumber: number;
177
- transactionHash: string;
178
- };
179
- } | {
180
- status: TimeoutStatus.PENDING_TIMEOUT;
181
- metadata: {
182
- blockHash: string;
183
- blockNumber: number;
184
- transactionHash: string;
185
- };
186
- } | {
187
- status: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT;
188
- metadata: {
189
- blockHash: string;
190
- blockNumber: number;
191
- transactionHash: string;
192
- };
193
- } | {
194
- status: TimeoutStatus.HYPERBRIDGE_TIMED_OUT;
195
- metadata: {
196
- blockHash: string;
197
- blockNumber: number;
198
- transactionHash: string;
199
- };
200
- } | {
201
- status: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT;
202
- metadata: {
203
- calldata: Hex;
204
- blockHash: string;
205
- blockNumber: number;
206
- transactionHash: string;
207
- };
208
- } | {
209
- status: TimeoutStatus.TIMED_OUT;
210
- metadata: {
211
- blockHash: string;
212
- blockNumber: number;
213
- transactionHash: string;
214
- };
215
- };
216
- export interface RequestWithStatus {
217
- source: string;
218
- dest: string;
219
- to: HexString;
220
- from: HexString;
221
- nonce: bigint;
222
- body: HexString;
223
- timeoutTimestamp: bigint;
224
- statuses: Array<RequestStatusWithMetadata>;
225
- }
226
- export interface RequestCommitment {
227
- requests: {
228
- nodes: Array<{
229
- id: string;
230
- commitment: string;
231
- }>;
232
- };
233
- }
234
- export interface StateMachineResponse {
235
- stateMachineUpdateEvents: {
236
- nodes: StateMachineUpdate[];
237
- };
238
- }
@@ -1,30 +0,0 @@
1
- export var RequestStatus;
2
- (function (RequestStatus) {
3
- RequestStatus["SOURCE"] = "SOURCE";
4
- RequestStatus["SOURCE_FINALIZED"] = "SOURCE_FINALIZED";
5
- RequestStatus["HYPERBRIDGE_DELIVERED"] = "HYPERBRIDGE_DELIVERED";
6
- RequestStatus["HYPERBRIDGE_FINALIZED"] = "HYPERBRIDGE_FINALIZED";
7
- RequestStatus["DESTINATION"] = "DESTINATION";
8
- RequestStatus["TIMED_OUT"] = "TIMED_OUT";
9
- RequestStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
10
- })(RequestStatus || (RequestStatus = {}));
11
- export var TimeoutStatus;
12
- (function (TimeoutStatus) {
13
- TimeoutStatus["PENDING_TIMEOUT"] = "PENDING_TIMEOUT";
14
- TimeoutStatus["DESTINATION_FINALIZED_TIMEOUT"] = "DESTINATION_FINALIZED_TIMEOUT";
15
- TimeoutStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
16
- TimeoutStatus["HYPERBRIDGE_FINALIZED_TIMEOUT"] = "HYPERBRIDGE_FINALIZED_TIMEOUT";
17
- TimeoutStatus["TIMED_OUT"] = "TIMED_OUT";
18
- })(TimeoutStatus || (TimeoutStatus = {}));
19
- export var HyperClientStatus;
20
- (function (HyperClientStatus) {
21
- HyperClientStatus["PENDING"] = "PENDING";
22
- HyperClientStatus["SOURCE_FINALIZED"] = "SOURCE_FINALIZED";
23
- HyperClientStatus["HYPERBRIDGE_FINALIZED"] = "HYPERBRIDGE_FINALIZED";
24
- HyperClientStatus["HYPERBRIDGE_VERIFIED"] = "HYPERBRIDGE_VERIFIED";
25
- HyperClientStatus["DESTINATION"] = "DESTINATION";
26
- HyperClientStatus["TIMED_OUT"] = "TIMED_OUT";
27
- HyperClientStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
28
- HyperClientStatus["ERROR"] = "ERROR";
29
- })(HyperClientStatus || (HyperClientStatus = {}));
30
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AA2HA,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACxB,kCAAiB,CAAA;IACjB,sDAAqC,CAAA;IACrC,gEAA+C,CAAA;IAC/C,gEAA+C,CAAA;IAC/C,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;IACvB,gEAA+C,CAAA;AAChD,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAED,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACxB,oDAAmC,CAAA;IACnC,gFAA+D,CAAA;IAC/D,gEAA+C,CAAA;IAC/C,gFAA+D,CAAA;IAC/D,wCAAuB,CAAA;AACxB,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAED,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC5B,wCAAmB,CAAA;IACnB,0DAAqC,CAAA;IACrC,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,oEAA+C,CAAA;IAC/C,oCAAe,CAAA;AAChB,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Converts a node's MMR position to its k-index
3
- * @param leaves - Array of leaf positions
4
- * @param mmrSize - Size of the MMR
5
- * @returns Array of tuples containing position and k-index
6
- */
7
- export declare function mmrPositionToKIndex(initialLeaves: bigint[], mmrSize: bigint): Array<[bigint, bigint]>;
8
- /**
9
- * Calculate the total size of MMR (number of nodes) from the number of leaves.
10
- * @param numberOfLeaves - The number of leaves in the MMR
11
- * @returns The total size of the MMR (total number of nodes)
12
- */
13
- export declare function calculateMMRSize(numberOfLeaves: bigint): bigint;
package/dist/utils/mmr.js DELETED
@@ -1,153 +0,0 @@
1
- /**
2
- * Gets peak position for a given height
3
- */
4
- function getPeakPosByHeight(height) {
5
- return (1n << BigInt(height + 1)) - 2n;
6
- }
7
- /**
8
- * Gets the height and position of the leftmost peak
9
- */
10
- function leftPeakHeightPos(mmrSize) {
11
- let height = 1;
12
- let prevPos = 0n;
13
- let pos = getPeakPosByHeight(height);
14
- while (pos < mmrSize) {
15
- height += 1;
16
- prevPos = pos;
17
- pos = getPeakPosByHeight(height);
18
- }
19
- return [height - 1, prevPos];
20
- }
21
- /**
22
- * Gets the right peak at a given height and position
23
- */
24
- function getRightPeak(initialHeight, initialPos, mmrSize) {
25
- let height = initialHeight;
26
- let pos = initialPos;
27
- // move to right sibling pos
28
- pos += siblingOffset(height);
29
- // loop until we find a pos in mmr
30
- while (pos > mmrSize - 1n) {
31
- if (height === 0) {
32
- return null;
33
- }
34
- // move to left child
35
- pos -= parentOffset(height - 1);
36
- height -= 1;
37
- }
38
- return [height, pos];
39
- }
40
- /**
41
- * Gets all peaks in the MMR
42
- */
43
- function getPeaks(mmrSize) {
44
- const positions = [];
45
- let [height, pos] = leftPeakHeightPos(mmrSize);
46
- positions.push(pos);
47
- while (height > 0) {
48
- const peak = getRightPeak(height, pos, mmrSize);
49
- if (!peak)
50
- break;
51
- [height, pos] = peak;
52
- positions.push(pos);
53
- }
54
- return positions;
55
- }
56
- /**
57
- * Checks if a number consists of all ones in its binary representation
58
- */
59
- function allOnes(num) {
60
- if (num === 0n)
61
- return false;
62
- return num
63
- .toString(2)
64
- .split("")
65
- .every((bit) => bit === "1");
66
- }
67
- /**
68
- * Calculates the position after jumping left in the tree
69
- */
70
- function jumpLeft(pos) {
71
- const bitLength = pos.toString(2).length;
72
- const mostSignificantBits = 1n << BigInt(bitLength - 1);
73
- return pos - (mostSignificantBits - 1n);
74
- }
75
- /**
76
- * Calculates the height of a position in the tree
77
- */
78
- function posHeightInTree(initialPos) {
79
- let pos = initialPos + 1n;
80
- while (!allOnes(pos)) {
81
- pos = jumpLeft(pos);
82
- }
83
- return pos.toString(2).length - 1;
84
- }
85
- /**
86
- * Calculates the parent offset for a given height
87
- */
88
- function parentOffset(height) {
89
- return 2n << BigInt(height);
90
- }
91
- /**
92
- * Calculates the sibling offset for a given height
93
- */
94
- function siblingOffset(height) {
95
- return (2n << BigInt(height)) - 1n;
96
- }
97
- /**
98
- * Takes elements from a vector while they satisfy a predicate
99
- */
100
- function takeWhileVec(v, p) {
101
- const index = v.findIndex((item) => !p(item));
102
- if (index === -1) {
103
- const result = [...v];
104
- v.length = 0;
105
- return result;
106
- }
107
- return v.splice(0, index);
108
- }
109
- /**
110
- * Converts a node's MMR position to its k-index
111
- * @param leaves - Array of leaf positions
112
- * @param mmrSize - Size of the MMR
113
- * @returns Array of tuples containing position and k-index
114
- */
115
- export function mmrPositionToKIndex(initialLeaves, mmrSize) {
116
- const leaves = [...initialLeaves];
117
- const peaks = getPeaks(mmrSize);
118
- const leavesWithKIndices = [];
119
- for (const peak of peaks) {
120
- const peakLeaves = takeWhileVec(leaves, (pos) => pos <= peak);
121
- if (peakLeaves.length > 0) {
122
- for (const pos of peakLeaves) {
123
- const height = posHeightInTree(peak);
124
- let index = 0n;
125
- let parentPos = peak;
126
- for (let h = height; h >= 1; h--) {
127
- const leftChild = parentPos - parentOffset(h - 1);
128
- const rightChild = leftChild + siblingOffset(h - 1);
129
- index *= 2n;
130
- if (leftChild >= pos) {
131
- parentPos = leftChild;
132
- }
133
- else {
134
- parentPos = rightChild;
135
- index += 1n;
136
- }
137
- }
138
- leavesWithKIndices.push([pos, index]);
139
- }
140
- }
141
- }
142
- return leavesWithKIndices;
143
- }
144
- /**
145
- * Calculate the total size of MMR (number of nodes) from the number of leaves.
146
- * @param numberOfLeaves - The number of leaves in the MMR
147
- * @returns The total size of the MMR (total number of nodes)
148
- */
149
- export function calculateMMRSize(numberOfLeaves) {
150
- const numberOfPeaks = numberOfLeaves.toString(2).split("1").length - 1;
151
- return 2n * numberOfLeaves - BigInt(numberOfPeaks);
152
- }
153
- //# sourceMappingURL=mmr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/utils/mmr.ts"],"names":[],"mappings":"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"}