genlayer-js 0.13.0 → 0.14.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/CHANGELOG.md +9 -0
- package/dist/{index-TWCEN45Z.d.ts → index-CgHl4W-5.d.ts} +1 -1
- package/dist/{index-icLJcrDm.d.cts → index-IViMPpkl.d.cts} +1 -1
- package/dist/index.cjs +107 -99
- package/dist/index.d.cts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.js +105 -97
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/abi/calldata/encoder.ts +36 -0
- package/src/contracts/actions.ts +4 -40
- package/src/index.ts +6 -0
- package/src/transactions/actions.ts +6 -280
- package/src/transactions/decoders.ts +276 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## 0.14.1 (2025-08-13)
|
|
4
|
+
|
|
5
|
+
## 0.14.0 (2025-07-30)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* expose encode and decode methods ([#102](https://github.com/genlayerlabs/genlayer-js/issues/102)) ([c9e0719](https://github.com/genlayerlabs/genlayer-js/commit/c9e07191c52cd4fecc9295172a7087ade896ccd7))
|
|
11
|
+
|
|
3
12
|
## 0.13.0 (2025-07-23)
|
|
4
13
|
|
|
5
14
|
|
|
@@ -376,4 +376,4 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
|
|
|
376
376
|
}) => Promise<any>;
|
|
377
377
|
};
|
|
378
378
|
|
|
379
|
-
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,
|
|
379
|
+
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, transactionResultNumberToName as o, TransactionResultNameToNumber as p, voteTypeNameToNumber as q, type TransactionType as r, TransactionHashVariant as s, transactionsStatusNumberToName as t, voteTypeNumberToName as v };
|
|
@@ -376,4 +376,4 @@ type GenLayerClient<TGenLayerChain extends GenLayerChain> = Omit<Client<Transpor
|
|
|
376
376
|
}) => Promise<any>;
|
|
377
377
|
};
|
|
378
378
|
|
|
379
|
-
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,
|
|
379
|
+
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, transactionResultNumberToName as o, TransactionResultNameToNumber as p, voteTypeNameToNumber as q, type TransactionType as r, TransactionHashVariant as s, transactionsStatusNumberToName as t, voteTypeNumberToName as v };
|
package/dist/index.cjs
CHANGED
|
@@ -57,6 +57,7 @@ var calldata_exports = {};
|
|
|
57
57
|
_chunk75ZPJI57cjs.__export.call(void 0, calldata_exports, {
|
|
58
58
|
decode: () => decode,
|
|
59
59
|
encode: () => encode,
|
|
60
|
+
makeCalldataObject: () => makeCalldataObject,
|
|
60
61
|
toString: () => toString
|
|
61
62
|
});
|
|
62
63
|
|
|
@@ -203,6 +204,32 @@ function encode(data) {
|
|
|
203
204
|
encodeImpl(arr, data);
|
|
204
205
|
return new Uint8Array(arr);
|
|
205
206
|
}
|
|
207
|
+
function makeCalldataObject(method, args, kwargs) {
|
|
208
|
+
let ret = {};
|
|
209
|
+
if (method) {
|
|
210
|
+
ret["method"] = method;
|
|
211
|
+
}
|
|
212
|
+
if (args && args.length > 0) {
|
|
213
|
+
ret["args"] = args;
|
|
214
|
+
}
|
|
215
|
+
if (kwargs) {
|
|
216
|
+
if (kwargs instanceof Map) {
|
|
217
|
+
if (kwargs.size > 0) {
|
|
218
|
+
ret["kwargs"] = kwargs;
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
let hasVal = false;
|
|
222
|
+
for (const _k in kwargs) {
|
|
223
|
+
hasVal = true;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
if (hasVal) {
|
|
227
|
+
ret["kwargs"] = kwargs;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return ret;
|
|
232
|
+
}
|
|
206
233
|
|
|
207
234
|
// src/abi/calldata/decoder.ts
|
|
208
235
|
function readULeb128(data, index) {
|
|
@@ -381,32 +408,6 @@ function serialize(data) {
|
|
|
381
408
|
|
|
382
409
|
// src/contracts/actions.ts
|
|
383
410
|
|
|
384
|
-
function makeCalldataObject(method, args, kwargs) {
|
|
385
|
-
let ret = {};
|
|
386
|
-
if (method) {
|
|
387
|
-
ret["method"] = method;
|
|
388
|
-
}
|
|
389
|
-
if (args && args.length > 0) {
|
|
390
|
-
ret["args"] = args;
|
|
391
|
-
}
|
|
392
|
-
if (kwargs) {
|
|
393
|
-
if (kwargs instanceof Map) {
|
|
394
|
-
if (kwargs.size > 0) {
|
|
395
|
-
ret["kwargs"] = kwargs;
|
|
396
|
-
}
|
|
397
|
-
} else {
|
|
398
|
-
let hasVal = false;
|
|
399
|
-
for (const _k in kwargs) {
|
|
400
|
-
hasVal = true;
|
|
401
|
-
break;
|
|
402
|
-
}
|
|
403
|
-
if (hasVal) {
|
|
404
|
-
ret["kwargs"] = kwargs;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
return ret;
|
|
409
|
-
}
|
|
410
411
|
var contractActions = (client, publicClient) => {
|
|
411
412
|
return {
|
|
412
413
|
getContractSchema: async (address) => {
|
|
@@ -588,7 +589,8 @@ var _sendTransaction = async ({
|
|
|
588
589
|
data: encodedData,
|
|
589
590
|
type: "legacy",
|
|
590
591
|
nonce: Number(nonce),
|
|
591
|
-
value
|
|
592
|
+
value,
|
|
593
|
+
gas: 21000n
|
|
592
594
|
});
|
|
593
595
|
if (_optionalChain([validatedSenderAccount, 'optionalAccess', _20 => _20.type]) !== "local") {
|
|
594
596
|
const formattedRequest = {
|
|
@@ -682,7 +684,7 @@ function resultToUserFriendlyJson(cd64) {
|
|
|
682
684
|
};
|
|
683
685
|
}
|
|
684
686
|
|
|
685
|
-
// src/transactions/
|
|
687
|
+
// src/transactions/decoders.ts
|
|
686
688
|
|
|
687
689
|
var FIELDS_TO_REMOVE = [
|
|
688
690
|
"raw",
|
|
@@ -726,69 +728,7 @@ var FIELD_NAME_MAPPINGS = {
|
|
|
726
728
|
statusName: "status_name",
|
|
727
729
|
typeHex: "type"
|
|
728
730
|
};
|
|
729
|
-
var
|
|
730
|
-
waitForTransactionReceipt: async ({
|
|
731
|
-
hash,
|
|
732
|
-
status = "ACCEPTED" /* ACCEPTED */,
|
|
733
|
-
interval = transactionsConfig.waitInterval,
|
|
734
|
-
retries = transactionsConfig.retries,
|
|
735
|
-
fullTransaction = false
|
|
736
|
-
}) => {
|
|
737
|
-
const transaction = await client.getTransaction({
|
|
738
|
-
hash
|
|
739
|
-
});
|
|
740
|
-
if (!transaction) {
|
|
741
|
-
throw new Error("Transaction not found");
|
|
742
|
-
}
|
|
743
|
-
const transactionStatusString = String(transaction.status);
|
|
744
|
-
const transactionStatusFinalized = _chunkH4ZYXVV2cjs.transactionsStatusNameToNumber["FINALIZED" /* FINALIZED */];
|
|
745
|
-
const requestedStatus = _chunkH4ZYXVV2cjs.transactionsStatusNameToNumber[status];
|
|
746
|
-
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString === transactionStatusFinalized) {
|
|
747
|
-
let finalTransaction = transaction;
|
|
748
|
-
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
749
|
-
finalTransaction = _decodeLocalnetTransaction(transaction);
|
|
750
|
-
}
|
|
751
|
-
if (!fullTransaction) {
|
|
752
|
-
return _simplifyTransactionReceipt(finalTransaction);
|
|
753
|
-
}
|
|
754
|
-
return finalTransaction;
|
|
755
|
-
}
|
|
756
|
-
if (retries === 0) {
|
|
757
|
-
throw new Error("Transaction status is not " + status);
|
|
758
|
-
}
|
|
759
|
-
await sleep(interval);
|
|
760
|
-
return receiptActions(client, publicClient).waitForTransactionReceipt({
|
|
761
|
-
hash,
|
|
762
|
-
status,
|
|
763
|
-
interval,
|
|
764
|
-
retries: retries - 1,
|
|
765
|
-
fullTransaction
|
|
766
|
-
});
|
|
767
|
-
}
|
|
768
|
-
});
|
|
769
|
-
var transactionActions = (client, publicClient) => ({
|
|
770
|
-
getTransaction: async ({ hash }) => {
|
|
771
|
-
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
772
|
-
const transaction2 = await client.getTransaction({ hash });
|
|
773
|
-
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" /* PENDING */ : transaction2.status;
|
|
774
|
-
transaction2.status = Number(_chunkH4ZYXVV2cjs.transactionsStatusNameToNumber[localnetStatus]);
|
|
775
|
-
transaction2.statusName = localnetStatus;
|
|
776
|
-
return _decodeLocalnetTransaction(transaction2);
|
|
777
|
-
}
|
|
778
|
-
const transaction = await publicClient.readContract({
|
|
779
|
-
address: _optionalChain([client, 'access', _25 => _25.chain, 'access', _26 => _26.consensusDataContract, 'optionalAccess', _27 => _27.address]),
|
|
780
|
-
abi: _optionalChain([client, 'access', _28 => _28.chain, 'access', _29 => _29.consensusDataContract, 'optionalAccess', _30 => _30.abi]),
|
|
781
|
-
functionName: "getTransactionData",
|
|
782
|
-
args: [
|
|
783
|
-
hash,
|
|
784
|
-
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
785
|
-
// unix seconds
|
|
786
|
-
]
|
|
787
|
-
});
|
|
788
|
-
return _decodeTransaction(transaction);
|
|
789
|
-
}
|
|
790
|
-
});
|
|
791
|
-
var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
731
|
+
var decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
792
732
|
if (!rlpEncodedAppData || rlpEncodedAppData === "0x" || rlpEncodedAppData.length <= 2) {
|
|
793
733
|
return null;
|
|
794
734
|
}
|
|
@@ -826,8 +766,8 @@ var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
|
826
766
|
return null;
|
|
827
767
|
}
|
|
828
768
|
};
|
|
829
|
-
var
|
|
830
|
-
const txDataDecoded =
|
|
769
|
+
var decodeTransaction = (tx) => {
|
|
770
|
+
const txDataDecoded = decodeInputData(tx.txData, tx.recipient);
|
|
831
771
|
const decodedTx = {
|
|
832
772
|
...tx,
|
|
833
773
|
txData: tx.txData,
|
|
@@ -862,7 +802,7 @@ var _decodeTransaction = (tx) => {
|
|
|
862
802
|
};
|
|
863
803
|
return decodedTx;
|
|
864
804
|
};
|
|
865
|
-
var
|
|
805
|
+
var simplifyTransactionReceipt = (tx) => {
|
|
866
806
|
const simplifyObject = (obj, path = "") => {
|
|
867
807
|
if (obj === null || obj === void 0) return obj;
|
|
868
808
|
if (Array.isArray(obj)) {
|
|
@@ -933,10 +873,10 @@ var _simplifyTransactionReceipt = (tx) => {
|
|
|
933
873
|
};
|
|
934
874
|
return simplifyObject({ ...tx });
|
|
935
875
|
};
|
|
936
|
-
var
|
|
876
|
+
var decodeLocalnetTransaction = (tx) => {
|
|
937
877
|
if (!tx.data) return tx;
|
|
938
878
|
try {
|
|
939
|
-
const leaderReceipt = _optionalChain([tx, 'access',
|
|
879
|
+
const leaderReceipt = _optionalChain([tx, 'access', _25 => _25.consensus_data, 'optionalAccess', _26 => _26.leader_receipt]);
|
|
940
880
|
if (leaderReceipt) {
|
|
941
881
|
const receipts = Array.isArray(leaderReceipt) ? leaderReceipt : [leaderReceipt];
|
|
942
882
|
receipts.forEach((receipt) => {
|
|
@@ -967,18 +907,82 @@ var _decodeLocalnetTransaction = (tx) => {
|
|
|
967
907
|
}
|
|
968
908
|
});
|
|
969
909
|
}
|
|
970
|
-
if (_optionalChain([tx, 'access',
|
|
910
|
+
if (_optionalChain([tx, 'access', _27 => _27.data, 'optionalAccess', _28 => _28.calldata]) && typeof tx.data.calldata === "string") {
|
|
971
911
|
tx.data.calldata = {
|
|
972
912
|
base64: tx.data.calldata,
|
|
973
913
|
...calldataToUserFriendlyJson(b64ToArray(tx.data.calldata))
|
|
974
914
|
};
|
|
975
915
|
}
|
|
976
916
|
} catch (e) {
|
|
977
|
-
console.error("Error in
|
|
917
|
+
console.error("Error in decodeLocalnetTransaction:", e);
|
|
978
918
|
}
|
|
979
919
|
return tx;
|
|
980
920
|
};
|
|
981
921
|
|
|
922
|
+
// src/transactions/actions.ts
|
|
923
|
+
var receiptActions = (client, publicClient) => ({
|
|
924
|
+
waitForTransactionReceipt: async ({
|
|
925
|
+
hash,
|
|
926
|
+
status = "ACCEPTED" /* ACCEPTED */,
|
|
927
|
+
interval = transactionsConfig.waitInterval,
|
|
928
|
+
retries = transactionsConfig.retries,
|
|
929
|
+
fullTransaction = false
|
|
930
|
+
}) => {
|
|
931
|
+
const transaction = await client.getTransaction({
|
|
932
|
+
hash
|
|
933
|
+
});
|
|
934
|
+
if (!transaction) {
|
|
935
|
+
throw new Error("Transaction not found");
|
|
936
|
+
}
|
|
937
|
+
const transactionStatusString = String(transaction.status);
|
|
938
|
+
const transactionStatusFinalized = _chunkH4ZYXVV2cjs.transactionsStatusNameToNumber["FINALIZED" /* FINALIZED */];
|
|
939
|
+
const requestedStatus = _chunkH4ZYXVV2cjs.transactionsStatusNameToNumber[status];
|
|
940
|
+
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString === transactionStatusFinalized) {
|
|
941
|
+
let finalTransaction = transaction;
|
|
942
|
+
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
943
|
+
finalTransaction = decodeLocalnetTransaction(transaction);
|
|
944
|
+
}
|
|
945
|
+
if (!fullTransaction) {
|
|
946
|
+
return simplifyTransactionReceipt(finalTransaction);
|
|
947
|
+
}
|
|
948
|
+
return finalTransaction;
|
|
949
|
+
}
|
|
950
|
+
if (retries === 0) {
|
|
951
|
+
throw new Error("Transaction status is not " + status);
|
|
952
|
+
}
|
|
953
|
+
await sleep(interval);
|
|
954
|
+
return receiptActions(client, publicClient).waitForTransactionReceipt({
|
|
955
|
+
hash,
|
|
956
|
+
status,
|
|
957
|
+
interval,
|
|
958
|
+
retries: retries - 1,
|
|
959
|
+
fullTransaction
|
|
960
|
+
});
|
|
961
|
+
}
|
|
962
|
+
});
|
|
963
|
+
var transactionActions = (client, publicClient) => ({
|
|
964
|
+
getTransaction: async ({ hash }) => {
|
|
965
|
+
if (client.chain.id === _chunkZKBMABRAcjs.localnet.id) {
|
|
966
|
+
const transaction2 = await client.getTransaction({ hash });
|
|
967
|
+
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" /* PENDING */ : transaction2.status;
|
|
968
|
+
transaction2.status = Number(_chunkH4ZYXVV2cjs.transactionsStatusNameToNumber[localnetStatus]);
|
|
969
|
+
transaction2.statusName = localnetStatus;
|
|
970
|
+
return decodeLocalnetTransaction(transaction2);
|
|
971
|
+
}
|
|
972
|
+
const transaction = await publicClient.readContract({
|
|
973
|
+
address: _optionalChain([client, 'access', _29 => _29.chain, 'access', _30 => _30.consensusDataContract, 'optionalAccess', _31 => _31.address]),
|
|
974
|
+
abi: _optionalChain([client, 'access', _32 => _32.chain, 'access', _33 => _33.consensusDataContract, 'optionalAccess', _34 => _34.abi]),
|
|
975
|
+
functionName: "getTransactionData",
|
|
976
|
+
args: [
|
|
977
|
+
hash,
|
|
978
|
+
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
979
|
+
// unix seconds
|
|
980
|
+
]
|
|
981
|
+
});
|
|
982
|
+
return decodeTransaction(transaction);
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
|
|
982
986
|
// src/config/snapID.ts
|
|
983
987
|
var snapID = {
|
|
984
988
|
local: "local:http://localhost:8081",
|
|
@@ -1206,4 +1210,8 @@ var createAccount = (accountPrivateKey) => {
|
|
|
1206
1210
|
|
|
1207
1211
|
|
|
1208
1212
|
|
|
1209
|
-
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
exports.abi = abi_exports; exports.chains = _chunkZKBMABRAcjs.chains_exports; exports.createAccount = createAccount; exports.createClient = createClient; exports.decodeInputData = decodeInputData; exports.decodeLocalnetTransaction = decodeLocalnetTransaction; exports.decodeTransaction = decodeTransaction; exports.generatePrivateKey = generatePrivateKey; exports.simplifyTransactionReceipt = simplifyTransactionReceipt;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as viem from 'viem';
|
|
2
|
-
import { Account, Address } from 'viem';
|
|
2
|
+
import { Account, Address, Hex } from 'viem';
|
|
3
3
|
import { G as GenLayerChain } from './chains-BYSCF33g.cjs';
|
|
4
|
-
import { G as GenLayerClient, 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-IViMPpkl.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';
|
|
@@ -53,7 +53,15 @@ declare const createAccount: (accountPrivateKey?: `0x${string}`) => {
|
|
|
53
53
|
type: "local";
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
declare const decodeInputData: (rlpEncodedAppData: Hex | undefined | null, recipient: Address) => DecodedDeployData | DecodedCallData | null;
|
|
57
|
+
declare const decodeTransaction: (tx: GenLayerRawTransaction) => GenLayerTransaction;
|
|
58
|
+
declare const simplifyTransactionReceipt: (tx: GenLayerTransaction) => GenLayerTransaction;
|
|
59
|
+
declare const decodeLocalnetTransaction: (tx: GenLayerTransaction) => GenLayerTransaction;
|
|
60
|
+
|
|
56
61
|
declare function encode(data: CalldataEncodable): Uint8Array;
|
|
62
|
+
declare function makeCalldataObject(method: string | undefined, args: CalldataEncodable[] | undefined, kwargs: {
|
|
63
|
+
[key: string]: CalldataEncodable;
|
|
64
|
+
} | Map<string, CalldataEncodable> | undefined): CalldataEncodable;
|
|
57
65
|
|
|
58
66
|
declare function decode(data: Uint8Array): CalldataEncodable;
|
|
59
67
|
|
|
@@ -61,9 +69,10 @@ declare function toString(data: CalldataEncodable): string;
|
|
|
61
69
|
|
|
62
70
|
declare const cd_decode: typeof decode;
|
|
63
71
|
declare const cd_encode: typeof encode;
|
|
72
|
+
declare const cd_makeCalldataObject: typeof makeCalldataObject;
|
|
64
73
|
declare const cd_toString: typeof toString;
|
|
65
74
|
declare namespace cd {
|
|
66
|
-
export { cd_decode as decode, cd_encode as encode, cd_toString as toString };
|
|
75
|
+
export { cd_decode as decode, cd_encode as encode, cd_makeCalldataObject as makeCalldataObject, cd_toString as toString };
|
|
67
76
|
}
|
|
68
77
|
|
|
69
78
|
declare function serializeOne(data: TransactionDataElement): `0x${string}`;
|
|
@@ -84,4 +93,4 @@ declare namespace index {
|
|
|
84
93
|
export { index_calldata as calldata, index_transactions as transactions };
|
|
85
94
|
}
|
|
86
95
|
|
|
87
|
-
export { index as abi, createAccount, createClient, generatePrivateKey };
|
|
96
|
+
export { index as abi, createAccount, createClient, decodeInputData, decodeLocalnetTransaction, decodeTransaction, generatePrivateKey, simplifyTransactionReceipt };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as viem from 'viem';
|
|
2
|
-
import { Account, Address } from 'viem';
|
|
2
|
+
import { Account, Address, Hex } from 'viem';
|
|
3
3
|
import { G as GenLayerChain } from './chains-BYSCF33g.js';
|
|
4
|
-
import { G as GenLayerClient, 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-CgHl4W-5.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';
|
|
@@ -53,7 +53,15 @@ declare const createAccount: (accountPrivateKey?: `0x${string}`) => {
|
|
|
53
53
|
type: "local";
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
declare const decodeInputData: (rlpEncodedAppData: Hex | undefined | null, recipient: Address) => DecodedDeployData | DecodedCallData | null;
|
|
57
|
+
declare const decodeTransaction: (tx: GenLayerRawTransaction) => GenLayerTransaction;
|
|
58
|
+
declare const simplifyTransactionReceipt: (tx: GenLayerTransaction) => GenLayerTransaction;
|
|
59
|
+
declare const decodeLocalnetTransaction: (tx: GenLayerTransaction) => GenLayerTransaction;
|
|
60
|
+
|
|
56
61
|
declare function encode(data: CalldataEncodable): Uint8Array;
|
|
62
|
+
declare function makeCalldataObject(method: string | undefined, args: CalldataEncodable[] | undefined, kwargs: {
|
|
63
|
+
[key: string]: CalldataEncodable;
|
|
64
|
+
} | Map<string, CalldataEncodable> | undefined): CalldataEncodable;
|
|
57
65
|
|
|
58
66
|
declare function decode(data: Uint8Array): CalldataEncodable;
|
|
59
67
|
|
|
@@ -61,9 +69,10 @@ declare function toString(data: CalldataEncodable): string;
|
|
|
61
69
|
|
|
62
70
|
declare const cd_decode: typeof decode;
|
|
63
71
|
declare const cd_encode: typeof encode;
|
|
72
|
+
declare const cd_makeCalldataObject: typeof makeCalldataObject;
|
|
64
73
|
declare const cd_toString: typeof toString;
|
|
65
74
|
declare namespace cd {
|
|
66
|
-
export { cd_decode as decode, cd_encode as encode, cd_toString as toString };
|
|
75
|
+
export { cd_decode as decode, cd_encode as encode, cd_makeCalldataObject as makeCalldataObject, cd_toString as toString };
|
|
67
76
|
}
|
|
68
77
|
|
|
69
78
|
declare function serializeOne(data: TransactionDataElement): `0x${string}`;
|
|
@@ -84,4 +93,4 @@ declare namespace index {
|
|
|
84
93
|
export { index_calldata as calldata, index_transactions as transactions };
|
|
85
94
|
}
|
|
86
95
|
|
|
87
|
-
export { index as abi, createAccount, createClient, generatePrivateKey };
|
|
96
|
+
export { index as abi, createAccount, createClient, decodeInputData, decodeLocalnetTransaction, decodeTransaction, generatePrivateKey, simplifyTransactionReceipt };
|
package/dist/index.js
CHANGED
|
@@ -57,6 +57,7 @@ var calldata_exports = {};
|
|
|
57
57
|
__export(calldata_exports, {
|
|
58
58
|
decode: () => decode,
|
|
59
59
|
encode: () => encode,
|
|
60
|
+
makeCalldataObject: () => makeCalldataObject,
|
|
60
61
|
toString: () => toString
|
|
61
62
|
});
|
|
62
63
|
|
|
@@ -203,6 +204,32 @@ function encode(data) {
|
|
|
203
204
|
encodeImpl(arr, data);
|
|
204
205
|
return new Uint8Array(arr);
|
|
205
206
|
}
|
|
207
|
+
function makeCalldataObject(method, args, kwargs) {
|
|
208
|
+
let ret = {};
|
|
209
|
+
if (method) {
|
|
210
|
+
ret["method"] = method;
|
|
211
|
+
}
|
|
212
|
+
if (args && args.length > 0) {
|
|
213
|
+
ret["args"] = args;
|
|
214
|
+
}
|
|
215
|
+
if (kwargs) {
|
|
216
|
+
if (kwargs instanceof Map) {
|
|
217
|
+
if (kwargs.size > 0) {
|
|
218
|
+
ret["kwargs"] = kwargs;
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
let hasVal = false;
|
|
222
|
+
for (const _k in kwargs) {
|
|
223
|
+
hasVal = true;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
if (hasVal) {
|
|
227
|
+
ret["kwargs"] = kwargs;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return ret;
|
|
232
|
+
}
|
|
206
233
|
|
|
207
234
|
// src/abi/calldata/decoder.ts
|
|
208
235
|
function readULeb128(data, index) {
|
|
@@ -381,32 +408,6 @@ function serialize(data) {
|
|
|
381
408
|
|
|
382
409
|
// src/contracts/actions.ts
|
|
383
410
|
import { fromHex, toHex as toHex2, zeroAddress, encodeFunctionData, parseEventLogs } from "viem";
|
|
384
|
-
function makeCalldataObject(method, args, kwargs) {
|
|
385
|
-
let ret = {};
|
|
386
|
-
if (method) {
|
|
387
|
-
ret["method"] = method;
|
|
388
|
-
}
|
|
389
|
-
if (args && args.length > 0) {
|
|
390
|
-
ret["args"] = args;
|
|
391
|
-
}
|
|
392
|
-
if (kwargs) {
|
|
393
|
-
if (kwargs instanceof Map) {
|
|
394
|
-
if (kwargs.size > 0) {
|
|
395
|
-
ret["kwargs"] = kwargs;
|
|
396
|
-
}
|
|
397
|
-
} else {
|
|
398
|
-
let hasVal = false;
|
|
399
|
-
for (const _k in kwargs) {
|
|
400
|
-
hasVal = true;
|
|
401
|
-
break;
|
|
402
|
-
}
|
|
403
|
-
if (hasVal) {
|
|
404
|
-
ret["kwargs"] = kwargs;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
return ret;
|
|
409
|
-
}
|
|
410
411
|
var contractActions = (client, publicClient) => {
|
|
411
412
|
return {
|
|
412
413
|
getContractSchema: async (address) => {
|
|
@@ -588,7 +589,8 @@ var _sendTransaction = async ({
|
|
|
588
589
|
data: encodedData,
|
|
589
590
|
type: "legacy",
|
|
590
591
|
nonce: Number(nonce),
|
|
591
|
-
value
|
|
592
|
+
value,
|
|
593
|
+
gas: 21000n
|
|
592
594
|
});
|
|
593
595
|
if (validatedSenderAccount?.type !== "local") {
|
|
594
596
|
const formattedRequest = {
|
|
@@ -682,7 +684,7 @@ function resultToUserFriendlyJson(cd64) {
|
|
|
682
684
|
};
|
|
683
685
|
}
|
|
684
686
|
|
|
685
|
-
// src/transactions/
|
|
687
|
+
// src/transactions/decoders.ts
|
|
686
688
|
import { fromRlp, fromHex as fromHex2 } from "viem";
|
|
687
689
|
var FIELDS_TO_REMOVE = [
|
|
688
690
|
"raw",
|
|
@@ -726,69 +728,7 @@ var FIELD_NAME_MAPPINGS = {
|
|
|
726
728
|
statusName: "status_name",
|
|
727
729
|
typeHex: "type"
|
|
728
730
|
};
|
|
729
|
-
var
|
|
730
|
-
waitForTransactionReceipt: async ({
|
|
731
|
-
hash,
|
|
732
|
-
status = "ACCEPTED" /* ACCEPTED */,
|
|
733
|
-
interval = transactionsConfig.waitInterval,
|
|
734
|
-
retries = transactionsConfig.retries,
|
|
735
|
-
fullTransaction = false
|
|
736
|
-
}) => {
|
|
737
|
-
const transaction = await client.getTransaction({
|
|
738
|
-
hash
|
|
739
|
-
});
|
|
740
|
-
if (!transaction) {
|
|
741
|
-
throw new Error("Transaction not found");
|
|
742
|
-
}
|
|
743
|
-
const transactionStatusString = String(transaction.status);
|
|
744
|
-
const transactionStatusFinalized = transactionsStatusNameToNumber["FINALIZED" /* FINALIZED */];
|
|
745
|
-
const requestedStatus = transactionsStatusNameToNumber[status];
|
|
746
|
-
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString === transactionStatusFinalized) {
|
|
747
|
-
let finalTransaction = transaction;
|
|
748
|
-
if (client.chain.id === localnet.id) {
|
|
749
|
-
finalTransaction = _decodeLocalnetTransaction(transaction);
|
|
750
|
-
}
|
|
751
|
-
if (!fullTransaction) {
|
|
752
|
-
return _simplifyTransactionReceipt(finalTransaction);
|
|
753
|
-
}
|
|
754
|
-
return finalTransaction;
|
|
755
|
-
}
|
|
756
|
-
if (retries === 0) {
|
|
757
|
-
throw new Error("Transaction status is not " + status);
|
|
758
|
-
}
|
|
759
|
-
await sleep(interval);
|
|
760
|
-
return receiptActions(client, publicClient).waitForTransactionReceipt({
|
|
761
|
-
hash,
|
|
762
|
-
status,
|
|
763
|
-
interval,
|
|
764
|
-
retries: retries - 1,
|
|
765
|
-
fullTransaction
|
|
766
|
-
});
|
|
767
|
-
}
|
|
768
|
-
});
|
|
769
|
-
var transactionActions = (client, publicClient) => ({
|
|
770
|
-
getTransaction: async ({ hash }) => {
|
|
771
|
-
if (client.chain.id === localnet.id) {
|
|
772
|
-
const transaction2 = await client.getTransaction({ hash });
|
|
773
|
-
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" /* PENDING */ : transaction2.status;
|
|
774
|
-
transaction2.status = Number(transactionsStatusNameToNumber[localnetStatus]);
|
|
775
|
-
transaction2.statusName = localnetStatus;
|
|
776
|
-
return _decodeLocalnetTransaction(transaction2);
|
|
777
|
-
}
|
|
778
|
-
const transaction = await publicClient.readContract({
|
|
779
|
-
address: client.chain.consensusDataContract?.address,
|
|
780
|
-
abi: client.chain.consensusDataContract?.abi,
|
|
781
|
-
functionName: "getTransactionData",
|
|
782
|
-
args: [
|
|
783
|
-
hash,
|
|
784
|
-
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
785
|
-
// unix seconds
|
|
786
|
-
]
|
|
787
|
-
});
|
|
788
|
-
return _decodeTransaction(transaction);
|
|
789
|
-
}
|
|
790
|
-
});
|
|
791
|
-
var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
731
|
+
var decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
792
732
|
if (!rlpEncodedAppData || rlpEncodedAppData === "0x" || rlpEncodedAppData.length <= 2) {
|
|
793
733
|
return null;
|
|
794
734
|
}
|
|
@@ -826,8 +766,8 @@ var _decodeInputData = (rlpEncodedAppData, recipient) => {
|
|
|
826
766
|
return null;
|
|
827
767
|
}
|
|
828
768
|
};
|
|
829
|
-
var
|
|
830
|
-
const txDataDecoded =
|
|
769
|
+
var decodeTransaction = (tx) => {
|
|
770
|
+
const txDataDecoded = decodeInputData(tx.txData, tx.recipient);
|
|
831
771
|
const decodedTx = {
|
|
832
772
|
...tx,
|
|
833
773
|
txData: tx.txData,
|
|
@@ -862,7 +802,7 @@ var _decodeTransaction = (tx) => {
|
|
|
862
802
|
};
|
|
863
803
|
return decodedTx;
|
|
864
804
|
};
|
|
865
|
-
var
|
|
805
|
+
var simplifyTransactionReceipt = (tx) => {
|
|
866
806
|
const simplifyObject = (obj, path = "") => {
|
|
867
807
|
if (obj === null || obj === void 0) return obj;
|
|
868
808
|
if (Array.isArray(obj)) {
|
|
@@ -933,7 +873,7 @@ var _simplifyTransactionReceipt = (tx) => {
|
|
|
933
873
|
};
|
|
934
874
|
return simplifyObject({ ...tx });
|
|
935
875
|
};
|
|
936
|
-
var
|
|
876
|
+
var decodeLocalnetTransaction = (tx) => {
|
|
937
877
|
if (!tx.data) return tx;
|
|
938
878
|
try {
|
|
939
879
|
const leaderReceipt = tx.consensus_data?.leader_receipt;
|
|
@@ -974,11 +914,75 @@ var _decodeLocalnetTransaction = (tx) => {
|
|
|
974
914
|
};
|
|
975
915
|
}
|
|
976
916
|
} catch (e) {
|
|
977
|
-
console.error("Error in
|
|
917
|
+
console.error("Error in decodeLocalnetTransaction:", e);
|
|
978
918
|
}
|
|
979
919
|
return tx;
|
|
980
920
|
};
|
|
981
921
|
|
|
922
|
+
// src/transactions/actions.ts
|
|
923
|
+
var receiptActions = (client, publicClient) => ({
|
|
924
|
+
waitForTransactionReceipt: async ({
|
|
925
|
+
hash,
|
|
926
|
+
status = "ACCEPTED" /* ACCEPTED */,
|
|
927
|
+
interval = transactionsConfig.waitInterval,
|
|
928
|
+
retries = transactionsConfig.retries,
|
|
929
|
+
fullTransaction = false
|
|
930
|
+
}) => {
|
|
931
|
+
const transaction = await client.getTransaction({
|
|
932
|
+
hash
|
|
933
|
+
});
|
|
934
|
+
if (!transaction) {
|
|
935
|
+
throw new Error("Transaction not found");
|
|
936
|
+
}
|
|
937
|
+
const transactionStatusString = String(transaction.status);
|
|
938
|
+
const transactionStatusFinalized = transactionsStatusNameToNumber["FINALIZED" /* FINALIZED */];
|
|
939
|
+
const requestedStatus = transactionsStatusNameToNumber[status];
|
|
940
|
+
if (transactionStatusString === requestedStatus || status === "ACCEPTED" /* ACCEPTED */ && transactionStatusString === transactionStatusFinalized) {
|
|
941
|
+
let finalTransaction = transaction;
|
|
942
|
+
if (client.chain.id === localnet.id) {
|
|
943
|
+
finalTransaction = decodeLocalnetTransaction(transaction);
|
|
944
|
+
}
|
|
945
|
+
if (!fullTransaction) {
|
|
946
|
+
return simplifyTransactionReceipt(finalTransaction);
|
|
947
|
+
}
|
|
948
|
+
return finalTransaction;
|
|
949
|
+
}
|
|
950
|
+
if (retries === 0) {
|
|
951
|
+
throw new Error("Transaction status is not " + status);
|
|
952
|
+
}
|
|
953
|
+
await sleep(interval);
|
|
954
|
+
return receiptActions(client, publicClient).waitForTransactionReceipt({
|
|
955
|
+
hash,
|
|
956
|
+
status,
|
|
957
|
+
interval,
|
|
958
|
+
retries: retries - 1,
|
|
959
|
+
fullTransaction
|
|
960
|
+
});
|
|
961
|
+
}
|
|
962
|
+
});
|
|
963
|
+
var transactionActions = (client, publicClient) => ({
|
|
964
|
+
getTransaction: async ({ hash }) => {
|
|
965
|
+
if (client.chain.id === localnet.id) {
|
|
966
|
+
const transaction2 = await client.getTransaction({ hash });
|
|
967
|
+
const localnetStatus = transaction2.status === "ACTIVATED" ? "PENDING" /* PENDING */ : transaction2.status;
|
|
968
|
+
transaction2.status = Number(transactionsStatusNameToNumber[localnetStatus]);
|
|
969
|
+
transaction2.statusName = localnetStatus;
|
|
970
|
+
return decodeLocalnetTransaction(transaction2);
|
|
971
|
+
}
|
|
972
|
+
const transaction = await publicClient.readContract({
|
|
973
|
+
address: client.chain.consensusDataContract?.address,
|
|
974
|
+
abi: client.chain.consensusDataContract?.abi,
|
|
975
|
+
functionName: "getTransactionData",
|
|
976
|
+
args: [
|
|
977
|
+
hash,
|
|
978
|
+
Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3)
|
|
979
|
+
// unix seconds
|
|
980
|
+
]
|
|
981
|
+
});
|
|
982
|
+
return decodeTransaction(transaction);
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
|
|
982
986
|
// src/config/snapID.ts
|
|
983
987
|
var snapID = {
|
|
984
988
|
local: "local:http://localhost:8081",
|
|
@@ -1205,5 +1209,9 @@ export {
|
|
|
1205
1209
|
chains_exports as chains,
|
|
1206
1210
|
createAccount,
|
|
1207
1211
|
createClient,
|
|
1208
|
-
|
|
1212
|
+
decodeInputData,
|
|
1213
|
+
decodeLocalnetTransaction,
|
|
1214
|
+
decodeTransaction,
|
|
1215
|
+
generatePrivateKey,
|
|
1216
|
+
simplifyTransactionReceipt
|
|
1209
1217
|
};
|