web3-tools-mcp 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +51 -4
  2. package/dist/anvil.d.ts +34 -0
  3. package/dist/anvil.d.ts.map +1 -0
  4. package/dist/anvil.js +254 -0
  5. package/dist/anvil.js.map +1 -0
  6. package/dist/client.d.ts +3 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +13 -2
  9. package/dist/client.js.map +1 -1
  10. package/dist/index.js +25 -5
  11. package/dist/index.js.map +1 -1
  12. package/dist/preview.d.ts +55 -0
  13. package/dist/preview.d.ts.map +1 -0
  14. package/dist/preview.js +233 -0
  15. package/dist/preview.js.map +1 -0
  16. package/dist/tools/advanced.d.ts +67 -9
  17. package/dist/tools/advanced.d.ts.map +1 -1
  18. package/dist/tools/advanced.js +206 -67
  19. package/dist/tools/advanced.js.map +1 -1
  20. package/dist/tools/balance.d.ts +5 -5
  21. package/dist/tools/contract-info.d.ts +9 -9
  22. package/dist/tools/contract.d.ts +8 -8
  23. package/dist/tools/contract.d.ts.map +1 -1
  24. package/dist/tools/contract.js +3 -0
  25. package/dist/tools/contract.js.map +1 -1
  26. package/dist/tools/ens.d.ts +15 -15
  27. package/dist/tools/gas.d.ts +18 -18
  28. package/dist/tools/logs.d.ts +3 -3
  29. package/dist/tools/transactions.d.ts +9 -9
  30. package/dist/tools/transactions.d.ts.map +1 -1
  31. package/dist/tools/transactions.js +92 -113
  32. package/dist/tools/transactions.js.map +1 -1
  33. package/dist/utils.d.ts +13 -0
  34. package/dist/utils.d.ts.map +1 -1
  35. package/dist/utils.js +76 -0
  36. package/dist/utils.js.map +1 -1
  37. package/dist/wallet-client.d.ts +83 -0
  38. package/dist/wallet-client.d.ts.map +1 -0
  39. package/dist/wallet-client.js +357 -0
  40. package/dist/wallet-client.js.map +1 -0
  41. package/package.json +9 -8
  42. package/src/anvil.ts +323 -0
  43. package/src/client.ts +16 -2
  44. package/src/index.ts +26 -5
  45. package/src/preview.ts +320 -0
  46. package/src/tools/advanced.ts +239 -70
  47. package/src/tools/contract.ts +3 -0
  48. package/src/tools/transactions.ts +98 -125
  49. package/src/utils.ts +95 -0
  50. package/src/wallet-client.ts +380 -0
  51. package/dist/wallet-server.d.ts +0 -35
  52. package/dist/wallet-server.d.ts.map +0 -1
  53. package/dist/wallet-server.js +0 -232
  54. package/dist/wallet-server.js.map +0 -1
  55. package/public/wallet-app.js +0 -677
  56. package/public/wallet.html +0 -723
  57. package/src/wallet-server.ts +0 -283
