dequanto 0.2.48 → 0.2.50
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/contracts/oz/Proxy.sol +1 -0
- package/docs/ai/INDEX.md +4 -3
- package/docs/ai/examples/config.spec.ts +113 -0
- package/docs/ai/examples/contract-read.spec.ts +81 -13
- package/docs/ai/examples/contract-write.spec.ts +61 -9
- package/docs/ai/examples/deploy-contract.spec.ts +53 -16
- package/docs/ai/examples/erc4337-userop.spec.ts +7 -5
- package/docs/ai/examples/explorer-abi.spec.ts +9 -6
- package/docs/ai/examples/{generate-client.spec.ts → generate-contract-class.spec.ts} +6 -3
- package/docs/ai/examples/index-events.spec.ts +8 -6
- package/docs/ai/examples/rpc-read.spec.ts +32 -5
- package/docs/ai/examples/safe-batch.spec.ts +5 -4
- package/docs/ai/examples/send-transaction.spec.ts +23 -11
- package/docs/ai/examples/storage-read.spec.ts +15 -7
- package/docs/ai/examples/token-transfer.spec.ts +22 -15
- package/docs/ai/references/generation.md +30 -7
- package/docs/ai/skill/dequanto/SKILL.md +5 -1
- package/lib/cjs/abi/$abi.js +60 -0
- package/lib/cjs/abi/$abi.js.map +1 -0
- package/lib/cjs/abi/$abiCoder.js +1 -0
- package/lib/cjs/abi/$abiCoder.js.map +1 -1
- package/lib/cjs/abi/abi-coder.js +1 -1
- package/lib/cjs/abi/abi-coder.js.map +1 -1
- package/lib/cjs/blocks/BlockDateResolver.js.map +1 -1
- package/lib/cjs/clients/Web3Client.js +43 -2
- package/lib/cjs/clients/Web3Client.js.map +1 -1
- package/lib/cjs/clients/Web3ClientFactory.js +26 -4
- package/lib/cjs/clients/Web3ClientFactory.js.map +1 -1
- package/lib/cjs/clients/debug/ClientDebugMethods.js +4 -0
- package/lib/cjs/clients/debug/ClientDebugMethods.js.map +1 -1
- package/lib/cjs/clients/utils/$web3Abi.js +1 -1
- package/lib/cjs/clients/utils/$web3Abi.js.map +1 -1
- package/lib/cjs/config/Config.js +28 -6
- package/lib/cjs/config/Config.js.map +1 -1
- package/lib/cjs/config/ConfigDefaults.js +6 -2
- package/lib/cjs/config/ConfigDefaults.js.map +1 -1
- package/lib/cjs/config/ConfigProvider.js +5 -0
- package/lib/cjs/config/ConfigProvider.js.map +1 -1
- package/lib/cjs/config/DefaultFactory.js +27 -0
- package/lib/cjs/config/DefaultFactory.js.map +1 -0
- package/lib/cjs/contracts/ContractBase.js +6 -2
- package/lib/cjs/contracts/ContractBase.js.map +1 -1
- package/lib/cjs/contracts/ContractReader.js +1 -35
- package/lib/cjs/contracts/ContractReader.js.map +1 -1
- package/lib/cjs/explorer/BlockchainExplorerFactory.js.map +1 -1
- package/lib/cjs/rpc/RpcContract.js +4 -32
- package/lib/cjs/rpc/RpcContract.js.map +1 -1
- package/lib/cjs/utils/$account.js +5 -0
- package/lib/cjs/utils/$account.js.map +1 -1
- package/lib/cjs/utils/$config.js +4 -5
- package/lib/cjs/utils/$config.js.map +1 -1
- package/lib/cjs/utils/$erc20.js +47 -0
- package/lib/cjs/utils/$erc20.js.map +1 -0
- package/lib/cjs/utils/$hex.js +1 -0
- package/lib/cjs/utils/$hex.js.map +1 -1
- package/lib/cjs/utils/$require.js +6 -2
- package/lib/cjs/utils/$require.js.map +1 -1
- package/lib/esm/abi/$abi.js.map +1 -0
- package/lib/esm/abi/$abi.mjs +57 -0
- package/lib/esm/abi/$abiCoder.js.map +1 -1
- package/lib/esm/abi/$abiCoder.mjs +1 -0
- package/lib/esm/abi/abi-coder.js.map +1 -1
- package/lib/esm/abi/abi-coder.mjs +1 -1
- package/lib/esm/blocks/BlockDateResolver.js.map +1 -1
- package/lib/esm/clients/Web3Client.js.map +1 -1
- package/lib/esm/clients/Web3Client.mjs +43 -2
- package/lib/esm/clients/Web3ClientFactory.js.map +1 -1
- package/lib/esm/clients/Web3ClientFactory.mjs +26 -4
- package/lib/esm/clients/debug/ClientDebugMethods.js.map +1 -1
- package/lib/esm/clients/debug/ClientDebugMethods.mjs +4 -0
- package/lib/esm/clients/utils/$web3Abi.js.map +1 -1
- package/lib/esm/clients/utils/$web3Abi.mjs +1 -1
- package/lib/esm/config/Config.js.map +1 -1
- package/lib/esm/config/Config.mjs +28 -6
- package/lib/esm/config/ConfigDefaults.js.map +1 -1
- package/lib/esm/config/ConfigDefaults.mjs +6 -2
- package/lib/esm/config/ConfigProvider.js.map +1 -1
- package/lib/esm/config/ConfigProvider.mjs +5 -0
- package/lib/esm/config/DefaultFactory.js.map +1 -0
- package/lib/esm/config/DefaultFactory.mjs +23 -0
- package/lib/esm/contracts/ContractBase.js.map +1 -1
- package/lib/esm/contracts/ContractBase.mjs +6 -2
- package/lib/esm/contracts/ContractReader.js.map +1 -1
- package/lib/esm/contracts/ContractReader.mjs +1 -35
- package/lib/esm/explorer/BlockchainExplorerFactory.js.map +1 -1
- package/lib/esm/rpc/RpcContract.js.map +1 -1
- package/lib/esm/rpc/RpcContract.mjs +4 -32
- package/lib/esm/utils/$account.js.map +1 -1
- package/lib/esm/utils/$account.mjs +5 -0
- package/lib/esm/utils/$config.js.map +1 -1
- package/lib/esm/utils/$config.mjs +4 -5
- package/lib/esm/utils/$erc20.js.map +1 -0
- package/lib/esm/utils/$erc20.mjs +41 -0
- package/lib/esm/utils/$hex.js.map +1 -1
- package/lib/esm/utils/$hex.mjs +1 -0
- package/lib/esm/utils/$require.js.map +1 -1
- package/lib/esm/utils/$require.mjs +6 -2
- package/lib/types/abi/$abi.d.ts +17 -0
- package/lib/types/abi/$abiCoder.d.ts +2 -1
- package/lib/types/blocks/BlockDateResolver.d.ts +1 -1
- package/lib/types/clients/Web3Client.d.ts +1 -1
- package/lib/types/clients/Web3ClientFactory.d.ts +10 -2
- package/lib/types/clients/debug/ClientDebugMethods.d.ts +1 -1
- package/lib/types/config/AConfigBase.d.ts +3 -0
- package/lib/types/config/Config.d.ts +2 -1
- package/lib/types/config/DefaultFactory.d.ts +2 -0
- package/lib/types/config/interface/IConfigData.d.ts +14 -2
- package/lib/types/contracts/ContractReader.d.ts +1 -1
- package/lib/types/explorer/IBlockchainExplorer.d.ts +6 -0
- package/lib/types/models/TPlatform.d.ts +1 -1
- package/lib/types/utils/$account.d.ts +1 -0
- package/lib/types/utils/$erc20.d.ts +5 -0
- package/lib/types/utils/$hex.d.ts +1 -0
- package/lib/types/utils/$require.d.ts +6 -6
- package/package.json +1 -1
- package/src/abi/$abi.ts +69 -0
- package/src/abi/$abiCoder.ts +1 -1
- package/src/abi/abi-coder.ts +1 -3
- package/src/blocks/BlockDateResolver.ts +1 -1
- package/src/clients/Web3Client.ts +48 -3
- package/src/clients/Web3ClientFactory.ts +33 -5
- package/src/clients/debug/ClientDebugMethods.ts +5 -1
- package/src/clients/utils/$web3Abi.ts +2 -2
- package/src/config/AConfigBase.ts +4 -0
- package/src/config/Config.ts +30 -8
- package/src/config/ConfigDefaults.ts +6 -2
- package/src/config/ConfigProvider.ts +5 -1
- package/src/config/DefaultFactory.ts +26 -0
- package/src/config/interface/IConfigData.ts +15 -2
- package/src/contracts/ContractBase.ts +6 -2
- package/src/contracts/ContractReader.ts +3 -40
- package/src/explorer/BlockchainExplorerFactory.ts +0 -1
- package/src/explorer/IBlockchainExplorer.ts +4 -0
- package/src/models/TPlatform.ts +1 -0
- package/src/rpc/RpcContract.ts +5 -33
- package/src/utils/$account.ts +5 -0
- package/src/utils/$config.ts +4 -6
- package/src/utils/$erc20.ts +53 -0
- package/src/utils/$hex.ts +3 -1
- package/src/utils/$require.ts +8 -4
- package/tsconfig.json +1 -2
- package/tsconfig.umd.json +1 -2
|
@@ -10,8 +10,8 @@ export var $config;
|
|
|
10
10
|
(function ($config) {
|
|
11
11
|
let envOptions = null;
|
|
12
12
|
function get(path, $default) {
|
|
13
|
-
let value = (
|
|
14
|
-
??
|
|
13
|
+
let value = obj_getProperty(config, path)
|
|
14
|
+
?? (typeof $global.app !== 'undefined' ? $global.app.config?.$get?.(path) : null)
|
|
15
15
|
?? obj_getProperty(envOptions, path);
|
|
16
16
|
if (value == null && envOptions == null) {
|
|
17
17
|
envOptions = reloadEnv();
|
|
@@ -71,7 +71,7 @@ export var $config;
|
|
|
71
71
|
let chains = $config.get('chains', []);
|
|
72
72
|
let explorerConfig = explorer[platform];
|
|
73
73
|
let chainConfig = chains.find(x => x.platform === platform || x.aliases?.includes(platform));
|
|
74
|
-
$require.notNull(explorerConfig || chainConfig, `Unsupported platform ${platform} for
|
|
74
|
+
$require.notNull(explorerConfig || chainConfig, `Unsupported platform ${platform} for blockchain explorer`);
|
|
75
75
|
return {
|
|
76
76
|
platform,
|
|
77
77
|
...(chainConfig?.explorers?.[0] ?? {}),
|
|
@@ -80,11 +80,10 @@ export var $config;
|
|
|
80
80
|
}
|
|
81
81
|
$config.getExplorerOptions = getExplorerOptions;
|
|
82
82
|
function set(path, value) {
|
|
83
|
+
obj_setProperty(config, path, value);
|
|
83
84
|
if (typeof $global.app?.config?.$set === 'function') {
|
|
84
85
|
$global.app.config.$set(path, value);
|
|
85
|
-
return;
|
|
86
86
|
}
|
|
87
|
-
obj_setProperty(config, path, value);
|
|
88
87
|
}
|
|
89
88
|
$config.set = set;
|
|
90
89
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"$erc20.js","sourceRoot":"","sources":["../../../src/utils/$erc20.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,yCAAsC;AACtC,iCAA8B;AAC9B,uCAAoC;AAGpC,iEAA8D;AAE9D,IAAiB,MAAM,CA4CtB;AA5CD,WAAiB,MAAM;IACZ,KAAK,UAAU,aAAa,CAAC,MAAkB,EAAE,KAAmB,EAAE,OAAqB,EAAE,MAAuB;QACvH,mBAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,sDAAsD,CAAC,CAAC;QAChG,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAElC,MAAM,GAAG,GAAG,MAAO,KAAK,CAAC,KAAK,EAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACnC,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE;gBACJ,GAAG;gBACH,QAAQ;gBACR;oBACI,aAAa,EAAE,IAAI;oBACnB,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,KAAK;iBACxB;aACJ;SACJ,CAQA,CAAC;QAEF,mBAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,KAAK,EAAE,sCAAsC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3G,IAAI,QAAQ,GAAG,IAAA,cAAI,EAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACpF,mBAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;QACtD,mBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAExD,IAAI,WAAW,GAAG,WAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,KAAK,GAAG,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7F,mBAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC/C,IAAI,IAAI,GAAG,WAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ;YACpC,CAAC,CAAC,MAAM,iBAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrD,CAAC,CAAC,MAAM,CAAC;QAEb,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,CAAC;IA1CqB,oBAAa,gBA0ClC,CAAA;AACL,CAAC,EA5CgB,MAAM,GAAN,cAAM,KAAN,cAAM,QA4CtB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import alot from 'alot';
|
|
2
|
+
import { $require } from './$require.mjs';
|
|
3
|
+
import { $hex } from './$hex.mjs';
|
|
4
|
+
import { $bigint } from './$bigint.mjs';
|
|
5
|
+
import { ERC20 } from '../prebuilt/openzeppelin/ERC20.mjs';
|
|
6
|
+
export var $erc20;
|
|
7
|
+
(function ($erc20) {
|
|
8
|
+
async function setBalanceAny(client, token, account, amount) {
|
|
9
|
+
$require.eq(client.platform, 'hardhat', `Set Balance available only on Hardhat/Forked network`);
|
|
10
|
+
const erc20 = new ERC20(token, client);
|
|
11
|
+
const rpc = await client.getRpc();
|
|
12
|
+
const req = await erc20.$data().balanceOf(account);
|
|
13
|
+
const balanceTrace = await rpc.request({
|
|
14
|
+
method: 'debug_traceCall',
|
|
15
|
+
params: [
|
|
16
|
+
req,
|
|
17
|
+
'latest',
|
|
18
|
+
{
|
|
19
|
+
disableMemory: true,
|
|
20
|
+
disableStack: true,
|
|
21
|
+
disableStorage: false,
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
});
|
|
25
|
+
$require.True(balanceTrace.failed === false, `erc20 balance retrieval failed for ${await erc20.symbol()}`);
|
|
26
|
+
let returnOp = alot(balanceTrace.structLogs.reverse()).find(x => x.op === 'RETURN');
|
|
27
|
+
$require.notNull(returnOp, `RETURN opcode not found`);
|
|
28
|
+
$require.notNull(returnOp.storage, `Storage not found`);
|
|
29
|
+
let returnValue = $hex.raw(balanceTrace.returnValue);
|
|
30
|
+
let slots = alot.fromObject(returnOp.storage).filter(x => x.value === returnValue).toArray();
|
|
31
|
+
$require.gt(slots.length, 0, `Slot not found`);
|
|
32
|
+
let SLOT = $hex.ensure(slots[slots.length - 1].key);
|
|
33
|
+
let balance = typeof amount === 'number'
|
|
34
|
+
? await $bigint.toWei(amount, await erc20.decimals())
|
|
35
|
+
: amount;
|
|
36
|
+
await client.debug.setStorageAt(erc20.address, SLOT, $bigint.toHex(balance));
|
|
37
|
+
}
|
|
38
|
+
$erc20.setBalanceAny = setBalanceAny;
|
|
39
|
+
})($erc20 || ($erc20 = {}));
|
|
40
|
+
//# sourceMappingURL=$erc20.js.map
|
|
41
|
+
//# sourceMappingURL=$erc20.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$hex.js","sourceRoot":"","sources":["../../../src/utils/$hex.ts"],"names":[],"mappings":";;;AACA,uCAAoC;AACpC,yCAAsC;AACtC,IAAiB,IAAI,
|
|
1
|
+
{"version":3,"file":"$hex.js","sourceRoot":"","sources":["../../../src/utils/$hex.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/utils/$hex.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$require.js","sourceRoot":"","sources":["../../../src/utils/$require.ts"],"names":[],"mappings":";;;AAEA,+BAA4B;AAC5B,yCAAsC;AAGtC,MAAM,MAAM,GAAG,KAAK,CAAC;AACrB,IAAiB,QAAQ,
|
|
1
|
+
{"version":3,"file":"$require.js","sourceRoot":"","sources":["../../../src/utils/$require.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ export var $require;
|
|
|
66
66
|
function notNull(val, message, ...logs) {
|
|
67
67
|
if (val == null) {
|
|
68
68
|
logs?.forEach(log => console.error(log));
|
|
69
|
-
throw new Error(`Value is undefined. ${message}`);
|
|
69
|
+
throw new Error(`Value is undefined. ${message ?? ''}`);
|
|
70
70
|
}
|
|
71
71
|
return val;
|
|
72
72
|
}
|
|
@@ -74,7 +74,7 @@ export var $require;
|
|
|
74
74
|
function Null(val, message, ...logs) {
|
|
75
75
|
if (val != null) {
|
|
76
76
|
logs?.forEach(log => console.error(log));
|
|
77
|
-
throw new Error(`Value ${val} expects to be undefined. ${message}`);
|
|
77
|
+
throw new Error(`Value ${val} expects to be undefined. ${message ?? ''}`);
|
|
78
78
|
}
|
|
79
79
|
return val;
|
|
80
80
|
}
|
|
@@ -211,6 +211,7 @@ export var $require;
|
|
|
211
211
|
if (a <= b) {
|
|
212
212
|
throw new Error(`Expected a(${a}) > b(${b}). ${message}`);
|
|
213
213
|
}
|
|
214
|
+
return a;
|
|
214
215
|
}
|
|
215
216
|
$require.gt = gt;
|
|
216
217
|
function gte(a, b, message = '') {
|
|
@@ -219,6 +220,7 @@ export var $require;
|
|
|
219
220
|
if (a < b) {
|
|
220
221
|
throw new Error(`Expected a(${a}) > b(${b}). ${message}`);
|
|
221
222
|
}
|
|
223
|
+
return a;
|
|
222
224
|
}
|
|
223
225
|
$require.gte = gte;
|
|
224
226
|
/**
|
|
@@ -230,6 +232,7 @@ export var $require;
|
|
|
230
232
|
if (a >= b) {
|
|
231
233
|
throw new Error(`Expected a(${a}) > b(${b}). ${message}`);
|
|
232
234
|
}
|
|
235
|
+
return a;
|
|
233
236
|
}
|
|
234
237
|
$require.lt = lt;
|
|
235
238
|
function lte(a, b, message = '') {
|
|
@@ -238,6 +241,7 @@ export var $require;
|
|
|
238
241
|
if (a > b) {
|
|
239
242
|
throw new Error(`Expected a(${a}) > b(${b}). ${message}`);
|
|
240
243
|
}
|
|
244
|
+
return a;
|
|
241
245
|
}
|
|
242
246
|
$require.lte = lte;
|
|
243
247
|
})($require || ($require = {}));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TAbiInput, TAbiItem, TAbiOutput } from '../types/TAbi';
|
|
2
|
+
import { ParamType } from './fragments';
|
|
3
|
+
import { TEth } from '../models/TEth';
|
|
4
|
+
export declare namespace $abi {
|
|
5
|
+
type TAbiType = string | ParamType | TAbiInput;
|
|
6
|
+
type TDecodeOptions = {
|
|
7
|
+
loose?: boolean;
|
|
8
|
+
dynamic?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export function encode(types: TAbiType, values: any): TEth.Hex;
|
|
11
|
+
export function encode(types: TAbiType[], values: any[]): TEth.Hex;
|
|
12
|
+
export function decode(types: TAbiType, hex: string, opts?: TDecodeOptions): any;
|
|
13
|
+
export function decode(types: TAbiType[], hex: string, opts?: TDecodeOptions): any[];
|
|
14
|
+
export function encodeCall(abi: string | TAbiItem, params?: any[]): TEth.Hex;
|
|
15
|
+
export function decodeReturn<T = any>(abi: string | TAbiItem | TAbiOutput[], hex: string): T;
|
|
16
|
+
export {};
|
|
17
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TAbiInput } from '../types/TAbi';
|
|
1
|
+
import { TAbiInput, TAbiItem } from '../types/TAbi';
|
|
2
2
|
import { ParamType } from './fragments';
|
|
3
3
|
import { TEth } from '../models/TEth';
|
|
4
4
|
export declare namespace $abiCoder {
|
|
@@ -14,5 +14,6 @@ export declare namespace $abiCoder {
|
|
|
14
14
|
export function decode(types: TAbiType, hex: string, opts?: TDecodeOptions): any;
|
|
15
15
|
export function decode(types: TAbiType[], hex: string, opts?: TDecodeOptions): any[];
|
|
16
16
|
export function decodeSingle(type: TAbiType, hex: string, opts?: TDecodeOptions): any;
|
|
17
|
+
export function normalizeType(type: TAbiType): TAbiItem | TAbiType;
|
|
17
18
|
export {};
|
|
18
19
|
}
|
|
@@ -37,7 +37,7 @@ export declare abstract class Web3Client implements IWeb3Client {
|
|
|
37
37
|
batch(requests: TRpc.IRpcAction[], options?: {
|
|
38
38
|
allowErrors?: boolean;
|
|
39
39
|
}): Promise<any[]>;
|
|
40
|
-
batchContractCalls(requests: TRpcContractCall[], options?: {
|
|
40
|
+
batchContractCalls(requests: TRpcContractCall[] | Promise<TRpcContractCall>[], options?: {
|
|
41
41
|
allowErrors?: boolean;
|
|
42
42
|
}): Promise<any[]>;
|
|
43
43
|
getEventStream(address: TEth.Address, abi: TAbiItem[], event: string): ClientEventsStream<any>;
|
|
@@ -2,8 +2,16 @@ import { TPlatform } from '../models/TPlatform';
|
|
|
2
2
|
import { IWeb3EndpointOptions } from './interfaces/IWeb3EndpointOptions';
|
|
3
3
|
import { EvmWeb3Client } from './EvmWeb3Client';
|
|
4
4
|
import type { HardhatWeb3Client } from '../hardhat/HardhatWeb3Client';
|
|
5
|
+
import { IConfigData } from '../config/interface/IConfigData';
|
|
5
6
|
export declare namespace Web3ClientFactory {
|
|
6
|
-
function get<TClient extends EvmWeb3Client | HardhatWeb3Client = EvmWeb3Client>(platform: TPlatform | number, opts?: IWeb3EndpointOptions): TClient;
|
|
7
|
+
export function get<TClient extends EvmWeb3Client | HardhatWeb3Client = EvmWeb3Client>(platform: TPlatform | number, opts?: IWeb3EndpointOptions): TClient;
|
|
8
|
+
type HHInMemoryForkData = {
|
|
9
|
+
block?: number;
|
|
10
|
+
url?: string;
|
|
11
|
+
};
|
|
7
12
|
/** Same as the sync variant, but ensures the config is fetched */
|
|
8
|
-
function getAsync<TClient extends EvmWeb3Client | HardhatWeb3Client = EvmWeb3Client>(platform: TPlatform | string | number, opts?: IWeb3EndpointOptions
|
|
13
|
+
export function getAsync<TClient extends EvmWeb3Client | HardhatWeb3Client = EvmWeb3Client>(platform: TPlatform | string | number, opts?: IWeb3EndpointOptions & HHInMemoryForkData & {
|
|
14
|
+
config?: Partial<IConfigData>;
|
|
15
|
+
}): Promise<TClient>;
|
|
16
|
+
export {};
|
|
9
17
|
}
|
|
@@ -15,7 +15,7 @@ export declare class ClientDebugMethods {
|
|
|
15
15
|
* @param intervalSeconds Default: 1 block in 1 second
|
|
16
16
|
*/
|
|
17
17
|
mine(blocks?: number | bigint | string, intervalSeconds?: number | bigint): Promise<any>;
|
|
18
|
-
setBalance(address: TAddress, amount: bigint | string): Promise<any>;
|
|
18
|
+
setBalance(address: TAddress, amount: bigint | number | string): Promise<any>;
|
|
19
19
|
reset(params?: {
|
|
20
20
|
forking?: {
|
|
21
21
|
jsonRpcUrl?: any;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { IConfigData } from './interface/IConfigData';
|
|
2
2
|
type TConfigParamsBase = {
|
|
3
3
|
config?: Partial<IConfigData>;
|
|
4
|
+
rpc?: {
|
|
5
|
+
[platform: string]: string | string[] | IConfigData['web3']['']['endpoints'];
|
|
6
|
+
};
|
|
4
7
|
};
|
|
5
8
|
export type TConfigParamsNode = TConfigParamsBase & {
|
|
6
9
|
dotenv?: boolean;
|
|
@@ -4,7 +4,8 @@ import { IConfigData } from './interface/IConfigData';
|
|
|
4
4
|
export declare class Config {
|
|
5
5
|
static fetch(parameters?: TConfigParamsNode | TConfigParamsBrowser): Promise<Appcfg<IConfigData> & IConfigData>;
|
|
6
6
|
/** Will return a config that was previously loaded by fetch with any parameters or will trigger fetch with default parameters */
|
|
7
|
-
static get(): Promise<Appcfg<IConfigData> & IConfigData>;
|
|
7
|
+
static get(config?: Partial<IConfigData>): Promise<Appcfg<IConfigData> & IConfigData>;
|
|
8
8
|
static extend(json: any): Promise<void>;
|
|
9
|
+
static clean(): Config;
|
|
9
10
|
}
|
|
10
11
|
export declare const config: IConfigData;
|
|
@@ -4,6 +4,7 @@ import { TAddress } from '../../models/TAddress';
|
|
|
4
4
|
import { TPlatform } from '../../models/TPlatform';
|
|
5
5
|
import { IRpcConfig } from '../../clients/ClientPool';
|
|
6
6
|
import { TChain } from '../../models/TChain';
|
|
7
|
+
import { TEth } from '../../models/TEth';
|
|
7
8
|
export interface IConfigData {
|
|
8
9
|
settings: {
|
|
9
10
|
/** Root path of the dequanto library */
|
|
@@ -24,10 +25,10 @@ export interface IConfigData {
|
|
|
24
25
|
tokens: ITokenGlob[];
|
|
25
26
|
blockchainExplorer: {
|
|
26
27
|
[platform in TPlatform]: {
|
|
27
|
-
key
|
|
28
|
+
key?: string;
|
|
28
29
|
host?: string;
|
|
29
30
|
api?: string;
|
|
30
|
-
|
|
31
|
+
www?: string;
|
|
31
32
|
};
|
|
32
33
|
};
|
|
33
34
|
chains: TChain[];
|
|
@@ -69,4 +70,15 @@ export interface IConfigData {
|
|
|
69
70
|
spotPriceAggregator?: {
|
|
70
71
|
[platform in TPlatform]: TAddress;
|
|
71
72
|
};
|
|
73
|
+
ns: {
|
|
74
|
+
[service: string]: {
|
|
75
|
+
[platform: string]: {
|
|
76
|
+
registry: TEth.Address;
|
|
77
|
+
resolver?: TEth.Address;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
oracles: {
|
|
82
|
+
[service: string]: any;
|
|
83
|
+
};
|
|
72
84
|
}
|
|
@@ -48,7 +48,7 @@ export declare class ContractReader implements IContractReader {
|
|
|
48
48
|
[key: string]: any;
|
|
49
49
|
} | any[];
|
|
50
50
|
}): Promise<RpcTypes.Filter>;
|
|
51
|
-
static read(client: Web3Client, address: TAddress, methodAbi: string): Promise<
|
|
51
|
+
static read<TResult = any>(client: Web3Client, address: TAddress, methodAbi: string): Promise<TResult>;
|
|
52
52
|
}
|
|
53
53
|
export declare namespace ContractReaderUtils {
|
|
54
54
|
class DeferredRequest<T = any> {
|
|
@@ -4,6 +4,12 @@ import { TEth } from '../models/TEth';
|
|
|
4
4
|
import { TAddress } from '../models/TAddress';
|
|
5
5
|
import { IVerifier } from './verifiers/IVerifier';
|
|
6
6
|
export interface IBlockchainExplorer extends IAbiProvider, IVerifier {
|
|
7
|
+
config?: {
|
|
8
|
+
api?: {
|
|
9
|
+
url?: string;
|
|
10
|
+
key?: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
7
13
|
inMemoryDb: IContractDetails[];
|
|
8
14
|
getContractMeta(q: string): Promise<IContractDetails>;
|
|
9
15
|
getContractCreation(address: TEth.Address): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type TPlatform = 'eth' | 'eth:goerli' | 'bsc' | 'polygon' | 'arbitrum' | 'xdai' | 'boba' | 'hardhat' | 'optimism' | 'avalanche' | `hh:${string}` | string;
|
|
1
|
+
export type TPlatform = 'eth' | 'eth:goerli' | 'bsc' | 'polygon' | 'arbitrum' | 'xdai' | 'boba' | 'hardhat' | 'optimism' | 'avalanche' | 'hh:memory' | `hh:${string}` | string;
|
|
@@ -4,4 +4,5 @@ export declare namespace $account {
|
|
|
4
4
|
function isSafe(account: TAccount): account is SafeAccount;
|
|
5
5
|
function isErc4337(account: TAccount): account is Erc4337Account;
|
|
6
6
|
function isTimelock(account: TAccount): account is TimelockAccount;
|
|
7
|
+
function generate(name: string): EoAccount;
|
|
7
8
|
}
|
|
@@ -17,8 +17,8 @@ export declare namespace $require {
|
|
|
17
17
|
function Function<T>(val: T, message: string): NonNullable<T>;
|
|
18
18
|
function Array<T>(val: T, message: string): NonNullable<T>;
|
|
19
19
|
function String<T>(val: T, message: string): NonNullable<T>;
|
|
20
|
-
function notNull<T>(val: T, message
|
|
21
|
-
function Null<T>(val: T, message
|
|
20
|
+
function notNull<T>(val: T, message?: string, ...logs: any[]): NonNullable<T>;
|
|
21
|
+
function Null<T>(val: T, message?: string, ...logs: any[]): T;
|
|
22
22
|
function notEmpty<T extends string | Array<any> | {
|
|
23
23
|
length: number;
|
|
24
24
|
}>(val: T, message: string): NonNullable<T>;
|
|
@@ -39,11 +39,11 @@ export declare namespace $require {
|
|
|
39
39
|
/**
|
|
40
40
|
* must be a > b, throws when a <= b
|
|
41
41
|
*/
|
|
42
|
-
function gt<T = number | bigint>(a: T, b: T, message?: string):
|
|
43
|
-
function gte<T = number | bigint>(a: T, b: T, message?: string):
|
|
42
|
+
function gt<T = number | bigint>(a: T, b: T, message?: string): T;
|
|
43
|
+
function gte<T = number | bigint>(a: T, b: T, message?: string): T;
|
|
44
44
|
/**
|
|
45
45
|
* must be a < b, throws when a >= b
|
|
46
46
|
*/
|
|
47
|
-
function lt<T = number | bigint>(a: T, b: T, message?: string):
|
|
48
|
-
function lte<T = number | bigint>(a: T, b: T, message?: string):
|
|
47
|
+
function lt<T = number | bigint>(a: T, b: T, message?: string): T;
|
|
48
|
+
function lte<T = number | bigint>(a: T, b: T, message?: string): T;
|
|
49
49
|
}
|
package/package.json
CHANGED
package/src/abi/$abi.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { TAbiInput, TAbiItem, TAbiOutput } from '@dequanto/types/TAbi';
|
|
2
|
+
import { ParamType } from './fragments';
|
|
3
|
+
import { TEth } from '@dequanto/models/TEth';
|
|
4
|
+
import { $abiCoder } from './$abiCoder';
|
|
5
|
+
import { $abiUtils } from '@dequanto/utils/$abiUtils';
|
|
6
|
+
import { $abiParser } from '@dequanto/utils/$abiParser';
|
|
7
|
+
|
|
8
|
+
export namespace $abi {
|
|
9
|
+
type TAbiType = string | ParamType | TAbiInput;
|
|
10
|
+
type TDecodeOptions = {
|
|
11
|
+
loose?: boolean
|
|
12
|
+
dynamic?: boolean
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function encode(types: TAbiType, values: any): TEth.Hex
|
|
16
|
+
export function encode(types: TAbiType[], values: any[]): TEth.Hex
|
|
17
|
+
export function encode(types: TAbiType | TAbiType[], values: any | any[]): TEth.Hex {
|
|
18
|
+
const isSingle = Array.isArray(types) === false;
|
|
19
|
+
const arr = ensureTypes(types);
|
|
20
|
+
const hex = $abiCoder.encode(arr, isSingle ? [ values ] : values);
|
|
21
|
+
return hex;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function decode(types: TAbiType, hex: string, opts?: TDecodeOptions): any
|
|
25
|
+
export function decode(types: TAbiType[], hex: string, opts?: TDecodeOptions): any[]
|
|
26
|
+
export function decode(types: TAbiType | TAbiType[], hex: string, opts?: TDecodeOptions): any {
|
|
27
|
+
const isSingle = Array.isArray(types) === false;
|
|
28
|
+
const arr = ensureTypes(types);
|
|
29
|
+
let result = $abiCoder.decode(arr, hex, opts);
|
|
30
|
+
|
|
31
|
+
return isSingle ? result[0] : result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function encodeCall(abi: string | TAbiItem, params?: any[]): TEth.Hex {
|
|
35
|
+
return $abiUtils.serializeMethodCallData(abi, params);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function decodeReturn<T = any>(abi: string | TAbiItem | TAbiOutput[], hex: string): T {
|
|
39
|
+
let outputs = typeof abi === 'string'
|
|
40
|
+
? ($abiParser.parseMethod(abi).outputs ?? [])
|
|
41
|
+
: (Array.isArray(abi) ? abi : abi.outputs ?? []);
|
|
42
|
+
let returnAbi = outputs;
|
|
43
|
+
let isDynamic: boolean = null;
|
|
44
|
+
if (outputs.length > 1) {
|
|
45
|
+
let isNamedTuple = outputs.every(x => x.name != null && x.name !== '');
|
|
46
|
+
if (isNamedTuple) {
|
|
47
|
+
returnAbi = [{ type: 'tuple', components: outputs, name: null }];
|
|
48
|
+
isDynamic = false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
let arr = $abiCoder.decode(returnAbi as any, hex, {
|
|
54
|
+
dynamic: isDynamic
|
|
55
|
+
});
|
|
56
|
+
return returnAbi.length === 1 ? arr[0] : arr;
|
|
57
|
+
} catch (error) {
|
|
58
|
+
if (outputs.length === 1 && returnAbi.length === 1) {
|
|
59
|
+
return $abiCoder.decodeSingle(returnAbi[0], hex);
|
|
60
|
+
}
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function ensureTypes (types: TAbiType | TAbiType[]): TAbiType[] {
|
|
66
|
+
let arr = Array.isArray(types) ? types : [ types ];
|
|
67
|
+
return arr.map($abiCoder.normalizeType);
|
|
68
|
+
}
|
|
69
|
+
}
|
package/src/abi/$abiCoder.ts
CHANGED
package/src/abi/abi-coder.ts
CHANGED
|
@@ -116,9 +116,7 @@ export class AbiCoder {
|
|
|
116
116
|
* @returns DataHexstring
|
|
117
117
|
*/
|
|
118
118
|
encodeSingle(type: string | ParamType | TAbiInput, value: any): string {
|
|
119
|
-
|
|
120
|
-
let coder = this.#getCoder(ParamType.from(type));
|
|
121
|
-
|
|
119
|
+
const coder = this.#getCoder(ParamType.from(type));
|
|
122
120
|
const writer = new Writer();
|
|
123
121
|
coder.encode(writer, value);
|
|
124
122
|
return writer.data;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import alot from 'alot';
|
|
2
2
|
import memd from 'memd';
|
|
3
|
-
import { Web3Client } from '@dequanto/clients/Web3Client';
|
|
4
3
|
import { TEth } from '@dequanto/models/TEth';
|
|
5
4
|
import { $block } from '@dequanto/utils/$block';
|
|
6
5
|
import { $date } from '@dequanto/utils/$date';
|
|
6
|
+
import type { Web3Client } from '@dequanto/clients/Web3Client';
|
|
7
7
|
|
|
8
8
|
export class BlockDateResolver {
|
|
9
9
|
private AVG_INITIAL = {
|
|
@@ -32,6 +32,8 @@ import { DataLike } from '@dequanto/utils/types';
|
|
|
32
32
|
import { ErrorCode } from './ClientPoolStats';
|
|
33
33
|
import { $date } from '@dequanto/utils/$date';
|
|
34
34
|
import { WalletClient } from './WalletClient';
|
|
35
|
+
import alot from 'alot';
|
|
36
|
+
import { $abiParser } from '@dequanto/utils/$abiParser';
|
|
35
37
|
|
|
36
38
|
export abstract class Web3Client implements IWeb3Client {
|
|
37
39
|
|
|
@@ -108,12 +110,55 @@ export abstract class Web3Client implements IWeb3Client {
|
|
|
108
110
|
}
|
|
109
111
|
|
|
110
112
|
// Submit contract calls in a batch and decode the responses.
|
|
111
|
-
async batchContractCalls(requests: TRpcContractCall[], options?: {
|
|
113
|
+
async batchContractCalls(requests: TRpcContractCall[] | Promise<TRpcContractCall>[], options?: {
|
|
112
114
|
allowErrors?: boolean
|
|
113
115
|
}) {
|
|
114
116
|
let reader = new RpcContract(this);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
|
|
118
|
+
let requestsArrRaw = await Promise.all(requests);
|
|
119
|
+
let requestsArr = await alot(requestsArrRaw).mapAsync(async request => {
|
|
120
|
+
if (request == null) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
let abi = typeof request.abi === 'string'
|
|
124
|
+
? [ $abiParser.parseMethod(request.abi) ]
|
|
125
|
+
: (Array.isArray(request.abi) ? request.abi : [ request.abi ])
|
|
126
|
+
|
|
127
|
+
let blockNumber = request.blockNumber;
|
|
128
|
+
if (blockNumber instanceof Date) {
|
|
129
|
+
let resolver = di.resolve(BlockDateResolver, this);
|
|
130
|
+
blockNumber = await resolver.getBlockNumberFor(blockNumber);
|
|
131
|
+
}
|
|
132
|
+
let method = request.method;
|
|
133
|
+
if (method == null) {
|
|
134
|
+
$require.eq(abi.length, 1, `No function method is provided, the single ABI item expected`);
|
|
135
|
+
method = abi[0].name;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
address: request.address,
|
|
139
|
+
abi: abi,
|
|
140
|
+
method: method,
|
|
141
|
+
params: request.params,
|
|
142
|
+
blockNumber: blockNumber,
|
|
143
|
+
options: options
|
|
144
|
+
} as TRpcContractCall;
|
|
145
|
+
}).toArrayAsync();
|
|
146
|
+
|
|
147
|
+
// Skip NULL request: mirror later as the NULL result
|
|
148
|
+
let mapped = [];
|
|
149
|
+
let rpcRequestsNotEmpty = [];
|
|
150
|
+
for (let i = 0; i < requestsArr.length; i++) {
|
|
151
|
+
if (requestsArr[i] == null) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
let idx = rpcRequestsNotEmpty.push(requestsArr[i]) - 1;
|
|
155
|
+
mapped[i] = idx;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
let outputs = await reader.batch(rpcRequestsNotEmpty, options);
|
|
159
|
+
return requestsArr.map((_, i) => {
|
|
160
|
+
return outputs[mapped[i]] ?? null;
|
|
161
|
+
});
|
|
117
162
|
}
|
|
118
163
|
|
|
119
164
|
getEventStream(address: TEth.Address, abi: TAbiItem[], event: string) {
|