genlayer-js 0.18.1 → 0.18.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/CHANGELOG.md +7 -0
- package/dist/{chunk-GACCNOPJ.js → chunk-47QDX7IX.js} +15 -0
- package/dist/{chunk-H4ZYXVV2.cjs → chunk-FPZNF3JH.cjs} +16 -1
- package/dist/{index-BJebZa37.d.ts → index-Rls_T310.d.ts} +3 -1
- package/dist/{index-C_GfhvDJ.d.cts → index-tixobC8m.d.cts} +3 -1
- package/dist/index.cjs +12 -12
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/types/index.cjs +6 -2
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +5 -1
- package/package.json +1 -1
- package/src/transactions/actions.ts +2 -2
- package/src/types/transactions.ts +15 -0
- package/tests/transactions.test.ts +142 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## 0.18.2 (2025-09-18)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **transactions:** handle all DECIDED states in waitForTransactionReceipt ([#116](https://github.com/genlayerlabs/genlayer-js/issues/116)) ([78433d7](https://github.com/genlayerlabs/genlayer-js/commit/78433d7224298ab418ca16a87de497149b66b5f7))
|
|
9
|
+
|
|
3
10
|
## 0.18.1 (2025-09-11)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -75,6 +75,19 @@ var transactionsStatusNameToNumber = {
|
|
|
75
75
|
["VALIDATORS_TIMEOUT" /* VALIDATORS_TIMEOUT */]: "12",
|
|
76
76
|
["LEADER_TIMEOUT" /* LEADER_TIMEOUT */]: "13"
|
|
77
77
|
};
|
|
78
|
+
var DECIDED_STATES = [
|
|
79
|
+
"ACCEPTED" /* ACCEPTED */,
|
|
80
|
+
"UNDETERMINED" /* UNDETERMINED */,
|
|
81
|
+
"LEADER_TIMEOUT" /* LEADER_TIMEOUT */,
|
|
82
|
+
"VALIDATORS_TIMEOUT" /* VALIDATORS_TIMEOUT */,
|
|
83
|
+
"CANCELED" /* CANCELED */,
|
|
84
|
+
"FINALIZED" /* FINALIZED */
|
|
85
|
+
];
|
|
86
|
+
function isDecidedState(status) {
|
|
87
|
+
return DECIDED_STATES.some(
|
|
88
|
+
(state) => transactionsStatusNameToNumber[state] === status
|
|
89
|
+
);
|
|
90
|
+
}
|
|
78
91
|
var transactionResultNumberToName = {
|
|
79
92
|
"0": "IDLE" /* IDLE */,
|
|
80
93
|
"1": "AGREE" /* AGREE */,
|
|
@@ -129,6 +142,8 @@ export {
|
|
|
129
142
|
TransactionResult,
|
|
130
143
|
transactionsStatusNumberToName,
|
|
131
144
|
transactionsStatusNameToNumber,
|
|
145
|
+
DECIDED_STATES,
|
|
146
|
+
isDecidedState,
|
|
132
147
|
transactionResultNumberToName,
|
|
133
148
|
TransactionResultNameToNumber,
|
|
134
149
|
VoteType,
|
|
@@ -75,6 +75,19 @@ var transactionsStatusNameToNumber = {
|
|
|
75
75
|
["VALIDATORS_TIMEOUT" /* VALIDATORS_TIMEOUT */]: "12",
|
|
76
76
|
["LEADER_TIMEOUT" /* LEADER_TIMEOUT */]: "13"
|
|
77
77
|
};
|
|
78
|
+
var DECIDED_STATES = [
|
|
79
|
+
"ACCEPTED" /* ACCEPTED */,
|
|
80
|
+
"UNDETERMINED" /* UNDETERMINED */,
|
|
81
|
+
"LEADER_TIMEOUT" /* LEADER_TIMEOUT */,
|
|
82
|
+
"VALIDATORS_TIMEOUT" /* VALIDATORS_TIMEOUT */,
|
|
83
|
+
"CANCELED" /* CANCELED */,
|
|
84
|
+
"FINALIZED" /* FINALIZED */
|
|
85
|
+
];
|
|
86
|
+
function isDecidedState(status) {
|
|
87
|
+
return DECIDED_STATES.some(
|
|
88
|
+
(state) => transactionsStatusNameToNumber[state] === status
|
|
89
|
+
);
|
|
90
|
+
}
|
|
78
91
|
var transactionResultNumberToName = {
|
|
79
92
|
"0": "IDLE" /* IDLE */,
|
|
80
93
|
"1": "AGREE" /* AGREE */,
|
|
@@ -135,4 +148,6 @@ var TransactionHashVariant = /* @__PURE__ */ ((TransactionHashVariant2) => {
|
|
|
135
148
|
|
|
136
149
|
|
|
137
150
|
|
|
138
|
-
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
exports.CalldataAddress = CalldataAddress; exports.TransactionStatus = TransactionStatus; exports.TransactionResult = TransactionResult; exports.transactionsStatusNumberToName = transactionsStatusNumberToName; exports.transactionsStatusNameToNumber = transactionsStatusNameToNumber; exports.DECIDED_STATES = DECIDED_STATES; exports.isDecidedState = isDecidedState; exports.transactionResultNumberToName = transactionResultNumberToName; exports.TransactionResultNameToNumber = TransactionResultNameToNumber; exports.VoteType = VoteType; exports.voteTypeNumberToName = voteTypeNumberToName; exports.voteTypeNameToNumber = voteTypeNameToNumber; exports.TransactionHashVariant = TransactionHashVariant;
|
|
@@ -80,6 +80,8 @@ declare const transactionsStatusNameToNumber: {
|
|
|
80
80
|
VALIDATORS_TIMEOUT: string;
|
|
81
81
|
LEADER_TIMEOUT: string;
|
|
82
82
|
};
|
|
83
|
+
declare const DECIDED_STATES: TransactionStatus[];
|
|
84
|
+
declare function isDecidedState(status: string): boolean;
|
|
83
85
|
declare const transactionResultNumberToName: {
|
|
84
86
|
"0": TransactionResult;
|
|
85
87
|
"1": TransactionResult;
|
|
@@ -402,4 +404,4 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
|
|
|
402
404
|
}) => Promise<any>;
|
|
403
405
|
};
|
|
404
406
|
|
|
405
|
-
export { type CalldataEncodable as C, type DecodedDeployData as D, type GenLayerClient as G, type Hash as H, type MethodDescription as M, type Network as N, type SnapSource as S, type TransactionDataElement as T, VoteType as V, type DecodedCallData as a, type GenLayerRawTransaction as b, type GenLayerTransaction as c, CalldataAddress as d, type GenLayerMethod as e, type ContractParamsArraySchemaElement as f, type ContractParamsSchema as g, type ContractMethodBase as h, type ContractMethod as i, type ContractSchema as j, type TransactionHash as k, TransactionStatus as l, TransactionResult as m, transactionsStatusNameToNumber as n,
|
|
407
|
+
export { type CalldataEncodable as C, type DecodedDeployData as D, type GenLayerClient as G, type Hash as H, type MethodDescription as M, type Network as N, type SnapSource as S, type TransactionDataElement as T, VoteType as V, type DecodedCallData as a, type GenLayerRawTransaction as b, type GenLayerTransaction as c, CalldataAddress as d, type GenLayerMethod as e, type ContractParamsArraySchemaElement as f, type ContractParamsSchema as g, type ContractMethodBase as h, type ContractMethod as i, type ContractSchema as j, type TransactionHash as k, TransactionStatus as l, TransactionResult as m, transactionsStatusNameToNumber as n, DECIDED_STATES as o, isDecidedState as p, transactionResultNumberToName as q, TransactionResultNameToNumber as r, voteTypeNameToNumber as s, transactionsStatusNumberToName as t, type TransactionType as u, voteTypeNumberToName as v, TransactionHashVariant as w };
|
|
@@ -80,6 +80,8 @@ declare const transactionsStatusNameToNumber: {
|
|
|
80
80
|
VALIDATORS_TIMEOUT: string;
|
|
81
81
|
LEADER_TIMEOUT: string;
|
|
82
82
|
};
|
|
83
|
+
declare const DECIDED_STATES: TransactionStatus[];
|
|
84
|
+
declare function isDecidedState(status: string): boolean;
|
|
83
85
|
declare const transactionResultNumberToName: {
|
|
84
86
|
"0": TransactionResult;
|
|
85
87
|
"1": TransactionResult;
|
|
@@ -402,4 +404,4 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
|
|
|
402
404
|
}) => Promise<any>;
|
|
403
405
|
};
|
|
404
406
|
|
|
405
|
-
export { type CalldataEncodable as C, type DecodedDeployData as D, type GenLayerClient as G, type Hash as H, type MethodDescription as M, type Network as N, type SnapSource as S, type TransactionDataElement as T, VoteType as V, type DecodedCallData as a, type GenLayerRawTransaction as b, type GenLayerTransaction as c, CalldataAddress as d, type GenLayerMethod as e, type ContractParamsArraySchemaElement as f, type ContractParamsSchema as g, type ContractMethodBase as h, type ContractMethod as i, type ContractSchema as j, type TransactionHash as k, TransactionStatus as l, TransactionResult as m, transactionsStatusNameToNumber as n,
|
|
407
|
+
export { type CalldataEncodable as C, type DecodedDeployData as D, type GenLayerClient as G, type Hash as H, type MethodDescription as M, type Network as N, type SnapSource as S, type TransactionDataElement as T, VoteType as V, type DecodedCallData as a, type GenLayerRawTransaction as b, type GenLayerTransaction as c, CalldataAddress as d, type GenLayerMethod as e, type ContractParamsArraySchemaElement as f, type ContractParamsSchema as g, type ContractMethodBase as h, type ContractMethod as i, type ContractSchema as j, type TransactionHash as k, TransactionStatus as l, TransactionResult as m, transactionsStatusNameToNumber as n, DECIDED_STATES as o, isDecidedState as p, transactionResultNumberToName as q, TransactionResultNameToNumber as r, voteTypeNameToNumber as s, transactionsStatusNumberToName as t, type TransactionType as u, voteTypeNumberToName as v, TransactionHashVariant as w };
|
package/dist/index.cjs
CHANGED
|
@@ -10,7 +10,8 @@ var _chunkZKBMABRAcjs = require('./chunk-ZKBMABRA.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
var _chunkFPZNF3JHcjs = require('./chunk-FPZNF3JH.cjs');
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
var _chunk75ZPJI57cjs = require('./chunk-75ZPJI57.cjs');
|
|
@@ -183,7 +184,7 @@ function encodeImpl(to, data) {
|
|
|
183
184
|
}
|
|
184
185
|
} else if (data instanceof Map) {
|
|
185
186
|
encodeMap(to, data);
|
|
186
|
-
} else if (data instanceof
|
|
187
|
+
} else if (data instanceof _chunkFPZNF3JHcjs.CalldataAddress) {
|
|
187
188
|
to.push(SPECIAL_ADDR);
|
|
188
189
|
for (const c of data.bytes) {
|
|
189
190
|
to.push(c);
|
|
@@ -258,7 +259,7 @@ function decodeImpl(data, index) {
|
|
|
258
259
|
case BigInt(SPECIAL_ADDR): {
|
|
259
260
|
const res = data.slice(index.i, index.i + 20);
|
|
260
261
|
index.i += 20;
|
|
261
|
-
return new (0,
|
|
262
|
+
return new (0, _chunkFPZNF3JHcjs.CalldataAddress)(res);
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
265
|
const type = Number(cur & 0xffn) & (1 << BITS_IN_TYPE) - 1;
|
|
@@ -370,7 +371,7 @@ function toStringImpl(data, to) {
|
|
|
370
371
|
to.push("]");
|
|
371
372
|
} else if (data instanceof Map) {
|
|
372
373
|
toStringImplMap(data.entries(), to);
|
|
373
|
-
} else if (data instanceof
|
|
374
|
+
} else if (data instanceof _chunkFPZNF3JHcjs.CalldataAddress) {
|
|
374
375
|
to.push("addr#");
|
|
375
376
|
for (const c of data.bytes) {
|
|
376
377
|
to.push(c.toString(16));
|
|
@@ -493,7 +494,7 @@ function _toJsonSafeDeep(value, seen) {
|
|
|
493
494
|
}
|
|
494
495
|
return obj;
|
|
495
496
|
}
|
|
496
|
-
if (value instanceof
|
|
497
|
+
if (value instanceof _chunkFPZNF3JHcjs.CalldataAddress) {
|
|
497
498
|
return _viem.toHex.call(void 0, value.bytes);
|
|
498
499
|
}
|
|
499
500
|
if (Object.getPrototypeOf(value) === Object.prototype) {
|
|
@@ -896,8 +897,8 @@ var decodeTransaction = (tx) => {
|
|
|
896
897
|
processingBlock: tx.readStateBlockRange.processingBlock.toString(),
|
|
897
898
|
proposalBlock: tx.readStateBlockRange.proposalBlock.toString()
|
|
898
899
|
},
|
|
899
|
-
statusName:
|
|
900
|
-
resultName:
|
|
900
|
+
statusName: _chunkFPZNF3JHcjs.transactionsStatusNumberToName[String(tx.status)],
|
|
901
|
+
resultName: _chunkFPZNF3JHcjs.transactionResultNumberToName[String(tx.result)],
|
|
901
902
|
lastRound: {
|
|
902
903
|
...tx.lastRound,
|
|
903
904
|
round: tx.lastRound.round.toString(),
|
|
@@ -907,7 +908,7 @@ var decodeTransaction = (tx) => {
|
|
|
907
908
|
appealBond: tx.lastRound.appealBond.toString(),
|
|
908
909
|
rotationsLeft: tx.lastRound.rotationsLeft.toString(),
|
|
909
910
|
validatorVotesName: tx.lastRound.validatorVotes.map(
|
|
910
|
-
(vote) =>
|
|
911
|
+
(vote) => _chunkFPZNF3JHcjs.voteTypeNumberToName[String(vote)]
|
|
911
912
|
)
|
|
912
913
|
}
|
|
913
914
|
};
|
|
@@ -1046,9 +1047,8 @@ var receiptActions = (client, publicClient) => ({
|
|
|
1046
1047
|
throw new Error("Transaction not found");
|
|
1047
1048
|
}
|
|
1048
1049
|
const transactionStatusString = String(transaction.status);
|
|
1049
|
-
const
|
|
1050
|
-
|
|
1051
|
-
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString === transactionStatusFinalized) {
|
|
1050
|
+
const requestedStatus = _chunkFPZNF3JHcjs.transactionsStatusNameToNumber[status];
|
|
1051
|
+
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && _chunkFPZNF3JHcjs.isDecidedState.call(void 0, transactionStatusString)) {
|
|
1052
1052
|
let finalTransaction = transaction;
|
|
1053
1053
|
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
1054
1054
|
finalTransaction = decodeLocalnetTransaction(transaction);
|
|
@@ -1076,7 +1076,7 @@ var transactionActions = (client, publicClient) => ({
|
|
|
1076
1076
|
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
1077
1077
|
const transaction2 = await client.getTransaction({ hash });
|
|
1078
1078
|
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" /* PENDING */ : transaction2.status;
|
|
1079
|
-
transaction2.status = Number(
|
|
1079
|
+
transaction2.status = Number(_chunkFPZNF3JHcjs.transactionsStatusNameToNumber[localnetStatus]);
|
|
1080
1080
|
transaction2.statusName = localnetStatus;
|
|
1081
1081
|
return decodeLocalnetTransaction(transaction2);
|
|
1082
1082
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as viem from 'viem';
|
|
2
2
|
import { Account, Address, Hex } from 'viem';
|
|
3
3
|
import { G as GenLayerChain } from './chains-BYSCF33g.cjs';
|
|
4
|
-
import { G as GenLayerClient, D as DecodedDeployData, a as DecodedCallData, b as GenLayerRawTransaction, c as GenLayerTransaction, C as CalldataEncodable, T as TransactionDataElement } from './index-
|
|
4
|
+
import { G as GenLayerClient, D as DecodedDeployData, a as DecodedCallData, b as GenLayerRawTransaction, c as GenLayerTransaction, C as CalldataEncodable, T as TransactionDataElement } from './index-tixobC8m.cjs';
|
|
5
5
|
import * as abitype from 'abitype';
|
|
6
6
|
import * as viem__types_types_authorization from 'viem/_types/types/authorization';
|
|
7
7
|
import * as viem_accounts from 'viem/accounts';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as viem from 'viem';
|
|
2
2
|
import { Account, Address, Hex } from 'viem';
|
|
3
3
|
import { G as GenLayerChain } from './chains-BYSCF33g.js';
|
|
4
|
-
import { G as GenLayerClient, D as DecodedDeployData, a as DecodedCallData, b as GenLayerRawTransaction, c as GenLayerTransaction, C as CalldataEncodable, T as TransactionDataElement } from './index-
|
|
4
|
+
import { G as GenLayerClient, D as DecodedDeployData, a as DecodedCallData, b as GenLayerRawTransaction, c as GenLayerTransaction, C as CalldataEncodable, T as TransactionDataElement } from './index-Rls_T310.js';
|
|
5
5
|
import * as abitype from 'abitype';
|
|
6
6
|
import * as viem__types_types_authorization from 'viem/_types/types/authorization';
|
|
7
7
|
import * as viem_accounts from 'viem/accounts';
|
package/dist/index.js
CHANGED
|
@@ -6,11 +6,12 @@ import {
|
|
|
6
6
|
} from "./chunk-GEN4SJ6K.js";
|
|
7
7
|
import {
|
|
8
8
|
CalldataAddress,
|
|
9
|
+
isDecidedState,
|
|
9
10
|
transactionResultNumberToName,
|
|
10
11
|
transactionsStatusNameToNumber,
|
|
11
12
|
transactionsStatusNumberToName,
|
|
12
13
|
voteTypeNumberToName
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-47QDX7IX.js";
|
|
14
15
|
import {
|
|
15
16
|
__export
|
|
16
17
|
} from "./chunk-MLKGABMK.js";
|
|
@@ -1046,9 +1047,8 @@ var receiptActions = (client, publicClient) => ({
|
|
|
1046
1047
|
throw new Error("Transaction not found");
|
|
1047
1048
|
}
|
|
1048
1049
|
const transactionStatusString = String(transaction.status);
|
|
1049
|
-
const transactionStatusFinalized = transactionsStatusNameToNumber["FINALIZED" /* FINALIZED */];
|
|
1050
1050
|
const requestedStatus = transactionsStatusNameToNumber[status];
|
|
1051
|
-
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString
|
|
1051
|
+
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && isDecidedState(transactionStatusString)) {
|
|
1052
1052
|
let finalTransaction = transaction;
|
|
1053
1053
|
if (client.chain.id === localnet.id) {
|
|
1054
1054
|
finalTransaction = decodeLocalnetTransaction(transaction);
|
package/dist/types/index.cjs
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkFPZNF3JHcjs = require('../chunk-FPZNF3JH.cjs');
|
|
14
16
|
require('../chunk-75ZPJI57.cjs');
|
|
15
17
|
|
|
16
18
|
|
|
@@ -24,4 +26,6 @@ require('../chunk-75ZPJI57.cjs');
|
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
exports.CalldataAddress = _chunkFPZNF3JHcjs.CalldataAddress; exports.DECIDED_STATES = _chunkFPZNF3JHcjs.DECIDED_STATES; exports.TransactionHashVariant = _chunkFPZNF3JHcjs.TransactionHashVariant; exports.TransactionResult = _chunkFPZNF3JHcjs.TransactionResult; exports.TransactionResultNameToNumber = _chunkFPZNF3JHcjs.TransactionResultNameToNumber; exports.TransactionStatus = _chunkFPZNF3JHcjs.TransactionStatus; exports.VoteType = _chunkFPZNF3JHcjs.VoteType; exports.isDecidedState = _chunkFPZNF3JHcjs.isDecidedState; exports.transactionResultNumberToName = _chunkFPZNF3JHcjs.transactionResultNumberToName; exports.transactionsStatusNameToNumber = _chunkFPZNF3JHcjs.transactionsStatusNameToNumber; exports.transactionsStatusNumberToName = _chunkFPZNF3JHcjs.transactionsStatusNumberToName; exports.voteTypeNameToNumber = _chunkFPZNF3JHcjs.voteTypeNameToNumber; exports.voteTypeNumberToName = _chunkFPZNF3JHcjs.voteTypeNumberToName;
|
package/dist/types/index.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Account, Address } from 'viem';
|
|
2
|
-
export { d as CalldataAddress, C as CalldataEncodable, i as ContractMethod, h as ContractMethodBase, f as ContractParamsArraySchemaElement, g as ContractParamsSchema, j as ContractSchema, a as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, e as GenLayerMethod, b as GenLayerRawTransaction, c as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, k as TransactionHash,
|
|
2
|
+
export { d as CalldataAddress, C as CalldataEncodable, i as ContractMethod, h as ContractMethodBase, f as ContractParamsArraySchemaElement, g as ContractParamsSchema, j as ContractSchema, o as DECIDED_STATES, a as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, e as GenLayerMethod, b as GenLayerRawTransaction, c as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, k as TransactionHash, w as TransactionHashVariant, m as TransactionResult, r as TransactionResultNameToNumber, l as TransactionStatus, u as TransactionType, V as VoteType, p as isDecidedState, q as transactionResultNumberToName, n as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, s as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-tixobC8m.cjs';
|
|
3
3
|
export { G as GenLayerChain } from '../chains-BYSCF33g.cjs';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Account, Address } from 'viem';
|
|
2
|
-
export { d as CalldataAddress, C as CalldataEncodable, i as ContractMethod, h as ContractMethodBase, f as ContractParamsArraySchemaElement, g as ContractParamsSchema, j as ContractSchema, a as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, e as GenLayerMethod, b as GenLayerRawTransaction, c as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, k as TransactionHash,
|
|
2
|
+
export { d as CalldataAddress, C as CalldataEncodable, i as ContractMethod, h as ContractMethodBase, f as ContractParamsArraySchemaElement, g as ContractParamsSchema, j as ContractSchema, o as DECIDED_STATES, a as DecodedCallData, D as DecodedDeployData, G as GenLayerClient, e as GenLayerMethod, b as GenLayerRawTransaction, c as GenLayerTransaction, H as Hash, M as MethodDescription, N as Network, S as SnapSource, k as TransactionHash, w as TransactionHashVariant, m as TransactionResult, r as TransactionResultNameToNumber, l as TransactionStatus, u as TransactionType, V as VoteType, p as isDecidedState, q as transactionResultNumberToName, n as transactionsStatusNameToNumber, t as transactionsStatusNumberToName, s as voteTypeNameToNumber, v as voteTypeNumberToName } from '../index-Rls_T310.js';
|
|
3
3
|
export { G as GenLayerChain } from '../chains-BYSCF33g.js';
|
package/dist/types/index.js
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CalldataAddress,
|
|
3
|
+
DECIDED_STATES,
|
|
3
4
|
TransactionHashVariant,
|
|
4
5
|
TransactionResult,
|
|
5
6
|
TransactionResultNameToNumber,
|
|
6
7
|
TransactionStatus,
|
|
7
8
|
VoteType,
|
|
9
|
+
isDecidedState,
|
|
8
10
|
transactionResultNumberToName,
|
|
9
11
|
transactionsStatusNameToNumber,
|
|
10
12
|
transactionsStatusNumberToName,
|
|
11
13
|
voteTypeNameToNumber,
|
|
12
14
|
voteTypeNumberToName
|
|
13
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-47QDX7IX.js";
|
|
14
16
|
import "../chunk-MLKGABMK.js";
|
|
15
17
|
export {
|
|
16
18
|
CalldataAddress,
|
|
19
|
+
DECIDED_STATES,
|
|
17
20
|
TransactionHashVariant,
|
|
18
21
|
TransactionResult,
|
|
19
22
|
TransactionResultNameToNumber,
|
|
20
23
|
TransactionStatus,
|
|
21
24
|
VoteType,
|
|
25
|
+
isDecidedState,
|
|
22
26
|
transactionResultNumberToName,
|
|
23
27
|
transactionsStatusNameToNumber,
|
|
24
28
|
transactionsStatusNumberToName,
|
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
GenLayerTransaction,
|
|
6
6
|
GenLayerRawTransaction,
|
|
7
7
|
transactionsStatusNameToNumber,
|
|
8
|
+
isDecidedState,
|
|
8
9
|
} from "../types/transactions";
|
|
9
10
|
import {transactionsConfig} from "../config/transactions";
|
|
10
11
|
import {sleep} from "../utils/async";
|
|
@@ -37,11 +38,10 @@ export const receiptActions = (client: GenLayerClient<GenLayerChain>, publicClie
|
|
|
37
38
|
throw new Error("Transaction not found");
|
|
38
39
|
}
|
|
39
40
|
const transactionStatusString = String(transaction.status);
|
|
40
|
-
const transactionStatusFinalized = transactionsStatusNameToNumber[TransactionStatus.FINALIZED];
|
|
41
41
|
const requestedStatus = transactionsStatusNameToNumber[status];
|
|
42
42
|
if (
|
|
43
43
|
transactionStatusString === requestedStatus ||
|
|
44
|
-
(status === TransactionStatus.ACCEPTED && transactionStatusString
|
|
44
|
+
(status === TransactionStatus.ACCEPTED && isDecidedState(transactionStatusString))
|
|
45
45
|
) {
|
|
46
46
|
let finalTransaction = transaction;
|
|
47
47
|
if (client.chain.id === localnet.id) {
|
|
@@ -71,6 +71,21 @@ export const transactionsStatusNameToNumber = {
|
|
|
71
71
|
[TransactionStatus.LEADER_TIMEOUT]: "13",
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
+
export const DECIDED_STATES = [
|
|
75
|
+
TransactionStatus.ACCEPTED,
|
|
76
|
+
TransactionStatus.UNDETERMINED,
|
|
77
|
+
TransactionStatus.LEADER_TIMEOUT,
|
|
78
|
+
TransactionStatus.VALIDATORS_TIMEOUT,
|
|
79
|
+
TransactionStatus.CANCELED,
|
|
80
|
+
TransactionStatus.FINALIZED
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
export function isDecidedState(status: string): boolean {
|
|
84
|
+
return DECIDED_STATES.some(state =>
|
|
85
|
+
transactionsStatusNameToNumber[state] === status
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
74
89
|
export const transactionResultNumberToName = {
|
|
75
90
|
"0": TransactionResult.IDLE,
|
|
76
91
|
"1": TransactionResult.AGREE,
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { TransactionStatus, DECIDED_STATES, isDecidedState } from "../src/types/transactions";
|
|
3
|
+
import { receiptActions } from "../src/transactions/actions";
|
|
4
|
+
import { localnet } from "../src/chains/localnet";
|
|
5
|
+
|
|
6
|
+
const mockFetch = vi.fn();
|
|
7
|
+
vi.stubGlobal("fetch", mockFetch);
|
|
8
|
+
|
|
9
|
+
describe("DECIDED_STATES constant", () => {
|
|
10
|
+
it("should contain all expected decided states", () => {
|
|
11
|
+
const expectedStates = [
|
|
12
|
+
TransactionStatus.ACCEPTED,
|
|
13
|
+
TransactionStatus.UNDETERMINED,
|
|
14
|
+
TransactionStatus.LEADER_TIMEOUT,
|
|
15
|
+
TransactionStatus.VALIDATORS_TIMEOUT,
|
|
16
|
+
TransactionStatus.CANCELED,
|
|
17
|
+
TransactionStatus.FINALIZED
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
expect(DECIDED_STATES).toEqual(expectedStates);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe("isDecidedState utility function", () => {
|
|
25
|
+
it("should return true for all decided states", () => {
|
|
26
|
+
const decidedStatusNumbers = ["5", "6", "13", "12", "8", "7"]; // ACCEPTED, UNDETERMINED, LEADER_TIMEOUT, VALIDATORS_TIMEOUT, CANCELED, FINALIZED
|
|
27
|
+
|
|
28
|
+
decidedStatusNumbers.forEach(statusNum => {
|
|
29
|
+
expect(isDecidedState(statusNum)).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("should return false for non-decided states", () => {
|
|
34
|
+
const nonDecidedStatusNumbers = ["0", "1", "2", "3", "4", "9", "10", "11"]; // UNINITIALIZED, PENDING, PROPOSING, COMMITTING, REVEALING, APPEAL_REVEALING, APPEAL_COMMITTING, READY_TO_FINALIZE
|
|
35
|
+
|
|
36
|
+
nonDecidedStatusNumbers.forEach(statusNum => {
|
|
37
|
+
expect(isDecidedState(statusNum)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("should return false for invalid statuses", () => {
|
|
42
|
+
const invalidStatuses = ["999", "invalid", ""];
|
|
43
|
+
|
|
44
|
+
invalidStatuses.forEach(status => {
|
|
45
|
+
expect(isDecidedState(status)).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe("waitForTransactionReceipt with DECIDED_STATES", () => {
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
mockFetch.mockReset();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("should accept all decided states when waiting for ACCEPTED", async () => {
|
|
56
|
+
const decidedStatusNumbers = ["5", "6", "13", "12", "8", "7"]; // All decided states
|
|
57
|
+
|
|
58
|
+
for (const statusNum of decidedStatusNumbers) {
|
|
59
|
+
const mockTransaction = {
|
|
60
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6",
|
|
61
|
+
status: statusNum,
|
|
62
|
+
from_address: "0x123",
|
|
63
|
+
to_address: "0x456",
|
|
64
|
+
value: "0",
|
|
65
|
+
gaslimit: "1000000",
|
|
66
|
+
nonce: "1",
|
|
67
|
+
created_at: "2023-01-01T00:00:00Z",
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const mockClient = {
|
|
71
|
+
chain: localnet,
|
|
72
|
+
getTransaction: vi.fn().mockResolvedValue(mockTransaction)
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const mockPublicClient = {} as any;
|
|
76
|
+
|
|
77
|
+
const actions = receiptActions(mockClient as any, mockPublicClient);
|
|
78
|
+
const result = await actions.waitForTransactionReceipt({
|
|
79
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6" as any,
|
|
80
|
+
status: TransactionStatus.ACCEPTED,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
expect(result).toEqual(mockTransaction);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("should not affect waiting for specific non-ACCEPTED statuses", async () => {
|
|
88
|
+
const mockTransaction = {
|
|
89
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6",
|
|
90
|
+
status: "7", // FINALIZED
|
|
91
|
+
from_address: "0x123",
|
|
92
|
+
to_address: "0x456",
|
|
93
|
+
value: "0",
|
|
94
|
+
gaslimit: "1000000",
|
|
95
|
+
nonce: "1",
|
|
96
|
+
created_at: "2023-01-01T00:00:00Z",
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const mockClient = {
|
|
100
|
+
chain: localnet,
|
|
101
|
+
getTransaction: vi.fn().mockResolvedValue(mockTransaction)
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const mockPublicClient = {} as any;
|
|
105
|
+
|
|
106
|
+
const actions = receiptActions(mockClient as any, mockPublicClient);
|
|
107
|
+
const result = await actions.waitForTransactionReceipt({
|
|
108
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6" as any,
|
|
109
|
+
status: TransactionStatus.FINALIZED,
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
expect(result).toEqual(mockTransaction);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("should maintain backward compatibility", async () => {
|
|
116
|
+
const mockTransaction = {
|
|
117
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6",
|
|
118
|
+
status: "5", // ACCEPTED
|
|
119
|
+
from_address: "0x123",
|
|
120
|
+
to_address: "0x456",
|
|
121
|
+
value: "0",
|
|
122
|
+
gaslimit: "1000000",
|
|
123
|
+
nonce: "1",
|
|
124
|
+
created_at: "2023-01-01T00:00:00Z",
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const mockClient = {
|
|
128
|
+
chain: localnet,
|
|
129
|
+
getTransaction: vi.fn().mockResolvedValue(mockTransaction)
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const mockPublicClient = {} as any;
|
|
133
|
+
|
|
134
|
+
const actions = receiptActions(mockClient as any, mockPublicClient);
|
|
135
|
+
const result = await actions.waitForTransactionReceipt({
|
|
136
|
+
hash: "0x4b8037744adab7ea8335b4f839979d20031d83a8ccdf706e0ae61312930335f6" as any,
|
|
137
|
+
status: TransactionStatus.ACCEPTED,
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
expect(result).toEqual(mockTransaction);
|
|
141
|
+
});
|
|
142
|
+
});
|