@@ -0,0 +1,233 @@
1
+ import { decodeFunctionData, formatEther, formatUnits, parseAbiItem, toFunctionSelector } from 'viem';
2
+ import { simulateBlocks } from 'viem/actions';
3
+ import { whatsabi } from '@shazow/whatsabi';
4
+ import { getClientManager } from './client.js';
5
+ const ERC20_META_ABI = [
6
+ parseAbiItem('function decimals() view returns (uint8)'),
7
+ parseAbiItem('function symbol() view returns (string)')
8
+ ];
9
+ const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
10
+ const MAX_UINT256 = (1n << 256n) - 1n;
11
+ const UNLIMITED_THRESHOLD = MAX_UINT256 / 2n;
12
+ // Selectors whose amount argument is denominated in the token at tx.to.
13
+ const ERC20_AMOUNT_ARGS = {
14
+ [toFunctionSelector('function approve(address,uint256)')]: { arg: 'amount', approval: true },
15
+ [toFunctionSelector('function transfer(address,uint256)')]: { arg: 'amount' },
16
+ [toFunctionSelector('function transferFrom(address,address,uint256)')]: { arg: 'amount' }
17
+ };
18
+ const abiCache = new Map();
19
+ const labelCache = new Map();
20
+ const metaCache = new Map();
21
+ async function loadAbi(chain, address) {
22
+ const key = `${chain}:${address.toLowerCase()}`;
23
+ const cached = abiCache.get(key);
24
+ if (cached)
25
+ return cached;
26
+ const clientManager = getClientManager();
27
+ const client = clientManager.getClient(chain);
28
+ const etherscanApiKey = clientManager.getConfig().etherscanApiKey;
29
+ const loaders = [new whatsabi.loaders.SourcifyABILoader({ chainId: clientManager.getChainId(chain) })];
30
+ if (etherscanApiKey) {
31
+ loaders.push(new whatsabi.loaders.EtherscanV2ABILoader({ apiKey: etherscanApiKey, chainId: clientManager.getChainId(chain) }));
32
+ }
33
+ const result = await whatsabi.autoload(address, {
34
+ provider: client,
35
+ abiLoader: new whatsabi.loaders.MultiABILoader(loaders),
36
+ signatureLookup: new whatsabi.loaders.OpenChainSignatureLookup(),
37
+ followProxies: true
38
+ });
39
+ // Bytecode-guessed ABIs carry no argument names; verified ones do.
40
+ const source = result.abi.some((item) => item.type === 'function' && item.inputs?.some((i) => i.name)) ? 'verified' : 'guessed';
41
+ const loaded = {
42
+ abi: result.abi,
43
+ source: source,
44
+ proxy: result.address !== address ? result.address : undefined,
45
+ name: result.contractResult?.name ?? undefined
46
+ };
47
+ abiCache.set(key, loaded);
48
+ return loaded;
49
+ }
50
+ async function tokenMeta(chain, token) {
51
+ const key = `${chain}:${token.toLowerCase()}`;
52
+ const cached = metaCache.get(key);
53
+ if (cached)
54
+ return cached;
55
+ const client = getClientManager().getClient(chain);
56
+ const [decimals, symbol] = await client.multicall({
57
+ contracts: [
58
+ { address: token, abi: ERC20_META_ABI, functionName: 'decimals' },
59
+ { address: token, abi: ERC20_META_ABI, functionName: 'symbol' }
60
+ ],
61
+ ...(chain === 'localhost' && { deployless: true })
62
+ });
63
+ const meta = {
64
+ decimals: decimals.status === 'success' ? Number(decimals.result) : undefined,
65
+ symbol: symbol.status === 'success' ? symbol.result : undefined
66
+ };
67
+ metaCache.set(key, meta);
68
+ return meta;
69
+ }
70
+ /**
71
+ * Human label for an address: token symbol first (more recognisable than the contract
72
+ * name — "USDC" beats "FiatTokenProxy"), then the verified contract name. EOAs get none,
73
+ * and the bytecode check keeps us from asking explorers about plain wallets.
74
+ */
75
+ async function addressLabel(chain, address) {
76
+ const key = `${chain}:${address.toLowerCase()}`;
77
+ if (labelCache.has(key))
78
+ return labelCache.get(key);
79
+ let label;
80
+ try {
81
+ const code = await getClientManager().getClient(chain).getBytecode({ address: address });
82
+ if (code && code !== '0x') {
83
+ label = (await tokenMeta(chain, address).catch(() => ({ symbol: undefined }))).symbol;
84
+ if (!label)
85
+ label = (await loadAbi(chain, address)).name;
86
+ }
87
+ }
88
+ catch {
89
+ // Unknown address — show it bare rather than failing the preview.
90
+ }
91
+ labelCache.set(key, label);
92
+ return label;
93
+ }
94
+ function stringify(value) {
95
+ if (typeof value === 'bigint')
96
+ return value.toString();
97
+ if (Array.isArray(value))
98
+ return `[${value.map(stringify).join(', ')}]`;
99
+ if (value && typeof value === 'object') {
100
+ return `{${Object.entries(value)
101
+ .map(([k, v]) => `${k}: ${stringify(v)}`)
102
+ .join(', ')}}`;
103
+ }
104
+ return String(value);
105
+ }
106
+ /**
107
+ * Decode calldata into labelled fields (clear signing). Token amounts on the standard
108
+ * ERC20 selectors are formatted with on-chain decimals and unlimited approvals flagged.
109
+ */
110
+ async function decodeCalldata(chain, tx) {
111
+ if (!tx.data || tx.data === '0x')
112
+ return undefined;
113
+ const { abi, source, proxy } = await loadAbi(chain, tx.to);
114
+ const { functionName, args } = decodeFunctionData({ abi, data: tx.data });
115
+ const abiItem = abi.find((item) => item.type === 'function' && item.name === functionName);
116
+ const inputs = abiItem?.inputs ?? [];
117
+ const erc20 = ERC20_AMOUNT_ARGS[tx.data.slice(0, 10)];
118
+ const meta = erc20 ? await tokenMeta(chain, tx.to).catch(() => ({ symbol: undefined, decimals: undefined })) : undefined;
119
+ const fields = (args ?? []).map((value, i) => {
120
+ const input = inputs[i];
121
+ const name = input?.name || `arg${i}`;
122
+ const field = { name, type: input?.type ?? 'unknown', value: stringify(value) };
123
+ if (input?.type === 'address' && typeof value === 'string')
124
+ field.address = value;
125
+ // Amount argument is positionally last on all three ERC20 selectors.
126
+ if (erc20 && i === args.length - 1 && typeof value === 'bigint') {
127
+ if (meta?.decimals !== undefined) {
128
+ field.value = `${formatUnits(value, meta.decimals)}${meta.symbol ? ` ${meta.symbol}` : ''}`;
129
+ }
130
+ if (erc20.approval && value > UNLIMITED_THRESHOLD) {
131
+ field.value = `Unlimited${meta?.symbol ? ` ${meta.symbol}` : ''}`;
132
+ field.warning = 'Unlimited spending approval';
133
+ }
134
+ }
135
+ return field;
136
+ });
137
+ // Label every address argument at once rather than serially per field.
138
+ await Promise.all(fields
139
+ .filter((field) => field.address)
140
+ .map(async (field) => {
141
+ field.label = await addressLabel(chain, field.address);
142
+ }));
143
+ const signature = abiItem
144
+ ? `${functionName}(${inputs.map((i) => `${i.type}${i.name ? ` ${i.name}` : ''}`).join(', ')})`
145
+ : functionName;
146
+ return { functionName, signature, fields, source, proxy };
147
+ }
148
+ function topicToAddress(topic) {
149
+ return `0x${topic.slice(-40)}`;
150
+ }
151
+ async function enrichTransfers(chain, logs) {
152
+ const transfers = logs.filter((log) => log.topics[0]?.toLowerCase() === TRANSFER_TOPIC && log.topics.length >= 3);
153
+ return Promise.all(transfers.map(async (log) => {
154
+ const amount = log.data && log.data !== '0x' ? BigInt(log.data).toString() : '0';
155
+ const meta = await tokenMeta(chain, log.address).catch(() => ({ symbol: undefined, decimals: undefined }));
156
+ return {
157
+ token: log.address,
158
+ symbol: meta.symbol,
159
+ decimals: meta.decimals,
160
+ from: topicToAddress(log.topics[1]),
161
+ to: topicToAddress(log.topics[2]),
162
+ amount,
163
+ humanAmount: meta.decimals !== undefined ? formatUnits(BigInt(amount), meta.decimals) : undefined
164
+ };
165
+ }));
166
+ }
167
+ /**
168
+ * Simulate a transaction without broadcasting.
169
+ *
170
+ * Prefers eth_simulateV1 (viem `simulateBlocks`) for the ERC20 transfer logs it returns,
171
+ * falling back to eth_call + estimateGas on RPCs that don't implement it.
172
+ */
173
+ async function simulate(chain, tx, from) {
174
+ const client = getClientManager().getClient(chain);
175
+ const call = {
176
+ account: from,
177
+ to: tx.to,
178
+ ...(tx.data && { data: tx.data }),
179
+ ...(tx.value && BigInt(tx.value) > 0n && { value: BigInt(tx.value) })
180
+ };
181
+ try {
182
+ const blocks = await simulateBlocks(client, { blocks: [{ calls: [call] }], traceTransfers: true, validation: false });
183
+ const result = blocks?.[0]?.calls?.[0];
184
+ if (result) {
185
+ const error = result.error;
186
+ return {
187
+ success: result.status === 'success',
188
+ gasEstimate: result.gasUsed?.toString(),
189
+ error: result.status === 'success' ? undefined : (error?.shortMessage ?? error?.message ?? 'execution reverted'),
190
+ assetChanges: await enrichTransfers(chain, (result.logs ?? []))
191
+ };
192
+ }
193
+ }
194
+ catch {
195
+ // RPC lacks eth_simulateV1 — fall through
196
+ }
197
+ try {
198
+ await client.call(call);
199
+ const gas = await client.estimateGas(call);
200
+ return { success: true, gasEstimate: gas.toString(), assetChanges: [] };
201
+ }
202
+ catch (error) {
203
+ return {
204
+ success: false,
205
+ error: error instanceof Error ? error.message.slice(0, 500) : String(error),
206
+ assetChanges: []
207
+ };
208
+ }
209
+ }
210
+ /**
211
+ * Build the human-readable preview shown in the wallet before signing: decoded calldata
212
+ * plus a simulation of the outcome. Never throws — a preview that cannot be built is
213
+ * reported as missing rather than blocking the transaction.
214
+ */
215
+ export async function buildTxPreview(chain, tx, from) {
216
+ const value = tx.value ? BigInt(tx.value).toString() : undefined;
217
+ const [decoded, simulation, toLabel] = await Promise.all([
218
+ decodeCalldata(chain, tx).catch(() => undefined),
219
+ from ? simulate(chain, tx, from).catch(() => undefined) : Promise.resolve(undefined),
220
+ addressLabel(chain, tx.to).catch(() => undefined)
221
+ ]);
222
+ return {
223
+ chain,
224
+ to: tx.to,
225
+ toLabel,
226
+ explorer: `https://${getClientManager().getEtherscanDomain(chain)}`,
227
+ value,
228
+ valueFormatted: value && value !== '0' ? formatEther(BigInt(value)) : undefined,
229
+ decoded,
230
+ simulation
231
+ };
232
+ }
233
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
@@ -10,21 +10,21 @@ declare const _default: {
10
10
  abiType: z.ZodString;
11
11
  blockNumber: z.ZodOptional<z.ZodString>;
12
12
  }, "strip", z.ZodTypeAny, {
13
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
14
13
  address: string;
14
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
15
15
  slot: string;
16
16
  abiType: string;
17
17
  blockNumber?: string | undefined;
18
18
  }, {
19
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
20
19
  address: string;
20
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
21
21
  slot: string;
22
22
  abiType: string;
23
23
  blockNumber?: string | undefined;
24
24
  }>;
