@waiaas/daemon 2.6.0-rc → 2.6.0-rc.2

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 (92) hide show
  1. package/dist/api/routes/connect-info.d.ts.map +1 -1
  2. package/dist/api/routes/connect-info.js +6 -0
  3. package/dist/api/routes/connect-info.js.map +1 -1
  4. package/dist/api/routes/openapi-schemas.d.ts +94 -22
  5. package/dist/api/routes/openapi-schemas.d.ts.map +1 -1
  6. package/dist/api/routes/openapi-schemas.js +1 -0
  7. package/dist/api/routes/openapi-schemas.js.map +1 -1
  8. package/dist/api/routes/policies.d.ts.map +1 -1
  9. package/dist/api/routes/policies.js +18 -4
  10. package/dist/api/routes/policies.js.map +1 -1
  11. package/dist/api/routes/tokens.d.ts.map +1 -1
  12. package/dist/api/routes/tokens.js +1 -0
  13. package/dist/api/routes/tokens.js.map +1 -1
  14. package/dist/infrastructure/database/migrate.d.ts +1 -1
  15. package/dist/infrastructure/database/migrate.d.ts.map +1 -1
  16. package/dist/infrastructure/database/migrate.js +42 -3
  17. package/dist/infrastructure/database/migrate.js.map +1 -1
  18. package/dist/infrastructure/database/schema.d.ts +19 -0
  19. package/dist/infrastructure/database/schema.d.ts.map +1 -1
  20. package/dist/infrastructure/database/schema.js +1 -0
  21. package/dist/infrastructure/database/schema.js.map +1 -1
  22. package/dist/infrastructure/oracle/coingecko-oracle.d.ts +9 -1
  23. package/dist/infrastructure/oracle/coingecko-oracle.d.ts.map +1 -1
  24. package/dist/infrastructure/oracle/coingecko-oracle.js +40 -23
  25. package/dist/infrastructure/oracle/coingecko-oracle.js.map +1 -1
  26. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts +11 -10
  27. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts.map +1 -1
  28. package/dist/infrastructure/oracle/coingecko-platform-ids.js +20 -12
  29. package/dist/infrastructure/oracle/coingecko-platform-ids.js.map +1 -1
  30. package/dist/infrastructure/oracle/index.d.ts +1 -1
  31. package/dist/infrastructure/oracle/index.d.ts.map +1 -1
  32. package/dist/infrastructure/oracle/index.js +1 -1
  33. package/dist/infrastructure/oracle/index.js.map +1 -1
  34. package/dist/infrastructure/oracle/oracle-chain.d.ts.map +1 -1
  35. package/dist/infrastructure/oracle/oracle-chain.js +7 -4
  36. package/dist/infrastructure/oracle/oracle-chain.js.map +1 -1
  37. package/dist/infrastructure/oracle/price-cache.d.ts +24 -8
  38. package/dist/infrastructure/oracle/price-cache.d.ts.map +1 -1
  39. package/dist/infrastructure/oracle/price-cache.js +32 -11
  40. package/dist/infrastructure/oracle/price-cache.js.map +1 -1
  41. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts +11 -8
  42. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts.map +1 -1
  43. package/dist/infrastructure/oracle/pyth-feed-ids.js +16 -17
  44. package/dist/infrastructure/oracle/pyth-feed-ids.js.map +1 -1
  45. package/dist/infrastructure/oracle/pyth-oracle.d.ts.map +1 -1
  46. package/dist/infrastructure/oracle/pyth-oracle.js +7 -4
  47. package/dist/infrastructure/oracle/pyth-oracle.js.map +1 -1
  48. package/dist/infrastructure/token-registry/token-registry-service.d.ts +1 -0
  49. package/dist/infrastructure/token-registry/token-registry-service.d.ts.map +1 -1
  50. package/dist/infrastructure/token-registry/token-registry-service.js +15 -1
  51. package/dist/infrastructure/token-registry/token-registry-service.js.map +1 -1
  52. package/dist/notifications/channels/discord.d.ts.map +1 -1
  53. package/dist/notifications/channels/discord.js +5 -1
  54. package/dist/notifications/channels/discord.js.map +1 -1
  55. package/dist/notifications/channels/ntfy.d.ts.map +1 -1
  56. package/dist/notifications/channels/ntfy.js +3 -0
  57. package/dist/notifications/channels/ntfy.js.map +1 -1
  58. package/dist/notifications/channels/slack.d.ts.map +1 -1
  59. package/dist/notifications/channels/slack.js +5 -1
  60. package/dist/notifications/channels/slack.js.map +1 -1
  61. package/dist/notifications/channels/telegram.d.ts.map +1 -1
  62. package/dist/notifications/channels/telegram.js +4 -0
  63. package/dist/notifications/channels/telegram.js.map +1 -1
  64. package/dist/notifications/notification-service.d.ts.map +1 -1
  65. package/dist/notifications/notification-service.js +7 -1
  66. package/dist/notifications/notification-service.js.map +1 -1
  67. package/dist/pipeline/database-policy-engine.d.ts +38 -9
  68. package/dist/pipeline/database-policy-engine.d.ts.map +1 -1
  69. package/dist/pipeline/database-policy-engine.js +189 -37
  70. package/dist/pipeline/database-policy-engine.js.map +1 -1
  71. package/dist/pipeline/resolve-effective-amount-usd.d.ts +1 -1
  72. package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -1
  73. package/dist/pipeline/resolve-effective-amount-usd.js +5 -3
  74. package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -1
  75. package/dist/pipeline/sign-only.d.ts +4 -0
  76. package/dist/pipeline/sign-only.d.ts.map +1 -1
  77. package/dist/pipeline/sign-only.js +1 -0
  78. package/dist/pipeline/sign-only.js.map +1 -1
  79. package/dist/pipeline/stages.d.ts.map +1 -1
  80. package/dist/pipeline/stages.js +9 -1
  81. package/dist/pipeline/stages.js.map +1 -1
  82. package/dist/services/incoming/incoming-tx-monitor-service.d.ts.map +1 -1
  83. package/dist/services/incoming/incoming-tx-monitor-service.js +21 -0
  84. package/dist/services/incoming/incoming-tx-monitor-service.js.map +1 -1
  85. package/dist/services/wc-session-service.d.ts +0 -2
  86. package/dist/services/wc-session-service.d.ts.map +1 -1
  87. package/dist/services/wc-session-service.js +2 -23
  88. package/dist/services/wc-session-service.js.map +1 -1
  89. package/package.json +4 -4
  90. package/public/admin/assets/index-BE0U9eAD.js +1 -0
  91. package/public/admin/index.html +1 -1
  92. package/public/admin/assets/index-D06O_cSo.js +0 -1
