@nevermined-io/core-kit 0.2.14 → 0.3.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.
- package/dist/artifacts/generated.d.ts +85 -1197
- package/dist/artifacts/generated.d.ts.map +1 -1
- package/dist/artifacts/generated.js +62 -476
- package/dist/contracts/AssetRegistry.d.ts +1 -1
- package/dist/contracts/ContractBase.d.ts.map +1 -1
- package/dist/contracts/ContractBase.js +28 -1
- package/dist/contracts/NFT1155Base.d.ts +4 -2
- package/dist/contracts/NFT1155Base.d.ts.map +1 -1
- package/dist/contracts/NFT1155Base.js +2 -2
- package/dist/nevermined/utils/BlockchainViemUtils.d.ts +5 -4
- package/dist/nevermined/utils/BlockchainViemUtils.d.ts.map +1 -1
- package/dist/nevermined/utils/BlockchainViemUtils.js +18 -27
- package/package.json +1 -1
|
@@ -69,7 +69,7 @@ export declare class AssetRegistry extends ContractBase {
|
|
|
69
69
|
creditsConfig: {
|
|
70
70
|
isRedemptionAmountFixed: boolean;
|
|
71
71
|
redemptionType: import("@nevermined-io/commons").RedemptionType;
|
|
72
|
-
|
|
72
|
+
onchainMirror: boolean;
|
|
73
73
|
durationSecs: bigint;
|
|
74
74
|
amount: bigint;
|
|
75
75
|
minAmount: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractBase.d.ts","sourceRoot":"","sources":["../../src/contracts/ContractBase.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,GAAG,EACH,OAAO,EACP,OAAO,EAQP,kBAAkB,EACnB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"ContractBase.d.ts","sourceRoot":"","sources":["../../src/contracts/ContractBase.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,GAAG,EACH,OAAO,EACP,OAAO,EAQP,kBAAkB,EACnB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAUxD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,GAAG,CAAA;IACR,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AA8BD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,8BAAsB,YAAa,SAAQ,YAAY;IACrD,SAAgB,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,iBAAiB,CAA+D;gBAE5E,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;cAMlC,IAAI,CAClB,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,GAAG,CAAA;KAAE;IAYzC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBrE,qBAAqB,CAChC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,GAChD,OAAO,CAAC,kBAAkB,CAAC;IAiBvB,kBAAkB,CACvB,SAAS,EAAE,kBAAkB,GAAG,oBAAoB,EACpD,SAAS,CAAC,EAAE,MAAM;IAkCP,SAAS,CACpB,KAAK,EAAE,cAAc,EAAE,EACvB,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,MAAM,GAAE,YAAiB;IAgBd,iBAAiB,CAC5B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,MAAM,GAAE,YAAiB;IAgBd,QAAQ,CACnB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,GAAE,YAAiB;IAgBd,IAAI,CACf,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,GAAG,YAAY,EAC5B,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,GAAE,YAAiB,GACxB,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;YAiBvC,6BAA6B;YA6E7B,wBAAwB;YAiHxB,4BAA4B;YAuB5B,oBAAoB;YAuBpB,gBAAgB;YAmIhB,qBAAqB;YAyBrB,6BAA6B;YAqB7B,qCAAqC;IAyEnD,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -4,6 +4,11 @@ import { ContractsError, ContractSimulationError } from '../errors/index.js';
|
|
|
4
4
|
import { Instantiable } from '../Instantiable.abstract.js';
|
|
5
5
|
import { getInputsOfFunctionFormatted, getTransactionReceipt } from '../nevermined/index.js';
|
|
6
6
|
import { getChain } from '../utils/Network.js';
|
|
7
|
+
// import { jsonReplacer } from '../utils/helpers.js'
|
|
8
|
+
// TODO(v1.4.0): remove once Base Sepolia is upgraded. See `getTransactionLogs`.
|
|
9
|
+
const legacyPlanRegisteredAbi = parseAbi([
|
|
10
|
+
'event PlanRegistered(uint256 indexed planId, address indexed creator)',
|
|
11
|
+
]);
|
|
7
12
|
/**
|
|
8
13
|
* When a testnet RPC (Base Sepolia) fails internally, some providers return
|
|
9
14
|
* `eth_estimateGas` values equal to — or even above — the block gas limit
|
|
@@ -79,12 +84,34 @@ export class ContractBase extends Instantiable {
|
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
getTransactionLogs(txReceipt, eventName) {
|
|
82
|
-
|
|
87
|
+
const parsed = parseEventLogs({
|
|
83
88
|
abi: this.contract.abi,
|
|
84
89
|
logs: txReceipt.logs,
|
|
85
90
|
eventName,
|
|
86
91
|
strict: false,
|
|
87
92
|
});
|
|
93
|
+
// TODO(v1.4.0): remove this legacy-PlanRegistered fallback once Base Sepolia
|
|
94
|
+
// is upgraded to v1.4.0. The v1.3.2 contract still in production emits the
|
|
95
|
+
// 2-arg `PlanRegistered(uint256,address)` form, whose topic0 differs from
|
|
96
|
+
// the 3-arg form in the current wagmi ABI, so the primary parse above
|
|
97
|
+
// returns `[]` and every caller's `logs[0].args.planId` throws. We reparse
|
|
98
|
+
// with the legacy signature and default the missing `onchainMirror` to
|
|
99
|
+
// `false` — the deployed v1.3.2 behavior.
|
|
100
|
+
if (parsed.length === 0 && (eventName === 'PlanRegistered' || !eventName)) {
|
|
101
|
+
const legacy = parseEventLogs({
|
|
102
|
+
abi: legacyPlanRegisteredAbi,
|
|
103
|
+
logs: txReceipt.logs,
|
|
104
|
+
eventName: 'PlanRegistered',
|
|
105
|
+
strict: false,
|
|
106
|
+
});
|
|
107
|
+
if (legacy.length > 0) {
|
|
108
|
+
return legacy.map((log) => ({
|
|
109
|
+
...log,
|
|
110
|
+
args: { ...log.args, onchainMirror: false },
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return parsed;
|
|
88
115
|
}
|
|
89
116
|
async multicall(calls, from, params = {}) {
|
|
90
117
|
if (from.type === 'local') {
|
|
@@ -39,10 +39,12 @@ export declare abstract class NFT1155Base extends ContractBase {
|
|
|
39
39
|
owner: Account | SmartAccount;
|
|
40
40
|
txParams?: TxParameters;
|
|
41
41
|
}): Promise<import("viem").TransactionReceipt | import("viem").UserOperationReceipt>;
|
|
42
|
-
burnBatch({ from, planIds, amounts, owner, txParams, }: {
|
|
43
|
-
from: Address
|
|
42
|
+
burnBatch({ from, planIds, amounts, keyspace, signature, owner, txParams, }: {
|
|
43
|
+
from: Address;
|
|
44
44
|
planIds: bigint[];
|
|
45
45
|
amounts: bigint[];
|
|
46
|
+
keyspace?: bigint;
|
|
47
|
+
signature?: string;
|
|
46
48
|
owner: Account | SmartAccount;
|
|
47
49
|
txParams?: TxParameters;
|
|
48
50
|
}): Promise<import("viem").TransactionReceipt | import("viem").UserOperationReceipt>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NFT1155Base.d.ts","sourceRoot":"","sources":["../../src/contracts/NFT1155Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,8BAAsB,WAAY,SAAQ,YAAY;IACvC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1E,IAAI,CAAC,EAChB,EAAE,EACF,MAAM,EACN,MAAM,EACN,IAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE;QACD,EAAE,EAAE,OAAO,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IAIY,SAAS,CAAC,EACrB,EAAE,EACF,OAAO,EACP,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE;QACD,EAAE,EAAE,OAAO,EAAE,CAAA;QACb,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IAIY,yBAAyB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IASY,IAAI,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IASY,SAAS,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"NFT1155Base.d.ts","sourceRoot":"","sources":["../../src/contracts/NFT1155Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,8BAAsB,WAAY,SAAQ,YAAY;IACvC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1E,IAAI,CAAC,EAChB,EAAE,EACF,MAAM,EACN,MAAM,EACN,IAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE;QACD,EAAE,EAAE,OAAO,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IAIY,SAAS,CAAC,EACrB,EAAE,EACF,OAAO,EACP,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE;QACD,EAAE,EAAE,OAAO,EAAE,CAAA;QACb,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IAIY,yBAAyB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IASY,IAAI,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;IASY,SAAS,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE;QACD,IAAI,EAAE,OAAO,CAAA;QACb,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;QAC7B,QAAQ,CAAC,EAAE,YAAY,CAAA;KACxB;CAQF"}
|
|
@@ -18,7 +18,7 @@ export class NFT1155Base extends ContractBase {
|
|
|
18
18
|
async burn({ from, planId, amount, keyspace, signature, owner, txParams, }) {
|
|
19
19
|
return this.send('burn', owner, [from, planId, amount, keyspace ?? 0n, signature ?? '0x'], txParams);
|
|
20
20
|
}
|
|
21
|
-
async burnBatch({ from, planIds, amounts, owner, txParams, }) {
|
|
22
|
-
return this.send('burnBatch', owner, [from, planIds, amounts], txParams);
|
|
21
|
+
async burnBatch({ from, planIds, amounts, keyspace, signature, owner, txParams, }) {
|
|
22
|
+
return this.send('burnBatch', owner, [from, planIds, amounts, keyspace ?? 0n, signature ?? '0x'], txParams);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -12,15 +12,16 @@ export declare class BlockchainViemUtils extends Instantiable {
|
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Given a transaction hash, it returns the transaction receipt.
|
|
15
|
-
*
|
|
15
|
+
* Uses viem's `waitForTransactionReceipt` which polls until the receipt is
|
|
16
|
+
* available, retrying on `TransactionReceiptNotFoundError` and handling
|
|
17
|
+
* tx-replacement / reorgs natively.
|
|
16
18
|
* @param txHash - the transaction hash
|
|
17
|
-
* @param iteration - the iteration number
|
|
18
19
|
* @returns the transaction receipt
|
|
19
20
|
*/
|
|
20
|
-
export declare function getTransactionReceipt({ txHash,
|
|
21
|
+
export declare function getTransactionReceipt({ txHash, publicClient, }: {
|
|
21
22
|
txHash: `0x${string}`;
|
|
22
|
-
iteration?: number;
|
|
23
23
|
publicClient: PublicClient;
|
|
24
|
+
iteration?: number;
|
|
24
25
|
}): Promise<TransactionReceipt>;
|
|
25
26
|
/**
|
|
26
27
|
* Given an already deployed contract address and the ABI, it returns the contract instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockchainViemUtils.d.ts","sourceRoot":"","sources":["../../../src/nevermined/utils/BlockchainViemUtils.ts"],"names":[],"mappings":"AAOA,OAAO,EAML,mBAAmB,EAEpB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,OAAO,
|
|
1
|
+
{"version":3,"file":"BlockchainViemUtils.d.ts","sourceRoot":"","sources":["../../../src/nevermined/utils/BlockchainViemUtils.ts"],"names":[],"mappings":"AAOA,OAAO,EAML,mBAAmB,EAEpB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,OAAO,EAYP,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQvD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAG9F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAI3C;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,MAAM,EAAE,kBAAkB;CAIvC;AAaD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,YAAY,GACb,EAAE;IACD,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAa9B;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAM/F;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,GAAG,EAAO,GAAG,WAAW,CAM3F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,CASpE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,GAAG,EAAO,GAAG,WAAW,CAEhG;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,GAAG,EAAO,0CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,GAAG,EAAO;;;IAOxF;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,iBAElD;AAGD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,OAAO,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAK,aAM/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,SAAK,GAAG,OAAO,EAAE,CAG7D;AAID;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAGvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAEnE;AAID;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,YAAY,EAC3B,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,GAAG,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAyB9B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAyBnF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,wEAatF;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,mBA6BxF;AAED,wBAAsB,aAAa,CAAC,oBAAoB,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,wEASlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,mCAAmC,CACvD,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,eAAO,MAAM,WAAW;;;;;CAKvB,CAAA"}
|
|
@@ -3,12 +3,11 @@ import { deserializePermissionAccount, serializePermissionAccount, toPermissionV
|
|
|
3
3
|
import { toECDSASigner } from '@zerodev/permissions/signers';
|
|
4
4
|
import { addressToEmptyAccount, createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient, getUserOperationGasPrice, } from '@zerodev/sdk';
|
|
5
5
|
import { KERNEL_V3_1, getEntryPoint } from '@zerodev/sdk/constants';
|
|
6
|
-
import {
|
|
6
|
+
import { encodeAbiParameters, getAbiItem, getAddress, getContract, http, isAddress, pad, stringToBytes, stringToHex, toBytes, keccak256 as viemKeccak256, } from 'viem';
|
|
7
7
|
import { english, generateMnemonic, generatePrivateKey, mnemonicToAccount, privateKeyToAccount, } from 'viem/accounts';
|
|
8
8
|
import { Instantiable } from '../../Instantiable.abstract.js';
|
|
9
9
|
import { ContractsError } from '../../errors/NeverminedErrors.js';
|
|
10
10
|
import { getChain } from '../../utils/Network.js';
|
|
11
|
-
import { _sleep } from '../../utils/helpers.js';
|
|
12
11
|
const ENTRY_POINT_VERSION = '0.7';
|
|
13
12
|
/**
|
|
14
13
|
* Utility class with methods that allow the interaction with the blockchain.
|
|
@@ -24,37 +23,29 @@ export class BlockchainViemUtils extends Instantiable {
|
|
|
24
23
|
///// UTILITIES //////////
|
|
25
24
|
//////////////////////////
|
|
26
25
|
///// CONTRACTS
|
|
26
|
+
// Wait budget for an L2 block to be mined and the receipt to surface.
|
|
27
|
+
// Base / Base Sepolia block time is ~2s; 30s ≈ 15 blocks of headroom.
|
|
28
|
+
const TRANSACTION_RECEIPT_TIMEOUT_MS = 30_000;
|
|
29
|
+
const TRANSACTION_RECEIPT_POLLING_INTERVAL_MS = 1_500;
|
|
27
30
|
/**
|
|
28
31
|
* Given a transaction hash, it returns the transaction receipt.
|
|
29
|
-
*
|
|
32
|
+
* Uses viem's `waitForTransactionReceipt` which polls until the receipt is
|
|
33
|
+
* available, retrying on `TransactionReceiptNotFoundError` and handling
|
|
34
|
+
* tx-replacement / reorgs natively.
|
|
30
35
|
* @param txHash - the transaction hash
|
|
31
|
-
* @param iteration - the iteration number
|
|
32
36
|
* @returns the transaction receipt
|
|
33
37
|
*/
|
|
34
|
-
export async function getTransactionReceipt({ txHash,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// `Unable to get transaction receipt from hash ${txHash} on iteration ${iteration}. Sleeping and retrying.`,
|
|
43
|
-
// )
|
|
44
|
-
await _sleep(150);
|
|
45
|
-
return getTransactionReceipt({ txHash, iteration: iteration + 1, publicClient });
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const errorMessage = `Unknown error getting transaction receipt with hash: ${txHash}. Error: ${error}`;
|
|
49
|
-
// this.logger.error(errorMessage)
|
|
50
|
-
throw new ContractsError(errorMessage);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
38
|
+
export async function getTransactionReceipt({ txHash, publicClient, }) {
|
|
39
|
+
try {
|
|
40
|
+
return await publicClient.waitForTransactionReceipt({
|
|
41
|
+
hash: txHash,
|
|
42
|
+
timeout: TRANSACTION_RECEIPT_TIMEOUT_MS,
|
|
43
|
+
pollingInterval: TRANSACTION_RECEIPT_POLLING_INTERVAL_MS,
|
|
44
|
+
confirmations: 1,
|
|
45
|
+
});
|
|
53
46
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// this.logger.error(errorMessage)
|
|
57
|
-
throw new ContractsError(errorMessage);
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new ContractsError(`Unable to get transaction receipt with hash: ${txHash}. Error: ${error}`);
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
51
|
/**
|