25
25
  handler: (args: {
26
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
27
26
  address: string;
27
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
28
28
  slot: string;
29
29
  abiType: string;
30
30
  blockNumber?: string | undefined;
@@ -37,14 +37,14 @@ declare const _default: {
37
37
  chain: z.ZodEnum<["mainnet", "arbitrum", "avalanche", "base", "bnb", "gnosis", "sonic", "optimism", "polygon", "zksync", "linea", "unichain", "localhost"]>;
38
38
  blockNumber: z.ZodOptional<z.ZodString>;
39
39
  }, "strip", z.ZodTypeAny, {
40
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
40
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
41
41
  blockNumber?: string | undefined;
42
42
  }, {
43
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
43
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
44
44
  blockNumber?: string | undefined;
45
45
  }>;
46
46
  handler: (args: {
47
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
47
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
48
48
  blockNumber?: string | undefined;
49
49
  }) => Promise<import("../types.js").ToolResult>;
50
50
  };
@@ -55,19 +55,77 @@ declare const _default: {
55
55
  chain: z.ZodEnum<["mainnet", "arbitrum", "avalanche", "base", "bnb", "gnosis", "sonic", "optimism", "polygon", "zksync", "linea", "unichain", "localhost"]>;
56
56
  transactionHash: z.ZodString;
57
57
  traceType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["trace", "vmTrace", "stateDiff"]>>>;
58
+ useAnvil: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
59
+ summarize: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
58
60
  }, "strip", z.ZodTypeAny, {
59
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
61
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
60
62
  transactionHash: string;
61
63
  traceType: "trace" | "vmTrace" | "stateDiff";
64
+ useAnvil: boolean;
65
+ summarize: boolean;
62
66
  }, {
63
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
67
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
64
68
  transactionHash: string;
65
69
  traceType?: "trace" | "vmTrace" | "stateDiff" | undefined;
70
+ useAnvil?: boolean | undefined;
71
+ summarize?: boolean | undefined;
66
72
  }>;
67
73
  handler: (args: {
68
- chain: "mainnet" | "arbitrum" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
74
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
69
75
  transactionHash: string;
70
76
  traceType: "trace" | "vmTrace" | "stateDiff";
77
+ useAnvil: boolean;
78
+ summarize: boolean;
79
+ }) => Promise<import("../types.js").ToolResult>;
80
+ };
81
+ debug_call: {
82
+ title: string;
83
+ description: string;
84
+ schema: z.ZodObject<{
85
+ chain: z.ZodEnum<["mainnet", "arbitrum", "avalanche", "base", "bnb", "gnosis", "sonic", "optimism", "polygon", "zksync", "linea", "unichain", "localhost"]>;
86
+ to: z.ZodString;
87
+ data: z.ZodOptional<z.ZodString>;
88
+ functionAbi: z.ZodOptional<z.ZodString>;
89
+ args: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">>;
90
+ from: z.ZodOptional<z.ZodString>;
91
+ value: z.ZodOptional<z.ZodString>;
92
+ blockNumber: z.ZodOptional<z.ZodString>;
93
+ traceType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["callTracer", "prestateTracer"]>>>;
94
+ summarize: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
95
+ }, "strip", z.ZodTypeAny, {
96
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
97
+ to: string;
98
+ traceType: "callTracer" | "prestateTracer";
99
+ summarize: boolean;
100
+ data?: string | undefined;
101
+ from?: string | undefined;
102
+ value?: string | undefined;
103
+ blockNumber?: string | undefined;
104
+ args?: (string | number | boolean)[] | undefined;
105
+ functionAbi?: string | undefined;
106
+ }, {
107
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
108
+ to: string;
109
+ data?: string | undefined;
110
+ from?: string | undefined;
111
+ value?: string | undefined;
112
+ blockNumber?: string | undefined;
113
+ args?: (string | number | boolean)[] | undefined;
114
+ traceType?: "callTracer" | "prestateTracer" | undefined;
115
+ summarize?: boolean | undefined;
116
+ functionAbi?: string | undefined;
117
+ }>;
118
+ handler: (args: {
119
+ chain: "arbitrum" | "mainnet" | "avalanche" | "base" | "bnb" | "gnosis" | "sonic" | "optimism" | "polygon" | "zksync" | "linea" | "unichain" | "localhost";
120
+ to: string;
121
+ traceType: "callTracer" | "prestateTracer";
122
+ summarize: boolean;
123
+ data?: string | undefined;
124
+ from?: string | undefined;
125
+ value?: string | undefined;
126
+ blockNumber?: string | undefined;
127
+ args?: (string | number | boolean)[] | undefined;
128
+ functionAbi?: string | undefined;
71
129
  }) => Promise<import("../types.js").ToolResult>;
72
130
  };
73
131
  };
@@ -1 +1 @@
1
- {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/tools/advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKvB,wBA+PC"}
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/tools/advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUvB,wBAmaC"}