@@ -1,6 +1,6 @@
1
1
  import { getCoinGeckoPlatform } from './coingecko-platform-ids.js';
2
2
  import { PriceNotAvailableError, CoinGeckoNotConfiguredError } from './oracle-errors.js';
3
- import { buildCacheKey } from './price-cache.js';
3
+ import { buildCacheKey, resolveNetwork } from './price-cache.js';
4
4
  // Re-export error classes for consumer convenience
5
5
  export { PriceNotAvailableError, CoinGeckoNotConfiguredError } from './oracle-errors.js';
6
6
  /** CoinGecko Demo API base URL. */
@@ -34,13 +34,14 @@ export class CoinGeckoOracle {
34
34
  */
35
35
  async getPrice(token) {
36
36
  this.ensureConfigured();
37
+ const network = resolveNetwork(token.chain, token.network);
37
38
  // Delegate native tokens to getNativePrice
38
39
  if (token.address === 'native') {
39
- return this.getNativePrice(token.chain);
40
+ return this.getNativePriceByNetwork(network);
40
41
  }
41
- const platform = getCoinGeckoPlatform(token.chain);
42
+ const platform = getCoinGeckoPlatform(network);
42
43
  if (!platform) {
43
- throw new PriceNotAvailableError(`Unsupported chain for CoinGecko: ${token.chain}`);
44
+ throw new PriceNotAvailableError(`Unsupported network for CoinGecko: ${network}`);
44
45
  }
45
46
  // EVM addresses must be lowercased for CoinGecko API
46
47
  const address = token.chain === 'ethereum'
@@ -55,7 +56,7 @@ export class CoinGeckoOracle {
55
56
  const lookupKey = token.chain === 'ethereum' ? address.toLowerCase() : address;
56
57
  const tokenData = data[lookupKey];
57
58
  if (!tokenData?.usd) {
58
- throw new PriceNotAvailableError(`CoinGecko returned no price for ${token.symbol ?? token.address} on ${token.chain}`);
59
+ throw new PriceNotAvailableError(`CoinGecko returned no price for ${token.symbol ?? token.address} on ${network}`);
59
60
  }
60
61
  return this.buildPriceInfo(tokenData.usd);
61
62
  }
@@ -73,29 +74,31 @@ export class CoinGeckoOracle {
73
74
  async getPrices(tokens) {
74
75
  this.ensureConfigured();
75
76
  const result = new Map();
76
- // Separate native and non-native tokens
77
+ // Separate native and non-native tokens, group by resolved network
77
78
  const nativeTokens = [];
78
- const tokensByChain = new Map();
79
+ const tokensByNetwork = new Map();
79
80
  for (const token of tokens) {
80
81
  if (token.address === 'native') {
81
82
  nativeTokens.push(token);
82
83
  }
83
84
  else {
84
- const list = tokensByChain.get(token.chain) ?? [];
85
+ const network = resolveNetwork(token.chain, token.network);
86
+ const list = tokensByNetwork.get(network) ?? [];
85
87
  list.push(token);
86
- tokensByChain.set(token.chain, list);
88
+ tokensByNetwork.set(network, list);
87
89
  }
88
90
  }
89
- // Batch query per chain (comma-separated addresses)
91
+ // Batch query per network (comma-separated addresses)
90
92
  const batchPromises = [];
91
- for (const [chain, chainTokens] of tokensByChain) {
92
- batchPromises.push(this.fetchBatchTokenPrices(chain, chainTokens, result));
93
+ for (const [network, networkTokens] of tokensByNetwork) {
94
+ batchPromises.push(this.fetchBatchTokenPrices(network, networkTokens, result));
93
95
  }
94
96
  // Native token queries
95
97
  for (const token of nativeTokens) {
96
- batchPromises.push(this.getNativePrice(token.chain)
98
+ const network = resolveNetwork(token.chain, token.network);
99
+ batchPromises.push(this.getNativePriceByNetwork(network)
97
100
  .then((price) => {
98
- result.set(buildCacheKey(token.chain, 'native'), price);
101
+ result.set(buildCacheKey(network, 'native'), price);
99
102
  })
100
103
  .catch(() => {
101
104
  // Skip failed native price queries
@@ -107,16 +110,27 @@ export class CoinGeckoOracle {
107
110
  /**
108
111
  * Get native token price (SOL or ETH).
109
112
  *
113
+ * Part of IPriceOracle interface. Resolves network internally from chain.
114
+ *
110
115
  * @param chain - Chain type ('solana' or 'ethereum').
111
116
  * @returns PriceInfo with native token USD price.
112
117
  * @throws CoinGeckoNotConfiguredError if API key is empty.
113
118
  * @throws PriceNotAvailableError if chain is unsupported or no data.
114
119
  */
115
120
  async getNativePrice(chain) {
121
+ const network = resolveNetwork(chain);
122
+ return this.getNativePriceByNetwork(network);
123
+ }
124
+ /**
125
+ * Get native token price by NetworkType.
126
+ *
127
+ * Internal helper used by getPrice() and getPrices() where network is already resolved.
128
+ */
129
+ async getNativePriceByNetwork(network) {
116
130
  this.ensureConfigured();
117
- const platform = getCoinGeckoPlatform(chain);
131
+ const platform = getCoinGeckoPlatform(network);
118
132
  if (!platform) {
119
- throw new PriceNotAvailableError(`Unsupported chain for CoinGecko native price: ${chain}`);
133
+ throw new PriceNotAvailableError(`Unsupported network for CoinGecko native price: ${network}`);
120
134
  }
121
135
  const url = `${BASE_URL}/simple/price` +
122
136
  `?ids=${platform.nativeCoinId}` +
@@ -125,7 +139,7 @@ export class CoinGeckoOracle {
125
139
  const data = await this.fetchJson(url);
126
140
  const coinData = data[platform.nativeCoinId];
127
141
  if (!coinData?.usd) {
128
- throw new PriceNotAvailableError(`CoinGecko returned no native price for ${chain}`);
142
+ throw new PriceNotAvailableError(`CoinGecko returned no native price for ${network}`);
129
143
  }
130
144
  return this.buildPriceInfo(coinData.usd);
131
145
  }
@@ -169,12 +183,14 @@ export class CoinGeckoOracle {
169
183
  isStale: false,
170
184
  };
171
185
  }
172
- /** Fetch batch token prices for a single chain and add to result map. */
173
- async fetchBatchTokenPrices(chain, tokens, result) {
174
- const platform = getCoinGeckoPlatform(chain);
186
+ /** Fetch batch token prices for a single network and add to result map. */
187
+ async fetchBatchTokenPrices(network, tokens, result) {
188
+ const platform = getCoinGeckoPlatform(network);
175
189
  if (!platform)
176
190
  return;
177
- const addresses = tokens.map((t) => chain === 'ethereum' ? t.address.toLowerCase() : t.address);
191
+ // EVM addresses must be lowercased for CoinGecko API
192
+ const isEvm = tokens[0]?.chain === 'ethereum';
193
+ const addresses = tokens.map((t) => isEvm ? t.address.toLowerCase() : t.address);
178
194
  const url = `${BASE_URL}/simple/token_price/${platform.platformId}` +
179
195
  `?contract_addresses=${addresses.join(',')}` +
180
196
  `&vs_currencies=usd` +
@@ -182,12 +198,13 @@ export class CoinGeckoOracle {
182
198
  try {
183
199
  const data = await this.fetchJson(url);
184
200
  for (const token of tokens) {
185
- const addr = chain === 'ethereum'
201
+ const addr = isEvm
186
202
  ? token.address.toLowerCase()
187
203
  : token.address;
188
204
  const tokenData = data[addr];
189
205
  if (tokenData?.usd) {
190
- result.set(buildCacheKey(chain, token.address), this.buildPriceInfo(tokenData.usd));
206
+ const tokenNetwork = resolveNetwork(token.chain, token.network);
207
+ result.set(buildCacheKey(tokenNetwork, token.address), this.buildPriceInfo(tokenData.usd));
191
208
  }
192
209
  }
193
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coingecko-oracle.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coingecko-oracle.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-oracle.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * CoinGecko platform ID and native coin ID mapping.
3
3
  *
4
- * Maps WAIaaS ChainType to CoinGecko API identifiers:
4
+ * Maps WAIaaS NetworkType to CoinGecko API identifiers:
5
5
  * - platformId: used in /simple/token_price/{platformId} path
6
6
  * - nativeCoinId: used in /simple/price?ids={nativeCoinId} path
7
7
  *
8
- * v1.5: Only solana and ethereum. L2 networks (Polygon, Arbitrum, etc.)
9
- * will be added when TokenRef gains a network field.
8
+ * Supports 6 mainnet networks: Solana, Ethereum, Polygon, Arbitrum, Optimism, Base.
9
+ * Testnet networks are intentionally excluded (no CoinGecko prices for testnet tokens).
10
10
  */
11
- /** CoinGecko platform configuration for a chain. */
11
+ /** CoinGecko platform configuration for a network. */
12
12
  export interface CoinGeckoPlatform {
13
13
  /** Platform ID for /simple/token_price/{platformId} endpoint. */
14
14
  platformId: string;
@@ -16,17 +16,18 @@ export interface CoinGeckoPlatform {
16
16
  nativeCoinId: string;
17
17
  }
18
18
  /**
19
- * Map from WAIaaS ChainType to CoinGecko platform/coin IDs.
19
+ * Map from WAIaaS NetworkType to CoinGecko platform/coin IDs.
20
20
  *
21
- * Currently supports solana and ethereum (mainnet).
22
- * L2 platformIds (polygon-pos, arbitrum-one, etc.) are out of v1.5 scope.
21
+ * 6 mainnet entries covering Solana + Ethereum L1 + 4 EVM L2 networks.
22
+ * Polygon uses 'matic-network' as nativeCoinId (POL/MATIC gas token).
23
+ * Arbitrum/Optimism/Base use 'ethereum' as nativeCoinId (ETH gas token).
23
24
  */
24
25
  export declare const COINGECKO_PLATFORM_MAP: Record<string, CoinGeckoPlatform>;
25
26
  /**
26
- * Look up CoinGecko platform config for a chain.
27
+ * Look up CoinGecko platform config for a network.
27
28
  *
28
- * @param chain - WAIaaS ChainType ('solana' | 'ethereum').
29
+ * @param network - WAIaaS NetworkType (e.g., 'ethereum-mainnet', 'polygon-mainnet').
29
30
  * @returns CoinGeckoPlatform if supported, undefined otherwise.
30
31
  */
31
- export declare function getCoinGeckoPlatform(chain: string): CoinGeckoPlatform | undefined;
32
+ export declare function getCoinGeckoPlatform(network: string): CoinGeckoPlatform | undefined;
32
33
  //# sourceMappingURL=coingecko-platform-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coingecko-platform-ids.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-platform-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAGpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEjF"}
1
+ {"version":3,"file":"coingecko-platform-ids.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-platform-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAUpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEnF"}
@@ -1,30 +1,38 @@
1
1
  /**
2
2
  * CoinGecko platform ID and native coin ID mapping.
3
3
  *
4
- * Maps WAIaaS ChainType to CoinGecko API identifiers:
4
+ * Maps WAIaaS NetworkType to CoinGecko API identifiers:
5
5
  * - platformId: used in /simple/token_price/{platformId} path
6
6
  * - nativeCoinId: used in /simple/price?ids={nativeCoinId} path
7
7
  *
8
- * v1.5: Only solana and ethereum. L2 networks (Polygon, Arbitrum, etc.)
9
- * will be added when TokenRef gains a network field.
8
+ * Supports 6 mainnet networks: Solana, Ethereum, Polygon, Arbitrum, Optimism, Base.
9
+ * Testnet networks are intentionally excluded (no CoinGecko prices for testnet tokens).
10
10
  */
11
11
  /**
12
- * Map from WAIaaS ChainType to CoinGecko platform/coin IDs.
12
+ * Map from WAIaaS NetworkType to CoinGecko platform/coin IDs.
13
13
  *
14
- * Currently supports solana and ethereum (mainnet).
15
- * L2 platformIds (polygon-pos, arbitrum-one, etc.) are out of v1.5 scope.
14
+ * 6 mainnet entries covering Solana + Ethereum L1 + 4 EVM L2 networks.
15
+ * Polygon uses 'matic-network' as nativeCoinId (POL/MATIC gas token).
16
+ * Arbitrum/Optimism/Base use 'ethereum' as nativeCoinId (ETH gas token).
16
17
  */
17
18
  export const COINGECKO_PLATFORM_MAP = {
18
- solana: { platformId: 'solana', nativeCoinId: 'solana' },
19
- ethereum: { platformId: 'ethereum', nativeCoinId: 'ethereum' },
19
+ // Solana (mainnet only -- devnet/testnet have no CoinGecko prices)
20
+ 'mainnet': { platformId: 'solana', nativeCoinId: 'solana' },
21
+ // EVM Mainnet L1
22
+ 'ethereum-mainnet': { platformId: 'ethereum', nativeCoinId: 'ethereum' },
23
+ // EVM L2 Mainnets
24
+ 'polygon-mainnet': { platformId: 'polygon-pos', nativeCoinId: 'matic-network' },
25
+ 'arbitrum-mainnet': { platformId: 'arbitrum-one', nativeCoinId: 'ethereum' },
26
+ 'optimism-mainnet': { platformId: 'optimistic-ethereum', nativeCoinId: 'ethereum' },
27
+ 'base-mainnet': { platformId: 'base', nativeCoinId: 'ethereum' },
20
28
  };
21
29
  /**
22
- * Look up CoinGecko platform config for a chain.
30
+ * Look up CoinGecko platform config for a network.
23
31
  *
24
- * @param chain - WAIaaS ChainType ('solana' | 'ethereum').
32
+ * @param network - WAIaaS NetworkType (e.g., 'ethereum-mainnet', 'polygon-mainnet').
25
33
  * @returns CoinGeckoPlatform if supported, undefined otherwise.
26
34
  */
27
- export function getCoinGeckoPlatform(chain) {
28
- return COINGECKO_PLATFORM_MAP[chain];
35
+ export function getCoinGeckoPlatform(network) {
36
+ return COINGECKO_PLATFORM_MAP[network];
29
37
  }
30
38
  //# sourceMappingURL=coingecko-platform-ids.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coingecko-platform-ids.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-platform-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsC;IACvE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;IACxD,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE;CAC/D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"coingecko-platform-ids.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/coingecko-platform-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsC;IACvE,mEAAmE;IACnE,SAAS,EAAW,EAAE,UAAU,EAAE,QAAQ,EAAe,YAAY,EAAE,QAAQ,EAAE;IACjF,iBAAiB;IACjB,kBAAkB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAa,YAAY,EAAE,UAAU,EAAE;IACnF,kBAAkB;IAClB,iBAAiB,EAAG,EAAE,UAAU,EAAE,aAAa,EAAU,YAAY,EAAE,eAAe,EAAE;IACxF,kBAAkB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAS,YAAY,EAAE,UAAU,EAAE;IACnF,kBAAkB,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE;IACnF,cAAc,EAAM,EAAE,UAAU,EAAE,MAAM,EAAiB,YAAY,EAAE,UAAU,EAAE;CACpF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Pyth oracle, CoinGecko oracle, and feed/platform ID helpers.
6
6
  */
7
7
  export { classifyPriceAge, PriceAgeEnum, PRICE_AGE_THRESHOLDS, PRICE_AGES, type PriceAge, } from './price-age.js';
8
- export { InMemoryPriceCache, buildCacheKey } from './price-cache.js';
8
+ export { InMemoryPriceCache, buildCacheKey, resolveNetwork } from './price-cache.js';
9
9
  export { PriceNotAvailableError, CoinGeckoNotConfiguredError, ForexNotAvailableError } from './oracle-errors.js';
10
10
  export { PythOracle } from './pyth-oracle.js';
11
11
  export { PYTH_FEED_IDS, getFeedId, getNativeFeedId, } from './pyth-feed-ids.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Pyth oracle, CoinGecko oracle, and feed/platform ID helpers.
6
6
  */
7
7
  export { classifyPriceAge, PriceAgeEnum, PRICE_AGE_THRESHOLDS, PRICE_AGES, } from './price-age.js';
8
- export { InMemoryPriceCache, buildCacheKey } from './price-cache.js';
8
+ export { InMemoryPriceCache, buildCacheKey, resolveNetwork } from './price-cache.js';
9
9
  export { PriceNotAvailableError, CoinGeckoNotConfiguredError, ForexNotAvailableError } from './oracle-errors.js';
10
10
  export { PythOracle } from './pyth-oracle.js';
11
11
  export { PYTH_FEED_IDS, getFeedId, getNativeFeedId, } from './pyth-feed-ids.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,UAAU,GAEX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AAEtE,4BAA4B;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,UAAU,GAEX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AAEtE,4BAA4B;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAA6B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oracle-chain.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/oracle-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,OAAO,EAAE,YAAY,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,sFAAsF;IACtF,KAAK,EAAE,kBAAkB,CAAC;IAC1B,mEAAmE;IACnE,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAqBD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,EAAE,eAAe;IAOjC;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAQnD;;;;;;;;;OASG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAiBpE;;;;;;;OAOG;IACG,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1D;;;;OAIG;IACH,aAAa,IAAI,UAAU;IAQ3B;;;;;;;;;;;;OAYG;YACW,iBAAiB;CA4ChC"}
1
+ {"version":3,"file":"oracle-chain.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/oracle-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,OAAO,EAAE,YAAY,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,sFAAsF;IACtF,KAAK,EAAE,kBAAkB,CAAC;IAC1B,mEAAmE;IACnE,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAqBD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,EAAE,eAAe;IAOjC;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IASnD;;;;;;;;;OASG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAkBpE;;;;;;;OAOG;IACG,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1D;;;;OAIG;IACH,aAAa,IAAI,UAAU;IAQ3B;;;;;;;;;;;;OAYG;YACW,iBAAiB;CA4ChC"}
@@ -1,4 +1,4 @@
1
- import { buildCacheKey } from './price-cache.js';
1
+ import { buildCacheKey, resolveNetwork } from './price-cache.js';
2
2
  import { PriceNotAvailableError } from './oracle-errors.js';
3
3
  // ---------------------------------------------------------------------------
4
4
  // Helpers
@@ -50,7 +50,8 @@ export class OracleChain {
50
50
  * @throws PriceNotAvailableError when no source can provide a price.
51
51
  */
52
52
  async getPrice(token) {
53
- const cacheKey = buildCacheKey(token.chain, token.address);
53
+ const network = resolveNetwork(token.chain, token.network);
54
+ const cacheKey = buildCacheKey(network, token.address);
54
55
  return this.cache.getOrFetch(cacheKey, async () => {
55
56
  return this.fetchWithFallback(token, cacheKey);
56
57
  });
@@ -70,7 +71,8 @@ export class OracleChain {
70
71
  const promises = tokens.map(async (token) => {
71
72
  try {
72
73
  const price = await this.getPrice(token);
73
- const key = buildCacheKey(token.chain, token.address);
74
+ const network = resolveNetwork(token.chain, token.network);
75
+ const key = buildCacheKey(network, token.address);
74
76
  result.set(key, price);
75
77
  }
76
78
  catch {
@@ -89,8 +91,9 @@ export class OracleChain {
89
91
  * @returns PriceInfo for the native token.
90
92
  */
91
93
  async getNativePrice(chain) {
94
+ const network = resolveNetwork(chain);
92
95
  const decimals = chain === 'solana' ? 9 : 18;
93
- return this.getPrice({ address: 'native', decimals, chain });
96
+ return this.getPrice({ address: 'native', decimals, chain, network });
94
97
  }
95
98
  /**
96
99
  * Get cache statistics from InMemoryPriceCache.
@@ -1 +1 @@
1
- {"version":3,"file":"oracle-chain.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/oracle-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle-chain.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/oracle-chain.ts"],"names":[],"mappings":"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"}
@@ -10,18 +10,34 @@
10
10
  * Between TTL and staleMax, getStale() returns the old value for fallback use.
11
11
  * - maxEntries (128 default): LRU capacity. Oldest entry evicted on overflow.
12
12
  */
13
- import type { PriceInfo, CacheStats } from '@waiaas/core';
13
+ import type { PriceInfo, CacheStats, ChainType, NetworkType } from '@waiaas/core';
14
14
  /**
15
- * Build a normalized cache key for a token.
15
+ * Resolve NetworkType from a token's chain and optional network fields.
16
16
  *
17
- * EVM addresses are lowercased for consistency with CoinGecko API responses
18
- * and EIP-55 checksum normalization.
17
+ * Falls back to the chain's primary mainnet for backward compatibility
18
+ * when network is not provided.
19
19
  *
20
- * @param chain - Chain identifier ('solana' | 'ethereum').
21
- * @param address - Token address (mint for Solana, contract for EVM).
22
- * @returns Normalized cache key in format `chain:address`.
20
+ * @param chain - Chain type ('solana' | 'ethereum').
21
+ * @param network - Optional network type. If provided, returned as-is.
22
+ * @returns Resolved NetworkType.
23
23
  */
24
- export declare function buildCacheKey(chain: string, address: string): string;
24
+ export declare function resolveNetwork(chain: ChainType, network?: NetworkType): NetworkType;
25
+ /**
26
+ * Build a CAIP-19 cache key for a token.
27
+ *
28
+ * Uses nativeAssetId/tokenAssetId from @waiaas/core (Phase 231 SSoT).
29
+ * EVM addresses are lowercased internally by tokenAssetId().
30
+ * Solana base58 addresses are preserved by tokenAssetId().
31
+ *
32
+ * @param network - NetworkType (e.g., 'ethereum-mainnet', 'polygon-mainnet', 'mainnet').
33
+ * @param address - Token address or 'native' for native token.
34
+ * @returns CAIP-19 asset type URI as cache key.
35
+ *
36
+ * @example buildCacheKey('ethereum-mainnet', 'native') => 'eip155:1/slip44:60'
37
+ * @example buildCacheKey('polygon-mainnet', '0xAddr') => 'eip155:137/erc20:0xaddr'
38
+ * @example buildCacheKey('mainnet', 'EPjFWdd5...') => 'solana:5eykt.../token:EPjFWdd5...'
39
+ */
40
+ export declare function buildCacheKey(network: NetworkType, address: string): string;
25
41
  /**
26
42
  * In-memory price cache with LRU eviction and cache stampede prevention.
27
43
  *
@@ -1 +1 @@
1
- {"version":3,"file":"price-cache.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/price-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAc1D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAa3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAd7B,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,SAAiB;IAC/C,qCAAqC;IACrC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,SAAkB;IACtD,gCAAgC;IAChC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,OAAO;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAC1E,OAAO,CAAC,KAAK,CAAsD;gBAGhD,KAAK,GAAE,MAA0C,EACjD,UAAU,GAAE,MAAgD,EAC5D,UAAU,GAAE,MAA+C;IAG9E;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoBlC;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAkBvC;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAuBxC;;;;;;;;;;OAUG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBpF;;;;OAIG;IACH,QAAQ,IAAI,UAAU;IAOtB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
1
+ {"version":3,"file":"price-cache.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/price-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAelF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAGnF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAa3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAd7B,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,SAAiB;IAC/C,qCAAqC;IACrC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,SAAkB;IACtD,gCAAgC;IAChC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,OAAO;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAC1E,OAAO,CAAC,KAAK,CAAsD;gBAGhD,KAAK,GAAE,MAA0C,EACjD,UAAU,GAAE,MAAgD,EAC5D,UAAU,GAAE,MAA+C;IAG9E;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoBlC;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAkBvC;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAuBxC;;;;;;;;;;OAUG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBpF;;;;OAIG;IACH,QAAQ,IAAI,UAAU;IAOtB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
@@ -1,18 +1,39 @@
1
+ import { nativeAssetId, tokenAssetId } from '@waiaas/core';
1
2
  /**
2
- * Build a normalized cache key for a token.
3
+ * Resolve NetworkType from a token's chain and optional network fields.
3
4
  *
4
- * EVM addresses are lowercased for consistency with CoinGecko API responses
5
- * and EIP-55 checksum normalization.
5
+ * Falls back to the chain's primary mainnet for backward compatibility
6
+ * when network is not provided.
6
7
  *
7
- * @param chain - Chain identifier ('solana' | 'ethereum').
8
- * @param address - Token address (mint for Solana, contract for EVM).
9
- * @returns Normalized cache key in format `chain:address`.
8
+ * @param chain - Chain type ('solana' | 'ethereum').
9
+ * @param network - Optional network type. If provided, returned as-is.
10
+ * @returns Resolved NetworkType.
10
11
  */
11
- export function buildCacheKey(chain, address) {
12
- const normalizedAddress = chain === 'ethereum'
13
- ? address.toLowerCase()
14
- : address;
15
- return `${chain}:${normalizedAddress}`;
12
+ export function resolveNetwork(chain, network) {
13
+ if (network)
14
+ return network;
15
+ return chain === 'solana' ? 'mainnet' : 'ethereum-mainnet';
16
+ }
17
+ /**
18
+ * Build a CAIP-19 cache key for a token.
19
+ *
20
+ * Uses nativeAssetId/tokenAssetId from @waiaas/core (Phase 231 SSoT).
21
+ * EVM addresses are lowercased internally by tokenAssetId().
22
+ * Solana base58 addresses are preserved by tokenAssetId().
23
+ *
24
+ * @param network - NetworkType (e.g., 'ethereum-mainnet', 'polygon-mainnet', 'mainnet').
25
+ * @param address - Token address or 'native' for native token.
26
+ * @returns CAIP-19 asset type URI as cache key.
27
+ *
28
+ * @example buildCacheKey('ethereum-mainnet', 'native') => 'eip155:1/slip44:60'
29
+ * @example buildCacheKey('polygon-mainnet', '0xAddr') => 'eip155:137/erc20:0xaddr'
30
+ * @example buildCacheKey('mainnet', 'EPjFWdd5...') => 'solana:5eykt.../token:EPjFWdd5...'
31
+ */
32
+ export function buildCacheKey(network, address) {
33
+ if (address === 'native') {
34
+ return nativeAssetId(network);
35
+ }
36
+ return tokenAssetId(network, address);
16
37
  }
17
38
  /**
18
39
  * In-memory price cache with LRU eviction and cache stampede prevention.
@@ -1 +1 @@
1
- {"version":3,"file":"price-cache.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/price-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"price-cache.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/price-cache.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Pyth Hermes feed ID hardcoded mappings.
3
3
  *
4
- * Maps cache keys (`chain:address`) to Pyth price feed IDs (hex, no 0x prefix).
4
+ * Maps CAIP-19 cache keys to Pyth price feed IDs (hex, no 0x prefix).
5
+ * Keys are generated programmatically via nativeAssetId/tokenAssetId
6
+ * to ensure consistency with buildCacheKey() output.
7
+ *
5
8
  * These feed IDs are chain-agnostic -- Pyth uses the same feed for SOL/USD
6
9
  * regardless of whether the query comes from Solana or EVM context.
7
10
  *
@@ -11,21 +14,21 @@
11
14
  *
12
15
  * Feed IDs verified via Pyth Hermes /v2/price_feeds API (2026-02-15).
13
16
  */
14
- import type { ChainType } from '@waiaas/core';
15
- /** Hardcoded Pyth price feed IDs for major tokens. */
17
+ import type { NetworkType } from '@waiaas/core';
18
+ /** Hardcoded Pyth price feed IDs for major tokens (keyed by CAIP-19 asset type). */
16
19
  export declare const PYTH_FEED_IDS: ReadonlyMap<string, string>;
17
20
  /**
18
21
  * Look up a Pyth feed ID by cache key.
19
22
  *
20
- * @param cacheKey - Normalized cache key (e.g. `solana:native`, `ethereum:0xaddr`).
23
+ * @param cacheKey - CAIP-19 cache key (e.g. 'solana:5eykt.../slip44:501').
21
24
  * @returns Feed ID hex string (no 0x prefix) or undefined if not registered.
22
25
  */
23
26
  export declare function getFeedId(cacheKey: string): string | undefined;
24
27
  /**
25
- * Get the Pyth feed ID for a chain's native token.
28
+ * Get the Pyth feed ID for a network's native token.
26
29
  *
27
- * @param chain - Chain type ('solana' or 'ethereum').
28
- * @returns Feed ID hex string or undefined if chain not supported.
30
+ * @param network - Network type (e.g., 'mainnet' for Solana, 'ethereum-mainnet' for Ethereum).
31
+ * @returns Feed ID hex string or undefined if network not supported.
29
32
  */
30
- export declare function getNativeFeedId(chain: ChainType): string | undefined;
33
+ export declare function getNativeFeedId(network: NetworkType): string | undefined;
31
34
  //# sourceMappingURL=pyth-feed-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pyth-feed-ids.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-feed-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,sDAAsD;AACtD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAWpD,CAAC;AAgBH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAEpE"}
1
+ {"version":3,"file":"pyth-feed-ids.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-feed-ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAQpD,CAAC;AAgBH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAExE"}