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

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 (82) 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/tokens.d.ts.map +1 -1
  9. package/dist/api/routes/tokens.js +1 -0
  10. package/dist/api/routes/tokens.js.map +1 -1
  11. package/dist/infrastructure/database/migrate.d.ts +1 -1
  12. package/dist/infrastructure/database/migrate.d.ts.map +1 -1
  13. package/dist/infrastructure/database/migrate.js +42 -3
  14. package/dist/infrastructure/database/migrate.js.map +1 -1
  15. package/dist/infrastructure/database/schema.d.ts +19 -0
  16. package/dist/infrastructure/database/schema.d.ts.map +1 -1
  17. package/dist/infrastructure/database/schema.js +1 -0
  18. package/dist/infrastructure/database/schema.js.map +1 -1
  19. package/dist/infrastructure/oracle/coingecko-oracle.d.ts +9 -1
  20. package/dist/infrastructure/oracle/coingecko-oracle.d.ts.map +1 -1
  21. package/dist/infrastructure/oracle/coingecko-oracle.js +40 -23
  22. package/dist/infrastructure/oracle/coingecko-oracle.js.map +1 -1
  23. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts +11 -10
  24. package/dist/infrastructure/oracle/coingecko-platform-ids.d.ts.map +1 -1
  25. package/dist/infrastructure/oracle/coingecko-platform-ids.js +20 -12
  26. package/dist/infrastructure/oracle/coingecko-platform-ids.js.map +1 -1
  27. package/dist/infrastructure/oracle/index.d.ts +1 -1
  28. package/dist/infrastructure/oracle/index.d.ts.map +1 -1
  29. package/dist/infrastructure/oracle/index.js +1 -1
  30. package/dist/infrastructure/oracle/index.js.map +1 -1
  31. package/dist/infrastructure/oracle/oracle-chain.d.ts.map +1 -1
  32. package/dist/infrastructure/oracle/oracle-chain.js +7 -4
  33. package/dist/infrastructure/oracle/oracle-chain.js.map +1 -1
  34. package/dist/infrastructure/oracle/price-cache.d.ts +24 -8
  35. package/dist/infrastructure/oracle/price-cache.d.ts.map +1 -1
  36. package/dist/infrastructure/oracle/price-cache.js +32 -11
  37. package/dist/infrastructure/oracle/price-cache.js.map +1 -1
  38. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts +11 -8
  39. package/dist/infrastructure/oracle/pyth-feed-ids.d.ts.map +1 -1
  40. package/dist/infrastructure/oracle/pyth-feed-ids.js +16 -17
  41. package/dist/infrastructure/oracle/pyth-feed-ids.js.map +1 -1
  42. package/dist/infrastructure/oracle/pyth-oracle.d.ts.map +1 -1
  43. package/dist/infrastructure/oracle/pyth-oracle.js +7 -4
  44. package/dist/infrastructure/oracle/pyth-oracle.js.map +1 -1
  45. package/dist/infrastructure/token-registry/token-registry-service.d.ts +1 -0
  46. package/dist/infrastructure/token-registry/token-registry-service.d.ts.map +1 -1
  47. package/dist/infrastructure/token-registry/token-registry-service.js +15 -1
  48. package/dist/infrastructure/token-registry/token-registry-service.js.map +1 -1
  49. package/dist/notifications/channels/discord.d.ts.map +1 -1
  50. package/dist/notifications/channels/discord.js +5 -1
  51. package/dist/notifications/channels/discord.js.map +1 -1
  52. package/dist/notifications/channels/ntfy.d.ts.map +1 -1
  53. package/dist/notifications/channels/ntfy.js +3 -0
  54. package/dist/notifications/channels/ntfy.js.map +1 -1
  55. package/dist/notifications/channels/slack.d.ts.map +1 -1
  56. package/dist/notifications/channels/slack.js +5 -1
  57. package/dist/notifications/channels/slack.js.map +1 -1
  58. package/dist/notifications/channels/telegram.d.ts.map +1 -1
  59. package/dist/notifications/channels/telegram.js +4 -0
  60. package/dist/notifications/channels/telegram.js.map +1 -1
  61. package/dist/notifications/notification-service.d.ts.map +1 -1
  62. package/dist/notifications/notification-service.js +7 -1
  63. package/dist/notifications/notification-service.js.map +1 -1
  64. package/dist/pipeline/database-policy-engine.d.ts +9 -5
  65. package/dist/pipeline/database-policy-engine.d.ts.map +1 -1
  66. package/dist/pipeline/database-policy-engine.js +42 -10
  67. package/dist/pipeline/database-policy-engine.js.map +1 -1
  68. package/dist/pipeline/resolve-effective-amount-usd.d.ts +1 -1
  69. package/dist/pipeline/resolve-effective-amount-usd.d.ts.map +1 -1
  70. package/dist/pipeline/resolve-effective-amount-usd.js +5 -3
  71. package/dist/pipeline/resolve-effective-amount-usd.js.map +1 -1
  72. package/dist/pipeline/stages.d.ts.map +1 -1
  73. package/dist/pipeline/stages.js +7 -1
  74. package/dist/pipeline/stages.js.map +1 -1
  75. package/dist/services/incoming/incoming-tx-monitor-service.d.ts.map +1 -1
  76. package/dist/services/incoming/incoming-tx-monitor-service.js +21 -0
  77. package/dist/services/incoming/incoming-tx-monitor-service.js.map +1 -1
  78. package/dist/services/wc-session-service.d.ts +0 -2
  79. package/dist/services/wc-session-service.d.ts.map +1 -1
  80. package/dist/services/wc-session-service.js +2 -23
  81. package/dist/services/wc-session-service.js.map +1 -1
  82. package/package.json +4 -4
