@avaprotocol/protocols 0.5.0 → 0.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @avaprotocol/protocols
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f81f84b: Per-chain token subpath exports + new ERC-20 / Chainlink ABI fragments and event topics.
8
+
9
+ **Subpath exports.** Each chain's token catalog is now importable on its own — consumers that only need one chain's tokens get just that file in their bundle instead of all five chains' worth via the root `Tokens` namespace:
10
+
11
+ ```ts
12
+ import { tokens, chainId } from "@avaprotocol/protocols/tokens/sepolia";
13
+ const usdc = tokens.USDC?.address;
14
+ ```
15
+
16
+ Available subpaths: `./tokens/ethereum`, `./tokens/sepolia`, `./tokens/base`, `./tokens/base-sepolia`, `./tokens/bnb-mainnet`. Each module exports `chainId` and a frozen, symbol-keyed `tokens` map of the existing `TokenChainEntry` shape.
17
+
18
+ The root `import { Tokens } from "@avaprotocol/protocols"` keeps working unchanged — the per-chain modules are additive.
19
+
20
+ **`sideEffects: false`** declared in `package.json` so bundlers can tree-shake unused protocol modules.
21
+
22
+ **ERC-20 additions** (`Protocols.erc20`):
23
+
24
+ - `transferAbi` — single-fragment ABI for `transfer(address,uint256)`
25
+ - `symbolAbi` — single-fragment ABI for `symbol()`
26
+ - `decimalsAbi` — single-fragment ABI for `decimals()`
27
+ - `transferEventAbi` — single-fragment event ABI for `Transfer(address indexed, address indexed, uint256)`
28
+ - `eventTopics.Transfer` — pre-computed keccak256 of the canonical Transfer event signature
29
+
30
+ **Chainlink additions** (`Protocols.chainlink`):
31
+
32
+ - `answerUpdatedEventAbi` — single-fragment event ABI for `AnswerUpdated(int256 indexed, uint256 indexed, uint256)`
33
+ - `eventTopics.AnswerUpdated` — pre-computed keccak256 of the canonical AnswerUpdated event signature
34
+
35
+ These let downstream consumers (templates, SDK tests, summarizers) drop hand-rolled ABI fragments and topic hashes that were re-derived across repos.
36
+
3
37
  ## 0.5.0
4
38
 
5
39
  ### Minor Changes
