@subsquid/evm-typegen 4.5.1 → 5.0.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.
@@ -0,0 +1,3 @@
1
+ export { event, func, indexed, ContractBase } from '@subsquid/evm-abi';
2
+ export type { EventParams, EventArgumentsInput, FunctionArguments, FunctionReturn, TopicFilter, IndexedTopicFilter } from '@subsquid/evm-abi';
3
+ //# sourceMappingURL=abi.support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.support.d.ts","sourceRoot":"","sources":["../src/abi.support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAA;AACpE,YAAY,EAAC,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAC,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractBase = exports.indexed = exports.func = exports.event = void 0;
4
+ var evm_abi_1 = require("@subsquid/evm-abi");
5
+ Object.defineProperty(exports, "event", { enumerable: true, get: function () { return evm_abi_1.event; } });
6
+ Object.defineProperty(exports, "func", { enumerable: true, get: function () { return evm_abi_1.func; } });
7
+ Object.defineProperty(exports, "indexed", { enumerable: true, get: function () { return evm_abi_1.indexed; } });
8
+ Object.defineProperty(exports, "ContractBase", { enumerable: true, get: function () { return evm_abi_1.ContractBase; } });
9
+ //# sourceMappingURL=abi.support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.support.js","sourceRoot":"","sources":["../src/abi.support.ts"],"names":[],"mappings":";;;AAAA,6CAAoE;AAA5D,gGAAA,KAAK,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const CHAIN_IDS: Record<string, number>;
2
+ export declare function chainIdOption(chainId?: string): number | undefined;
3
+ //# sourceMappingURL=chainIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainIds.d.ts","sourceRoot":"","sources":["../src/chainIds.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+R5C,CAAA;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBlE"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CHAIN_IDS = void 0;
27
+ exports.chainIdOption = chainIdOption;
28
+ const fastest_levenshtein_1 = require("fastest-levenshtein");
29
+ const validator = __importStar(require("@subsquid/util-internal-commander"));
30
+ const commander_1 = require("commander");
31
+ // ref: https://docs.etherscan.io/supported-chains
32
+ exports.CHAIN_IDS = {
33
+ // Ethereum Mainnet
34
+ 'ethereum-mainnet': 1,
35
+ 'mainnet': 1,
36
+ 'ethereum': 1,
37
+ 'eth': 1,
38
+ // Sepolia Testnet
39
+ 'sepolia-testnet': 11155111,
40
+ 'sepolia': 11155111,
41
+ // Holesky Testnet
42
+ 'holesky-testnet': 17000,
43
+ 'holesky': 17000,
44
+ // Hoodi Testnet
45
+ 'hoodi-testnet': 560048,
46
+ 'hoodi': 560048,
47
+ // BNB Smart Chain Mainnet
48
+ 'bnb-smart-chain-mainnet': 56,
49
+ 'bsc': 56,
50
+ 'bnb': 56,
51
+ // BNB Smart Chain Testnet
52
+ 'bnb-smart-chain-testnet': 97,
53
+ 'bsc-testnet': 97,
54
+ // Polygon Mainnet
55
+ 'polygon-mainnet': 137,
56
+ 'polygon': 137,
57
+ 'matic': 137,
58
+ // Polygon Amoy Testnet
59
+ 'polygon-amoy-testnet': 80002,
60
+ 'amoy': 80002,
61
+ 'polygon-amoy': 80002,
62
+ // Base Mainnet
63
+ 'base-mainnet': 8453,
64
+ 'base': 8453,
65
+ // Base Sepolia Testnet
66
+ 'base-sepolia-testnet': 84532,
67
+ 'base-sepolia': 84532,
68
+ // Arbitrum One Mainnet
69
+ 'arbitrum-one-mainnet': 42161,
70
+ 'arbitrum': 42161,
71
+ 'arb': 42161,
72
+ 'arbitrum-one': 42161,
73
+ // Arbitrum Nova Mainnet
74
+ 'arbitrum-nova-mainnet': 42170,
75
+ 'arbitrum-nova': 42170,
76
+ 'nova': 42170,
77
+ // Arbitrum Sepolia Testnet
78
+ 'arbitrum-sepolia-testnet': 421614,
79
+ 'arbitrum-sepolia': 421614,
80
+ 'arb-sepolia': 421614,
81
+ // Linea Mainnet
82
+ 'linea-mainnet': 59144,
83
+ 'linea': 59144,
84
+ // Linea Sepolia Testnet
85
+ 'linea-sepolia-testnet': 59141,
86
+ 'linea-sepolia': 59141,
87
+ // Blast Mainnet
88
+ 'blast-mainnet': 81457,
89
+ 'blast': 81457,
90
+ // Blast Sepolia Testnet
91
+ 'blast-sepolia-testnet': 168587773,
92
+ 'blast-sepolia': 168587773,
93
+ // OP Mainnet
94
+ 'op-mainnet': 10,
95
+ 'optimism': 10,
96
+ 'op': 10,
97
+ // OP Sepolia Testnet
98
+ 'op-sepolia-testnet': 11155420,
99
+ 'op-sepolia': 11155420,
100
+ 'optimism-sepolia': 11155420,
101
+ // Avalanche C-Chain
102
+ 'avalanche-c-chain': 43114,
103
+ 'avalanche': 43114,
104
+ 'avax': 43114,
105
+ // Avalanche Fuji Testnet
106
+ 'avalanche-fuji-testnet': 43113,
107
+ 'fuji': 43113,
108
+ 'avalanche-fuji': 43113,
109
+ // BitTorrent Chain Mainnet
110
+ 'bittorrent-chain-mainnet': 199,
111
+ 'bittorrent': 199,
112
+ 'btt': 199,
113
+ // BitTorrent Chain Testnet
114
+ 'bittorrent-chain-testnet': 1029,
115
+ 'bittorrent-testnet': 1029,
116
+ 'btt-testnet': 1029,
117
+ // Celo Mainnet
118
+ 'celo-mainnet': 42220,
119
+ 'celo': 42220,
120
+ // Celo Sepolia Testnet
121
+ 'celo-sepolia-testnet': 11142220,
122
+ 'celo-sepolia': 11142220,
123
+ // Fraxtal Mainnet
124
+ 'fraxtal-mainnet': 252,
125
+ 'fraxtal': 252,
126
+ // Fraxtal Hoodi Testnet
127
+ 'fraxtal-hoodi-testnet': 2523,
128
+ 'fraxtal-hoodi': 2523,
129
+ // Gnosis
130
+ 'gnosis': 100,
131
+ 'gno': 100,
132
+ 'xdai': 100,
133
+ // Mantle Mainnet
134
+ 'mantle-mainnet': 5000,
135
+ 'mantle': 5000,
136
+ // Mantle Sepolia Testnet
137
+ 'mantle-sepolia-testnet': 5003,
138
+ 'mantle-sepolia': 5003,
139
+ // Memecore Mainnet
140
+ 'memecore-mainnet': 4352,
141
+ 'memecore': 4352,
142
+ // Memecore Testnet
143
+ 'memecore-testnet': 43521,
144
+ // Moonbeam Mainnet
145
+ 'moonbeam-mainnet': 1284,
146
+ 'moonbeam': 1284,
147
+ // Moonriver Mainnet
148
+ 'moonriver-mainnet': 1285,
149
+ 'moonriver': 1285,
150
+ // Moonbase Alpha Testnet
151
+ 'moonbase-alpha-testnet': 1287,
152
+ 'moonbase': 1287,
153
+ 'moonbase-alpha': 1287,
154
+ // opBNB Mainnet
155
+ 'opbnb-mainnet': 204,
156
+ 'opbnb': 204,
157
+ // opBNB Testnet
158
+ 'opbnb-testnet': 5611,
159
+ // Scroll Mainnet
160
+ 'scroll-mainnet': 534352,
161
+ 'scroll': 534352,
162
+ // Scroll Sepolia Testnet
163
+ 'scroll-sepolia-testnet': 534351,
164
+ 'scroll-sepolia': 534351,
165
+ // Taiko Mainnet
166
+ 'taiko-mainnet': 167000,
167
+ 'taiko': 167000,
168
+ // Taiko Hoodi
169
+ 'taiko-hoodi': 167013,
170
+ // XDC Mainnet
171
+ 'xdc-mainnet': 50,
172
+ 'xdc': 50,
173
+ // XDC Apothem Testnet
174
+ 'xdc-apothem-testnet': 51,
175
+ 'xdc-apothem': 51,
176
+ 'apothem': 51,
177
+ // ApeChain Mainnet
178
+ 'apechain-mainnet': 33139,
179
+ 'apechain': 33139,
180
+ 'ape': 33139,
181
+ // ApeChain Curtis Testnet
182
+ 'apechain-curtis-testnet': 33111,
183
+ 'apechain-curtis': 33111,
184
+ 'curtis': 33111,
185
+ // World Mainnet
186
+ 'world-mainnet': 480,
187
+ 'world': 480,
188
+ // World Sepolia Testnet
189
+ 'world-sepolia-testnet': 4801,
190
+ 'world-sepolia': 4801,
191
+ // Sonic Mainnet
192
+ 'sonic-mainnet': 146,
193
+ 'sonic': 146,
194
+ // Sonic Testnet
195
+ 'sonic-testnet': 14601,
196
+ // Unichain Mainnet
197
+ 'unichain-mainnet': 130,
198
+ 'unichain': 130,
199
+ // Unichain Sepolia Testnet
200
+ 'unichain-sepolia-testnet': 1301,
201
+ 'unichain-sepolia': 1301,
202
+ // Abstract Mainnet
203
+ 'abstract-mainnet': 2741,
204
+ 'abstract': 2741,
205
+ // Abstract Sepolia Testnet
206
+ 'abstract-sepolia-testnet': 11124,
207
+ 'abstract-sepolia': 11124,
208
+ // Berachain Mainnet
209
+ 'berachain-mainnet': 80094,
210
+ 'berachain': 80094,
211
+ 'bera': 80094,
212
+ // Berachain Bepolia Testnet
213
+ 'berachain-bepolia-testnet': 80069,
214
+ 'berachain-bepolia': 80069,
215
+ 'bepolia': 80069,
216
+ // Swellchain Mainnet
217
+ 'swellchain-mainnet': 1923,
218
+ 'swellchain': 1923,
219
+ 'swell': 1923,
220
+ // Swellchain Testnet
221
+ 'swellchain-testnet': 1924,
222
+ 'swell-testnet': 1924,
223
+ // Monad Mainnet
224
+ 'monad-mainnet': 143,
225
+ 'monad': 143,
226
+ // Monad Testnet
227
+ 'monad-testnet': 10143,
228
+ // HyperEVM Mainnet
229
+ 'hyperevm-mainnet': 999,
230
+ 'hyperevm': 999,
231
+ // Katana Mainnet
232
+ 'katana-mainnet': 747474,
233
+ 'katana': 747474,
234
+ // Katana Bokuto
235
+ 'katana-bokuto': 737373,
236
+ 'bokuto': 737373,
237
+ // Sei Mainnet
238
+ 'sei-mainnet': 1329,
239
+ 'sei': 1329,
240
+ // Sei Testnet
241
+ 'sei-testnet': 1328,
242
+ // Stable Mainnet
243
+ 'stable-mainnet': 988,
244
+ 'stable': 988,
245
+ // Stable Testnet
246
+ 'stable-testnet': 2201,
247
+ // Plasma Mainnet
248
+ 'plasma-mainnet': 9745,
249
+ 'plasma': 9745,
250
+ // Plasma Testnet
251
+ 'plasma-testnet': 9746,
252
+ };
253
+ function chainIdOption(chainId) {
254
+ if (chainId == null) {
255
+ return undefined;
256
+ }
257
+ // @ts-expect-error - chainId is a string
258
+ if (!isNaN(chainId)) {
259
+ return validator.positiveInt(chainId);
260
+ }
261
+ const normalizedChainId = chainId.toLowerCase();
262
+ if (normalizedChainId in exports.CHAIN_IDS) {
263
+ return exports.CHAIN_IDS[normalizedChainId];
264
+ }
265
+ const suggestion = (0, fastest_levenshtein_1.closest)(normalizedChainId, Object.keys(exports.CHAIN_IDS));
266
+ throw new commander_1.InvalidOptionArgumentError(`Unknown chain: "${chainId}". Did you mean "${suggestion}"? Alternatively, provide a numeric chain ID.`);
267
+ }
268
+ //# sourceMappingURL=chainIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainIds.js","sourceRoot":"","sources":["../src/chainIds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { Abi, AbiParameter } from 'abitype';
2
+ export interface ContractDef {
3
+ events: EventDef[];
4
+ functions: FunctionDef[];
5
+ }
6
+ export interface DocDef {
7
+ notice?: string;
8
+ dev?: string;
9
+ params?: Record<string, string>;
10
+ returns?: Record<string, string>;
11
+ }
12
+ /** NatSpec documentation extracted from a compilation artifact's userdoc/devdoc fields. */
13
+ export interface NatSpec {
14
+ userdoc?: {
15
+ methods?: Record<string, {
16
+ notice?: string;
17
+ }>;
18
+ events?: Record<string, {
19
+ notice?: string;
20
+ }>;
21
+ };
22
+ devdoc?: {
23
+ methods?: Record<string, {
24
+ details?: string;
25
+ params?: Record<string, string>;
26
+ returns?: Record<string, string>;
27
+ }>;
28
+ events?: Record<string, {
29
+ details?: string;
30
+ params?: Record<string, string>;
31
+ }>;
32
+ };
33
+ }
34
+ export interface EventDef {
35
+ name: string;
36
+ signature: string;
37
+ topic: string;
38
+ inputs: FieldDef[];
39
+ key: string;
40
+ typeName: string;
41
+ docs?: DocDef;
42
+ }
43
+ export interface FunctionDef {
44
+ name: string;
45
+ signature: string;
46
+ selector: string;
47
+ inputs: FieldDef[];
48
+ outputs: FieldDef[];
49
+ key: string;
50
+ paramsTypeName: string;
51
+ returnTypeName: string;
52
+ docs?: DocDef;
53
+ }
54
+ export interface FieldDef {
55
+ name: string;
56
+ type: TypeDef;
57
+ indexed?: boolean;
58
+ doc?: string;
59
+ }
60
+ export type TypeDef = {
61
+ kind: 'primitive';
62
+ name: string;
63
+ } | {
64
+ kind: 'array';
65
+ item: TypeDef;
66
+ } | {
67
+ kind: 'fixedArray';
68
+ item: TypeDef;
69
+ size: number;
70
+ } | {
71
+ kind: 'tuple';
72
+ fields: FieldDef[];
73
+ };
74
+ export declare function describe(abi: Abi, natspec?: NatSpec): ContractDef;
75
+ export declare function canonicalType(p: AbiParameter): string;
76
+ //# sourceMappingURL=description.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.d.ts","sourceRoot":"","sources":["../src/description.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.describe = describe;
4
+ exports.canonicalType = canonicalType;
5
+ const evm_abi_1 = require("@subsquid/evm-abi");
6
+ function describe(abi, natspec) {
7
+ const rawEvents = abi.filter((x) => x.type === 'event');
8
+ const rawFunctions = abi.filter((x) => x.type === 'function');
9
+ const eventSuffix = overloadSuffixer(rawEvents);
10
+ const functionSuffix = overloadSuffixer(rawFunctions);
11
+ const events = rawEvents.map((e) => {
12
+ const signature = eventSignature(e);
13
+ const docs = buildEventDocs(signature, natspec);
14
+ const inputs = e.inputs.map((p, i) => toFieldDef(p, i, true));
15
+ annotateParamDocs(inputs, docs?.params);
16
+ return {
17
+ name: e.name,
18
+ signature,
19
+ topic: `0x${(0, evm_abi_1.keccak256)(signature).toString('hex')}`,
20
+ inputs,
21
+ key: eventSuffix(e, e.name),
22
+ typeName: eventSuffix(e, `${capitalize(e.name)}EventArgs`),
23
+ docs,
24
+ };
25
+ });
26
+ const functions = rawFunctions.map((f) => {
27
+ const signature = fnSignature(f);
28
+ const docs = buildFunctionDocs(signature, natspec);
29
+ const inputs = f.inputs.map((p, i) => toFieldDef(p, i, false));
30
+ const outputs = (f.outputs ?? []).map((p, i) => toFieldDef(p, i, false));
31
+ annotateParamDocs(inputs, docs?.params);
32
+ annotateReturnDocs(outputs, docs?.returns);
33
+ return {
34
+ name: f.name,
35
+ signature,
36
+ selector: `0x${(0, evm_abi_1.keccak256)(signature).slice(0, 4).toString('hex')}`,
37
+ inputs,
38
+ outputs,
39
+ key: functionSuffix(f, f.name),
40
+ paramsTypeName: functionSuffix(f, `${capitalize(f.name)}Params`),
41
+ returnTypeName: functionSuffix(f, `${capitalize(f.name)}Return`),
42
+ docs,
43
+ };
44
+ });
45
+ return { events, functions };
46
+ }
47
+ function buildEventDocs(signature, natspec) {
48
+ const notice = natspec?.userdoc?.events?.[signature]?.notice;
49
+ const devEntry = natspec?.devdoc?.events?.[signature];
50
+ if (!notice && !devEntry)
51
+ return undefined;
52
+ return filterEmptyDoc({
53
+ notice,
54
+ dev: devEntry?.details,
55
+ params: devEntry?.params,
56
+ });
57
+ }
58
+ function buildFunctionDocs(signature, natspec) {
59
+ const notice = natspec?.userdoc?.methods?.[signature]?.notice;
60
+ const devEntry = natspec?.devdoc?.methods?.[signature];
61
+ if (!notice && !devEntry)
62
+ return undefined;
63
+ return filterEmptyDoc({
64
+ notice,
65
+ dev: devEntry?.details,
66
+ params: devEntry?.params,
67
+ returns: devEntry?.returns,
68
+ });
69
+ }
70
+ function filterEmptyDoc(doc) {
71
+ const hasContent = doc.notice != null ||
72
+ doc.dev != null ||
73
+ (doc.params != null && Object.keys(doc.params).length > 0) ||
74
+ (doc.returns != null && Object.keys(doc.returns).length > 0);
75
+ return hasContent ? doc : undefined;
76
+ }
77
+ function annotateParamDocs(fields, params) {
78
+ if (!params)
79
+ return;
80
+ for (const field of fields) {
81
+ const doc = params[field.name];
82
+ if (doc)
83
+ field.doc = doc;
84
+ }
85
+ }
86
+ function annotateReturnDocs(fields, returns) {
87
+ if (!returns)
88
+ return;
89
+ for (let i = 0; i < fields.length; i++) {
90
+ const field = fields[i];
91
+ const doc = returns[field.name] ?? returns[`_${i}`];
92
+ if (doc)
93
+ field.doc = doc;
94
+ }
95
+ }
96
+ function overloadSuffixer(items) {
97
+ const counts = new Map();
98
+ const indices = new Map();
99
+ for (const item of items) {
100
+ const seen = counts.get(item.name) ?? 0;
101
+ indices.set(item, seen);
102
+ counts.set(item.name, seen + 1);
103
+ }
104
+ return (item, base) => {
105
+ if ((counts.get(item.name) ?? 1) <= 1)
106
+ return base;
107
+ const idx = indices.get(item);
108
+ return idx === 0 ? base : `${base}_${idx}`;
109
+ };
110
+ }
111
+ function toFieldDef(p, index, isEventInput) {
112
+ const field = {
113
+ name: p.name || `_${index}`,
114
+ type: toTypeDef(p),
115
+ };
116
+ if (isEventInput && p.indexed)
117
+ field.indexed = true;
118
+ return field;
119
+ }
120
+ function toTypeDef(p) {
121
+ const fixed = p.type.match(/\[(\d+)\]$/);
122
+ if (fixed) {
123
+ return { kind: 'fixedArray', size: Number(fixed[1]), item: toTypeDef(stripOuterArray(p)) };
124
+ }
125
+ if (p.type.endsWith('[]')) {
126
+ return { kind: 'array', item: toTypeDef(stripOuterArray(p)) };
127
+ }
128
+ if (p.type.startsWith('tuple')) {
129
+ const components = (p.components || []);
130
+ return {
131
+ kind: 'tuple',
132
+ fields: components.map((c, i) => toFieldDef(c, i, false)),
133
+ };
134
+ }
135
+ return { kind: 'primitive', name: p.type };
136
+ }
137
+ function stripOuterArray(p) {
138
+ return { ...p, type: p.type.replace(/\[\d*\]$/, '') };
139
+ }
140
+ function canonicalType(p) {
141
+ if (!p.type.startsWith('tuple'))
142
+ return p.type;
143
+ const arrayBrackets = p.type.slice(5);
144
+ const components = p.components;
145
+ return `(${components.map(canonicalType).join(',')})${arrayBrackets}`;
146
+ }
147
+ function eventSignature(e) {
148
+ return `${e.name}(${e.inputs.map(canonicalType).join(',')})`;
149
+ }
150
+ function fnSignature(f) {
151
+ return `${f.name}(${f.inputs.map(canonicalType).join(',')})`;
152
+ }
153
+ function capitalize(s) {
154
+ return s.charAt(0).toUpperCase() + s.slice(1);
155
+ }
156
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.js","sourceRoot":"","sources":["../src/description.ts"],"names":[],"mappings":"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"}