@@ -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"}
@@ -1,24 +1,23 @@
1
+ import { nativeAssetId, tokenAssetId } from '@waiaas/core';
1
2
  // ---------------------------------------------------------------------------
2
- // Feed ID Map: cacheKey -> Pyth feed ID (hex, no 0x)
3
+ // Feed ID Map: CAIP-19 cacheKey -> Pyth feed ID (hex, no 0x)
3
4
  // ---------------------------------------------------------------------------
4
- /** Hardcoded Pyth price feed IDs for major tokens. */
5
+ /** Hardcoded Pyth price feed IDs for major tokens (keyed by CAIP-19 asset type). */
5
6
  export const PYTH_FEED_IDS = new Map([
6
7
  // Native tokens
7
- ['solana:native', 'ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d'], // SOL/USD
8
- ['ethereum:native', 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace'], // ETH/USD
8
+ [nativeAssetId('mainnet'), 'ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d'], // SOL/USD
9
+ [nativeAssetId('ethereum-mainnet'), 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace'], // ETH/USD
9
10
  // Solana SPL tokens
10
- ['solana:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a'], // USDC/USD
11
- ['solana:Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', '2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b'], // USDT/USD
12
- // BTC (chain-agnostic feed, mapped for common BTC token addresses)
13
- ['ethereum:native_btc', 'e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43'], // BTC/USD
11
+ [tokenAssetId('mainnet', 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'), 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a'], // USDC/USD
12
+ [tokenAssetId('mainnet', 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'), '2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b'], // USDT/USD
14
13
  ]);
15
14
  // ---------------------------------------------------------------------------
16
15
  // Native token -> feed ID mapping
17
16
  // ---------------------------------------------------------------------------
18
- /** Map from ChainType to the native token's Pyth feed ID. */
17
+ /** Map from NetworkType to the native token's Pyth feed ID. */
19
18
  const NATIVE_FEED_MAP = new Map([
20
- ['solana', 'ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d'], // SOL/USD
21
- ['ethereum', 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace'], // ETH/USD
19
+ ['mainnet', 'ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d'], // SOL/USD
20
+ ['ethereum-mainnet', 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace'], // ETH/USD
22
21
  ]);
23
22
  // ---------------------------------------------------------------------------
24
23
  // Public helpers
@@ -26,19 +25,19 @@ const NATIVE_FEED_MAP = new Map([
26
25
  /**
27
26
  * Look up a Pyth feed ID by cache key.
28
27
  *
29
- * @param cacheKey - Normalized cache key (e.g. `solana:native`, `ethereum:0xaddr`).
28
+ * @param cacheKey - CAIP-19 cache key (e.g. 'solana:5eykt.../slip44:501').
30
29
  * @returns Feed ID hex string (no 0x prefix) or undefined if not registered.
31
30
  */
32
31
  export function getFeedId(cacheKey) {
33
32
  return PYTH_FEED_IDS.get(cacheKey);
34
33
  }
35
34
  /**
36
- * Get the Pyth feed ID for a chain's native token.
35
+ * Get the Pyth feed ID for a network's native token.
37
36
  *
38
- * @param chain - Chain type ('solana' or 'ethereum').
39
- * @returns Feed ID hex string or undefined if chain not supported.
37
+ * @param network - Network type (e.g., 'mainnet' for Solana, 'ethereum-mainnet' for Ethereum).
38
+ * @returns Feed ID hex string or undefined if network not supported.
40
39
  */
41
- export function getNativeFeedId(chain) {
42
- return NATIVE_FEED_MAP.get(chain);
40
+ export function getNativeFeedId(network) {
41
+ return NATIVE_FEED_MAP.get(network);
43
42
  }
44
43
  //# sourceMappingURL=pyth-feed-ids.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pyth-feed-ids.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-feed-ids.ts"],"names":[],"mappings":"AAeA,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAgC,IAAI,GAAG,CAAC;IAChE,gBAAgB;IAChB,CAAC,eAAe,EAAE,kEAAkE,CAAC,EAAK,UAAU;IACpG,CAAC,iBAAiB,EAAE,kEAAkE,CAAC,EAAI,UAAU;IAErG,oBAAoB;IACpB,CAAC,qDAAqD,EAAE,kEAAkE,CAAC,EAAE,WAAW;IACxI,CAAC,qDAAqD,EAAE,kEAAkE,CAAC,EAAG,WAAW;IAEzI,mEAAmE;IACnE,CAAC,qBAAqB,EAAE,kEAAkE,CAAC,EAAE,UAAU;CACxG,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,6DAA6D;AAC7D,MAAM,eAAe,GAAmC,IAAI,GAAG,CAAC;IAC9D,CAAC,QAAQ,EAAE,kEAAkE,CAAC,EAAI,UAAU;IAC5F,CAAC,UAAU,EAAE,kEAAkE,CAAC,EAAG,UAAU;CAC9F,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB;IAC9C,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"pyth-feed-ids.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-feed-ids.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAgC,IAAI,GAAG,CAAC;IAChE,gBAAgB;IAChB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAW,kEAAkE,CAAC,EAAG,UAAU;IACpH,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,kEAAkE,CAAC,EAAG,UAAU;IAEpH,oBAAoB;IACpB,CAAC,YAAY,CAAC,SAAS,EAAE,8CAA8C,CAAC,EAAE,kEAAkE,CAAC,EAAE,WAAW;IAC1J,CAAC,YAAY,CAAC,SAAS,EAAE,8CAA8C,CAAC,EAAE,kEAAkE,CAAC,EAAG,WAAW;CAC5J,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,+DAA+D;AAC/D,MAAM,eAAe,GAAqC,IAAI,GAAG,CAAC;IAChE,CAAC,SAAS,EAAW,kEAAkE,CAAC,EAAG,UAAU;IACrG,CAAC,kBAAkB,EAAE,kEAAkE,CAAC,EAAG,UAAU;CACtG,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,OAAO,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pyth-oracle.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAM7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AA8B5D;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAW;IAE/C;;;;;;;OAOG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IA+BnD;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAgDpE;;;;;;OAMG;IACG,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1D;;;;;OAKG;IACH,aAAa,IAAI,UAAU;IAc3B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAoBlC"}
1
+ {"version":3,"file":"pyth-oracle.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAM7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AA8B5D;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAW;IAE/C;;;;;;;OAOG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAgCnD;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAiDpE;;;;;;OAMG;IACG,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1D;;;;;OAKG;IACH,aAAa,IAAI,UAAU;IAc3B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAoBlC"}
@@ -1,4 +1,4 @@
1
- import { buildCacheKey } from './price-cache.js';
1
+ import { buildCacheKey, resolveNetwork } from './price-cache.js';
2
2
  import { getFeedId } from './pyth-feed-ids.js';
3
3
  import { PriceNotAvailableError } from './oracle-errors.js';
4
4
  // Re-export for backwards compatibility
@@ -26,7 +26,8 @@ export class PythOracle {
26
26
  * @throws Error if Pyth API returns HTTP error or invalid response.
27
27
  */
28
28
  async getPrice(token) {
29
- const cacheKey = buildCacheKey(token.chain, token.address);
29
+ const network = resolveNetwork(token.chain, token.network);
30
+ const cacheKey = buildCacheKey(network, token.address);
30
31
  const feedId = getFeedId(cacheKey);
31
32
  if (!feedId) {
32
33
  throw new PriceNotAvailableError(cacheKey);
@@ -62,7 +63,8 @@ export class PythOracle {
62
63
  const feedToCacheKey = new Map();
63
64
  const feedIds = [];
64
65
  for (const token of tokens) {
65
- const cacheKey = buildCacheKey(token.chain, token.address);
66
+ const network = resolveNetwork(token.chain, token.network);
67
+ const cacheKey = buildCacheKey(network, token.address);
66
68
  const feedId = getFeedId(cacheKey);
67
69
  if (feedId) {
68
70
  feedToCacheKey.set(feedId, cacheKey);
@@ -101,8 +103,9 @@ export class PythOracle {
101
103
  * @throws PriceNotAvailableError if chain has no native feed mapping.
102
104
  */
103
105
  async getNativePrice(chain) {
106
+ const network = resolveNetwork(chain);
104
107
  const decimals = chain === 'solana' ? 9 : 18;
105
- return this.getPrice({ address: 'native', decimals, chain });
108
+ return this.getPrice({ address: 'native', decimals, chain, network });
106
109
  }
107
110
  /**
108
111
  * Get cache statistics.
@@ -1 +1 @@
1
- {"version":3,"file":"pyth-oracle.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pyth-oracle.js","sourceRoot":"","sources":["../../../src/infrastructure/oracle/pyth-oracle.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import type * as schema from '../database/schema.js';
11
11
  import { type TokenEntry } from './builtin-tokens.js';
12
12
  export interface RegistryToken extends TokenEntry {
13
13
  source: 'builtin' | 'custom';
14
+ assetId?: string | null;
14
15
  }
15
16
  export declare class TokenRegistryService {
16
17
  private readonly db;
@@ -1 +1 @@
1
- {"version":3,"file":"token-registry-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/token-registry/token-registry-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGxE,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC;IAErE;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA+BpE;;;;OAIG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB1B;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E;;;OAGG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAS1F"}
1
+ {"version":3,"file":"token-registry-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/token-registry/token-registry-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKxE,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC;IAErE;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA0CpE;;;;OAIG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB1B;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E;;;OAGG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAS1F"}
@@ -10,6 +10,7 @@ import { eq, and } from 'drizzle-orm';
10
10
  import { tokenRegistry } from '../database/schema.js';
11
11
  import { getBuiltinTokens } from './builtin-tokens.js';
12
12
  import { generateId } from '../database/id.js';
13
+ import { tokenAssetId } from '@waiaas/core';
13
14
  export class TokenRegistryService {
14
15
  db;
15
16
  constructor(db) {
@@ -31,15 +32,28 @@ export class TokenRegistryService {
31
32
  // 3. Merge: custom overrides built-in for same address (case-insensitive)
32
33
  const merged = new Map();
33
34
  for (const t of builtins) {
34
- merged.set(t.address.toLowerCase(), { ...t, source: 'builtin' });
35
+ let assetId = null;
36
+ try {
37
+ assetId = tokenAssetId(network, t.address);
38
+ }
39
+ catch { /* unknown network */ }
40
+ merged.set(t.address.toLowerCase(), { ...t, source: 'builtin', assetId });
35
41
  }
36
42
  for (const row of customRows) {
43
+ let assetId = row.assetId ?? null;
44
+ if (!assetId) {
45
+ try {
46
+ assetId = tokenAssetId(network, row.address);
47
+ }
48
+ catch { /* fallback null */ }
49
+ }
37
50
  merged.set(row.address.toLowerCase(), {
38
51
  address: row.address,
39
52
  symbol: row.symbol,
40
53
  name: row.name,
41
54
  decimals: row.decimals,
42
55
  source: row.source,
56
+ assetId,
43
57
  });
44
58
  }
45
59
  // 4. Sort by symbol alphabetically
@@ -1 +1 @@
1
- {"version":3,"file":"token-registry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/token-registry/token-registry-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-registry-service.js","sourceRoot":"","sources":["../../../src/infrastructure/token-registry/token-registry-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG9E,qBAAa,cAAe,YAAW,oBAAoB;IACzD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,UAAU,CAAM;IAElB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CvD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ;CAYjB"}
1
+ {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/discord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG9E,qBAAa,cAAe,YAAW,oBAAoB;IACzD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,UAAU,CAAM;IAElB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDvD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ;CAYjB"}