package/dist/index.cjs CHANGED
@@ -318,12 +318,29 @@ var btcUsdFeed = {
318
318
  var bnbUsdFeed = {
319
319
  [Chains.BnbMainnet]: "0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE"
320
320
  };
321
+ var answerUpdatedEventAbi = Object.freeze([
322
+ {
323
+ anonymous: false,
324
+ inputs: [
325
+ { indexed: true, internalType: "int256", name: "current", type: "int256" },
326
+ { indexed: true, internalType: "uint256", name: "roundId", type: "uint256" },
327
+ { indexed: false, internalType: "uint256", name: "updatedAt", type: "uint256" }
328
+ ],
329
+ name: "AnswerUpdated",
330
+ type: "event"
331
+ }
332
+ ]);
333
+ var eventTopics2 = Object.freeze({
334
+ AnswerUpdated: "0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f"
335
+ });
321
336
  var chainlink = Object.freeze({
322
337
  ethUsdFeed,
323
338
  btcUsdFeed,
324
339
  bnbUsdFeed,
325
340
  /** Shared AggregatorV3 ABI — works for any Chainlink feed. */
326
- aggregatorV3Abi
341
+ aggregatorV3Abi,
342
+ answerUpdatedEventAbi,
343
+ eventTopics: eventTopics2
327
344
  });
328
345
 
329
346
  // src/protocols/compound-v3.ts
@@ -336,19 +353,70 @@ var compoundV3 = Object.freeze({
336
353
  });
337
354
 
338
355
  // src/protocols/erc20.ts
356
+ var approveAbi = Object.freeze([
357
+ {
358
+ inputs: [
359
+ { internalType: "address", name: "spender", type: "address" },
360
+ { internalType: "uint256", name: "amount", type: "uint256" }
361
+ ],
362
+ name: "approve",
363
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
364
+ stateMutability: "nonpayable",
365
+ type: "function"
366
+ }
367
+ ]);
368
+ var transferAbi = Object.freeze([
369
+ {
370
+ inputs: [
371
+ { internalType: "address", name: "to", type: "address" },
372
+ { internalType: "uint256", name: "amount", type: "uint256" }
373
+ ],
374
+ name: "transfer",
375
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
376
+ stateMutability: "nonpayable",
377
+ type: "function"
378
+ }
379
+ ]);
380
+ var symbolAbi = Object.freeze([
381
+ {
382
+ inputs: [],
383
+ name: "symbol",
384
+ outputs: [{ internalType: "string", name: "", type: "string" }],
385
+ stateMutability: "view",
386
+ type: "function"
387
+ }
388
+ ]);
389
+ var decimalsAbi = Object.freeze([
390
+ {
391
+ inputs: [],
392
+ name: "decimals",
393
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
394
+ stateMutability: "view",
395
+ type: "function"
396
+ }
397
+ ]);
398
+ var transferEventAbi = Object.freeze([
399
+ {
400
+ anonymous: false,
401
+ inputs: [
402
+ { indexed: true, internalType: "address", name: "from", type: "address" },
403
+ { indexed: true, internalType: "address", name: "to", type: "address" },
404
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" }
405
+ ],
406
+ name: "Transfer",
407
+ type: "event"
408
+ }
409
+ ]);
410
+ var eventTopics3 = Object.freeze({
411
+ Transfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
412
+ });
339
413
  var erc20 = Object.freeze({
340
- approveAbi: Object.freeze([
341
- {
342
- inputs: [
343
- { internalType: "address", name: "spender", type: "address" },
344
- { internalType: "uint256", name: "amount", type: "uint256" }
345
- ],
346
- name: "approve",
347
- outputs: [{ internalType: "bool", name: "", type: "bool" }],
348
- stateMutability: "nonpayable",
349
- type: "function"
350
- }
351
- ])
414
+ approveAbi,
415
+ transferAbi,
416
+ symbolAbi,
417
+ decimalsAbi,
418
+ transferEventAbi,
419
+ eventTopics: eventTopics3
352
420
  });
353
421
 
354
422
  // src/protocols/ethena.ts
@@ -2064,11 +2132,13 @@ var CHAIN_DATA = Object.freeze([
2064
2132
  [Chains.BnbMainnet, bnb_mainnet_default]
2065
2133
  ]);
2066
2134
  function buildTokensFromData() {
2067
- const merged = {};
2135
+ const merged = /* @__PURE__ */ Object.create(null);
2068
2136
  for (const [chainId, rows] of CHAIN_DATA) {
2069
2137
  for (const row of rows) {
2070
2138
  const { symbol, ...entry } = row;
2071
- if (!merged[symbol]) merged[symbol] = {};
2139
+ if (!Object.prototype.hasOwnProperty.call(merged, symbol)) {
2140
+ merged[symbol] = /* @__PURE__ */ Object.create(null);
2141
+ }
2072
2142
  if (merged[symbol][chainId] !== void 0) {
2073
2143
  throw new Error(
2074
2144
  `[@avaprotocol/protocols] duplicate token entry for symbol="${symbol}" on chainId=${chainId}. Each (symbol, chainId) pair must be unique across src/tokens/data/*.json \u2014 remove the duplicate row.`
package/dist/index.js CHANGED
@@ -272,12 +272,29 @@ var btcUsdFeed = {
272
272
  var bnbUsdFeed = {
273
273
  [Chains.BnbMainnet]: "0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE"
274
274
  };
275
+ var answerUpdatedEventAbi = Object.freeze([
276
+ {
277
+ anonymous: false,
278
+ inputs: [
279
+ { indexed: true, internalType: "int256", name: "current", type: "int256" },
280
+ { indexed: true, internalType: "uint256", name: "roundId", type: "uint256" },
281
+ { indexed: false, internalType: "uint256", name: "updatedAt", type: "uint256" }
282
+ ],
283
+ name: "AnswerUpdated",
284
+ type: "event"
285
+ }
286
+ ]);
287
+ var eventTopics2 = Object.freeze({
288
+ AnswerUpdated: "0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f"
289
+ });
275
290
  var chainlink = Object.freeze({
276
291
  ethUsdFeed,
277
292
  btcUsdFeed,
278
293
  bnbUsdFeed,
279
294
  /** Shared AggregatorV3 ABI — works for any Chainlink feed. */
280
- aggregatorV3Abi
295
+ aggregatorV3Abi,
296
+ answerUpdatedEventAbi,
297
+ eventTopics: eventTopics2
281
298
  });
282
299
 
283
300
  // src/protocols/compound-v3.ts
@@ -290,19 +307,70 @@ var compoundV3 = Object.freeze({
290
307
  });
291
308
 
292
309
  // src/protocols/erc20.ts
310
+ var approveAbi = Object.freeze([
311
+ {
312
+ inputs: [
313
+ { internalType: "address", name: "spender", type: "address" },
314
+ { internalType: "uint256", name: "amount", type: "uint256" }
315
+ ],
316
+ name: "approve",
317
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
318
+ stateMutability: "nonpayable",
319
+ type: "function"
320
+ }
321
+ ]);
322
+ var transferAbi = Object.freeze([
323
+ {
324
+ inputs: [
325
+ { internalType: "address", name: "to", type: "address" },
326
+ { internalType: "uint256", name: "amount", type: "uint256" }
327
+ ],
328
+ name: "transfer",
329
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
330
+ stateMutability: "nonpayable",
331
+ type: "function"
332
+ }
333
+ ]);
334
+ var symbolAbi = Object.freeze([
335
+ {
336
+ inputs: [],
337
+ name: "symbol",
338
+ outputs: [{ internalType: "string", name: "", type: "string" }],
339
+ stateMutability: "view",
340
+ type: "function"
341
+ }
342
+ ]);
343
+ var decimalsAbi = Object.freeze([
344
+ {
345
+ inputs: [],
346
+ name: "decimals",
347
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
348
+ stateMutability: "view",
349
+ type: "function"
350
+ }
351
+ ]);
352
+ var transferEventAbi = Object.freeze([
353
+ {
354
+ anonymous: false,
355
+ inputs: [
356
+ { indexed: true, internalType: "address", name: "from", type: "address" },
357
+ { indexed: true, internalType: "address", name: "to", type: "address" },
358
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" }
359
+ ],
360
+ name: "Transfer",
361
+ type: "event"
362
+ }
363
+ ]);
364
+ var eventTopics3 = Object.freeze({
365
+ Transfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
366
+ });
293
367
  var erc20 = Object.freeze({
294
- approveAbi: Object.freeze([
295
- {
296
- inputs: [
297
- { internalType: "address", name: "spender", type: "address" },
298
- { internalType: "uint256", name: "amount", type: "uint256" }
299
- ],
300
- name: "approve",
301
- outputs: [{ internalType: "bool", name: "", type: "bool" }],
302
- stateMutability: "nonpayable",
303
- type: "function"
304
- }
305
- ])
368
+ approveAbi,
369
+ transferAbi,
370
+ symbolAbi,
371
+ decimalsAbi,
372
+ transferEventAbi,
373
+ eventTopics: eventTopics3
306
374
  });
307
375
 
308
376
  // src/protocols/ethena.ts
@@ -2018,11 +2086,13 @@ var CHAIN_DATA = Object.freeze([
2018
2086
  [Chains.BnbMainnet, bnb_mainnet_default]
2019
2087
  ]);
2020
2088
  function buildTokensFromData() {
2021
- const merged = {};
2089
+ const merged = /* @__PURE__ */ Object.create(null);
2022
2090
  for (const [chainId, rows] of CHAIN_DATA) {
2023
2091
  for (const row of rows) {
2024
2092
  const { symbol, ...entry } = row;
2025
- if (!merged[symbol]) merged[symbol] = {};
2093
+ if (!Object.prototype.hasOwnProperty.call(merged, symbol)) {
2094
+ merged[symbol] = /* @__PURE__ */ Object.create(null);
2095
+ }
2026
2096
  if (merged[symbol][chainId] !== void 0) {
2027
2097
  throw new Error(
2028
2098
  `[@avaprotocol/protocols] duplicate token entry for symbol="${symbol}" on chainId=${chainId}. Each (symbol, chainId) pair must be unique across src/tokens/data/*.json \u2014 remove the duplicate row.`
@@ -1,8 +1,13 @@
1
+ import { type AbiFragment } from "./types";
1
2
  export declare const chainlink: Readonly<{
2
3
  ethUsdFeed: Partial<Record<number, `0x${string}`>>;
3
4
  btcUsdFeed: Partial<Record<number, `0x${string}`>>;
4
5
  bnbUsdFeed: Partial<Record<number, `0x${string}`>>;
5
6
  /** Shared AggregatorV3 ABI — works for any Chainlink feed. */
6
- aggregatorV3Abi: readonly import("./types").AbiFragment[];
7
+ aggregatorV3Abi: readonly AbiFragment[];
8
+ answerUpdatedEventAbi: readonly AbiFragment[];
9
+ eventTopics: Readonly<{
10
+ readonly AnswerUpdated: "0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f";
11
+ }>;
7
12
  }>;
8
13
  //# sourceMappingURL=chainlink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainlink.d.ts","sourceRoot":"","sources":["../../src/protocols/chainlink.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,SAAS;;;;IAIpB,8DAA8D;;EAE9D,CAAC"}
1
+ {"version":3,"file":"chainlink.d.ts","sourceRoot":"","sources":["../../src/protocols/chainlink.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,SAAS,CAAC;AAgDhE,eAAO,MAAM,SAAS;;;;IAIpB,8DAA8D;;;;;;EAI9D,CAAC"}
@@ -1,5 +1,12 @@
1
1
  import { type AbiFragment } from "./types";
2
2
  export declare const erc20: Readonly<{
3
3
  approveAbi: readonly AbiFragment[];
4
+ transferAbi: readonly AbiFragment[];
5
+ symbolAbi: readonly AbiFragment[];
6
+ decimalsAbi: readonly AbiFragment[];
7
+ transferEventAbi: readonly AbiFragment[];
8
+ eventTopics: Readonly<{
9
+ readonly Transfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
10
+ }>;
4
11
  }>;
5
12
  //# sourceMappingURL=erc20.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../src/protocols/erc20.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,KAAK;gBAYV,SAAS,WAAW,EAAE;EAC5B,CAAC"}
1
+ {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../src/protocols/erc20.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAyE3C,eAAO,MAAM,KAAK;;;;;;;;;EAOhB,CAAC"}
@@ -60,12 +60,23 @@ export declare const Protocols: Readonly<{
60
60
  btcUsdFeed: Partial<Record<number, `0x${string}`>>;
61
61
  bnbUsdFeed: Partial<Record<number, `0x${string}`>>;
62
62
  aggregatorV3Abi: readonly import("./types").AbiFragment[];
63
+ answerUpdatedEventAbi: readonly import("./types").AbiFragment[];
64
+ eventTopics: Readonly<{
65
+ readonly AnswerUpdated: "0x0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f";
66
+ }>;
63
67
  }>;
64
68
  compoundV3: Readonly<{
65
69
  cometUsdc: Partial<Record<number, `0x${string}`>>;
66
70
  }>;
67
71
  erc20: Readonly<{
68
72
  approveAbi: readonly import("./types").AbiFragment[];
73
+ transferAbi: readonly import("./types").AbiFragment[];
74
+ symbolAbi: readonly import("./types").AbiFragment[];
75
+ decimalsAbi: readonly import("./types").AbiFragment[];
76
+ transferEventAbi: readonly import("./types").AbiFragment[];
77
+ eventTopics: Readonly<{
78
+ readonly Transfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
79
+ }>;
69
80
  }>;
70
81
  ethena: Readonly<{
71
82
  susde: Partial<Record<number, `0x${string}`>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/protocols/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAkB3D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/protocols/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAkB3D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBpB,CAAC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/tokens/base-sepolia.ts
21
+ var base_sepolia_exports = {};
22
+ __export(base_sepolia_exports, {
23
+ chainId: () => chainId,
24
+ default: () => base_sepolia_default2,
25
+ tokens: () => tokens
26
+ });
27
+ module.exports = __toCommonJS(base_sepolia_exports);
28
+
29
+ // src/tokens/data/base-sepolia.json
30
+ var base_sepolia_default = [
31
+ {
32
+ symbol: "LINK",
33
+ address: "0xE4aB69C077896252FAFBD49EFD26B5D171A32410",
34
+ decimals: 18,
35
+ name: "Chainlink"
36
+ },
37
+ {
38
+ symbol: "USDC",
39
+ address: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
40
+ decimals: 6,
41
+ name: "USD Coin"
42
+ },
43
+ {
44
+ symbol: "USDT",
45
+ address: "0xCE8565457Cca0fC7542608A2c78610Ed7bC66C8C",
46
+ decimals: 6,
47
+ name: "Tether USD"
48
+ },
49
+ {
50
+ symbol: "WETH",
51
+ address: "0x4200000000000000000000000000000000000006",
52
+ decimals: 18,
53
+ name: "Wrapped Ether"
54
+ }
55
+ ];
56
+
57
+ // src/chains.ts
58
+ var Chains = Object.freeze({
59
+ EthereumMainnet: 1,
60
+ Sepolia: 11155111,
61
+ Holesky: 17e3,
62
+ BaseMainnet: 8453,
63
+ BaseSepolia: 84532,
64
+ BnbMainnet: 56
65
+ });
66
+
67
+ // src/tokens/per-chain.ts
68
+ function buildChainTokenMap(rows, sourceLabel) {
69
+ const out = /* @__PURE__ */ Object.create(null);
70
+ for (const row of rows) {
71
+ const { symbol, ...entry } = row;
72
+ if (Object.prototype.hasOwnProperty.call(out, symbol)) {
73
+ throw new Error(
74
+ `[@avaprotocol/protocols] duplicate symbol "${symbol}" in ${sourceLabel} \u2014 each symbol must appear once per chain file.`
75
+ );
76
+ }
77
+ out[symbol] = Object.freeze(entry);
78
+ }
79
+ return Object.freeze(out);
80
+ }
81
+
82
+ // src/tokens/base-sepolia.ts
83
+ var chainId = Chains.BaseSepolia;
84
+ var tokens = buildChainTokenMap(
85
+ base_sepolia_default,
86
+ "src/tokens/data/base-sepolia.json"
87
+ );
88
+ var base_sepolia_default2 = tokens;
89
+ // Annotate the CommonJS export names for ESM import in node:
90
+ 0 && (module.exports = {
91
+ chainId,
92
+ tokens
93
+ });
@@ -0,0 +1,5 @@
1
+ import type { TokenChainEntry } from "./types";
2
+ export declare const chainId: 84532;
3
+ export declare const tokens: Readonly<Record<string, TokenChainEntry>>;
4
+ export default tokens;
5
+ //# sourceMappingURL=base-sepolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-sepolia.d.ts","sourceRoot":"","sources":["../../src/tokens/base-sepolia.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,OAAO,OAAqB,CAAC;AAE1C,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAG5D,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,65 @@
1
+ // src/tokens/data/base-sepolia.json
2
+ var base_sepolia_default = [
3
+ {
4
+ symbol: "LINK",
5
+ address: "0xE4aB69C077896252FAFBD49EFD26B5D171A32410",
6
+ decimals: 18,
7
+ name: "Chainlink"
8
+ },
9
+ {
10
+ symbol: "USDC",
11
+ address: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
12
+ decimals: 6,
13
+ name: "USD Coin"
14
+ },
15
+ {
16
+ symbol: "USDT",
17
+ address: "0xCE8565457Cca0fC7542608A2c78610Ed7bC66C8C",
18
+ decimals: 6,
19
+ name: "Tether USD"
20
+ },
21
+ {
22
+ symbol: "WETH",
23
+ address: "0x4200000000000000000000000000000000000006",
24
+ decimals: 18,
25
+ name: "Wrapped Ether"
26
+ }
27
+ ];
28
+
29
+ // src/chains.ts
30
+ var Chains = Object.freeze({
31
+ EthereumMainnet: 1,
32
+ Sepolia: 11155111,
33
+ Holesky: 17e3,
34
+ BaseMainnet: 8453,
35
+ BaseSepolia: 84532,
36
+ BnbMainnet: 56
37
+ });
38
+
39
+ // src/tokens/per-chain.ts
40
+ function buildChainTokenMap(rows, sourceLabel) {
41
+ const out = /* @__PURE__ */ Object.create(null);
42
+ for (const row of rows) {
43
+ const { symbol, ...entry } = row;
44
+ if (Object.prototype.hasOwnProperty.call(out, symbol)) {
45
+ throw new Error(
46
+ `[@avaprotocol/protocols] duplicate symbol "${symbol}" in ${sourceLabel} \u2014 each symbol must appear once per chain file.`
47
+ );
48
+ }
49
+ out[symbol] = Object.freeze(entry);
50
+ }
51
+ return Object.freeze(out);
52
+ }
53
+
54
+ // src/tokens/base-sepolia.ts
55
+ var chainId = Chains.BaseSepolia;
56
+ var tokens = buildChainTokenMap(
57
+ base_sepolia_default,
58
+ "src/tokens/data/base-sepolia.json"
59
+ );
60
+ var base_sepolia_default2 = tokens;
61
+ export {
62
+ chainId,
63
+ base_sepolia_default2 as default,
64
+ tokens
65
+ };