@across-protocol/sdk 3.2.16 → 3.3.18

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 (43) hide show
  1. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +5 -1
  2. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  3. package/dist/cjs/coingecko/Coingecko.d.ts +32 -6
  4. package/dist/cjs/coingecko/Coingecko.js +124 -23
  5. package/dist/cjs/coingecko/Coingecko.js.map +1 -1
  6. package/dist/cjs/priceClient/adapters/default.d.ts +7 -0
  7. package/dist/cjs/priceClient/adapters/default.js +30 -0
  8. package/dist/cjs/priceClient/adapters/default.js.map +1 -0
  9. package/dist/cjs/priceClient/adapters/index.d.ts +1 -0
  10. package/dist/cjs/priceClient/adapters/index.js +2 -1
  11. package/dist/cjs/priceClient/adapters/index.js.map +1 -1
  12. package/dist/cjs/priceClient/priceClient.d.ts +2 -1
  13. package/dist/cjs/priceClient/priceClient.js +16 -12
  14. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  15. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -1
  16. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  17. package/dist/esm/coingecko/Coingecko.d.ts +32 -6
  18. package/dist/esm/coingecko/Coingecko.js +125 -23
  19. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  20. package/dist/esm/priceClient/adapters/default.d.ts +16 -0
  21. package/dist/esm/priceClient/adapters/default.js +36 -0
  22. package/dist/esm/priceClient/adapters/default.js.map +1 -0
  23. package/dist/esm/priceClient/adapters/index.d.ts +1 -0
  24. package/dist/esm/priceClient/adapters/index.js +2 -0
  25. package/dist/esm/priceClient/adapters/index.js.map +1 -1
  26. package/dist/esm/priceClient/priceClient.d.ts +2 -1
  27. package/dist/esm/priceClient/priceClient.js +16 -12
  28. package/dist/esm/priceClient/priceClient.js.map +1 -1
  29. package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
  30. package/dist/types/coingecko/Coingecko.d.ts +32 -6
  31. package/dist/types/coingecko/Coingecko.d.ts.map +1 -1
  32. package/dist/types/priceClient/adapters/default.d.ts +17 -0
  33. package/dist/types/priceClient/adapters/default.d.ts.map +1 -0
  34. package/dist/types/priceClient/adapters/index.d.ts +1 -0
  35. package/dist/types/priceClient/adapters/index.d.ts.map +1 -1
  36. package/dist/types/priceClient/priceClient.d.ts +2 -1
  37. package/dist/types/priceClient/priceClient.d.ts.map +1 -1
  38. package/package.json +1 -1
  39. package/src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts +10 -1
  40. package/src/coingecko/Coingecko.ts +122 -20
  41. package/src/priceClient/adapters/default.ts +26 -0
  42. package/src/priceClient/adapters/index.ts +1 -0
  43. package/src/priceClient/priceClient.ts +10 -4
@@ -1 +1 @@
1
- {"version":3,"file":"priceClient.js","sourceRoot":"","sources":["../../../src/priceClient/priceClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"priceClient.js","sourceRoot":"","sources":["../../../src/priceClient/priceClient.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AcrossConfigStoreClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,YAAY,EAYb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,GAAG,EAEH,oBAAoB,EAEpB,sBAAsB,EACtB,wBAAwB,EAExB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAyB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvG,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE;QACN,wBAAwB,EAAE,GAAG,EAAE,CAAC;QAChC,yBAAyB,EAAE,GAAG,EAAE,CAAC;QACjC,uBAAuB,EAAE,MAAM,EAAE,CAAC;KACnC,CAAC;CACH,CAAC;AACF,KAAK,wBAAwB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAIpF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,oBAAY,wBAAwB;IAClC,+BAA+B,oCAAoC;IACnE,4BAA4B,iCAAiC;IAC7D,OAAO,YAAY;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;CAChD;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;IAkB3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAC/B,QAAQ,CAAC,WAAW,EAAE,QAAQ;IAE9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IApB9B,0BAA0B,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAM;IACnE,gBAAgB,EAAE,gBAAgB,EAAE,CAAM;IAC1C,+BAA+B,EAAE,oBAAoB,EAAE,CAAM;IAC7D,+BAA+B,EAAE,kBAAkB,EAAE,CAAM;IAC3D,gCAAgC,EAAE,kBAAkB,EAAE,CAAM;IAC5D,qBAAqB,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAM;IAC3D,uBAAuB,EAAE,sBAAsB,EAAE,CAAM;IACvD,mCAAmC,EAAE,wBAAwB,EAAE,CAAM;IACrE,mCAAmC,EAAE,wBAAwB,EAAE,CAAM;IACrE,8BAA8B,EAAE,oBAAoB,EAAE,CAAM;IAEnE,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAE7D,2BAA2B,UAAS;IACpC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGxB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,WAAW,EAAE,QAAQ,EAC9B,iBAAiB,wDAAoF,EAC5F,kBAAkB,EAAE,MAAM;IAYrC,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,MAAM,EAC9B,kBAAkB,EAAE,MAAM,GAAG,MAAM,EACnC,WAAW,GAAE,MAAM,GAAG,SAAqB,GAC1C,MAAM,CAAC,SAAS,CAAC,SAAS;IAO7B,+BAA+B,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAM,GAAG,SAAqB,GAC1C,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS;IAUzC;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAK5D;;;;;;;;;;OAUG;IACH,yBAAyB,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM,EAAE;IAWlF;;;;;OAKG;IACH,6BAA6B,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM,EAAE;IAKtF;;;;;OAKG;IACH,iCAAiC,CAAC,SAAS,GAAE,MAAgC,GAAG,MAAM,EAAE;IAKxF;;;;;OAKG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAgC,GAAG,OAAO;IAIlG,8BAA8B,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAgC,GAC5C,sBAAsB;IASzB,6CAA6C,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM;IAUpG,8CAA8C,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM;IAUrG;;;;;;;;;OASG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,SAA0B,GAAG,MAAM,EAAE;IAkC5F,gBAAgB,CAAC,KAAK,SAA0B,GAAG,MAAM,EAAE;IAM3D,yBAAyB,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM,EAAE;IAOlF,iCAAiC,CAAC,SAAS,GAAE,MAAgC,GAAG,MAAM;IAKtF,6BAA6B,CAAC,WAAW,GAAE,MAAgC,GAAG,MAAM;IAKpF,sCAAsC,CAAC,SAAS,GAAE,MAAgC,GAAG,OAAO;IAK5F;;;;OAIG;cACa,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;cAIjC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAmC/C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiO7B,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAMxD;;;;;;;OAOG;IACI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,SAA0B,GAAG,mBAAmB,GAAG,SAAS;CAYpH"}
1
+ {"version":3,"file":"AcrossConfigStoreClient.d.ts","sourceRoot":"","sources":["../../../../src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,26 @@ type CGTokenPrice = {
15
15
  [currency: string]: number;
16
16
  last_updated_at: number;
17
17
  };
18
+ export type CoinGeckoTokenList = {
19
+ id: string;
20
+ symbol: string;
21
+ name: string;
22
+ platforms: {
23
+ [platform: string]: string;
24
+ };
25
+ };
26
+ export type PriceHistory = {
27
+ market_data: {
28
+ current_price: {
29
+ [currency: string]: number;
30
+ };
31
+ };
32
+ };
33
+ export type HistoricPriceChartData = {
34
+ prices: Array<[number, number]>;
35
+ market_caps: Array<[number, number]>;
36
+ total_volumes: Array<[number, number]>;
37
+ };
18
38
  export declare class Coingecko {
19
39
  private readonly host;
20
40
  private readonly proHost;
@@ -26,11 +46,17 @@ export declare class Coingecko {
26
46
  private retryDelay;
27
47
  private numRetries;
28
48
  private basicApiTimeout;
49
+ private platformIdMap;
50
+ private tokenIdMap;
29
51
  static get(logger: Logger, apiKey?: string): Coingecko;
30
52
  get maxPriceAge(): number;
31
53
  set maxPriceAge(age: number);
32
54
  protected constructor(host: string, proHost: string, logger: Logger, apiKey?: string | undefined);
33
- getHistoricContractPrices(contract: string, from: number, to: number, currency?: string): Promise<any>;
55
+ protected getPlatformId(chainId: number): Promise<string>;
56
+ protected getCoingeckoTokenId(address: string, chainId: number): Promise<string>;
57
+ getTokenIdFromAddress(address: string, platformId: string): string | undefined;
58
+ updateTokenMap(): Promise<typeof this.tokenIdMap>;
59
+ getHistoricContractPrices(contract: string, from: number, to: number, currency?: string): Promise<[number, number][]>;
34
60
  /**
35
61
  * Get the current price of a token denominated in `currency`.
36
62
  * @param contractAddress The L1 token address to fetch the price for.
@@ -39,13 +65,13 @@ export declare class Coingecko {
39
65
  * @returns The price of the token at the given date.
40
66
  * @throws If today is selected and it is before 3am UTC or if the price is not found.
41
67
  */
42
- getContractHistoricDayPrice(contractAddress: string, date: string, currency?: string): Promise<number>;
43
- getContractDetails(contract_address: string, platform_id?: string): Promise<any>;
44
- getCurrentPriceByContract(contractAddress: string, currency?: string, platform_id?: string): Promise<[string, number]>;
45
- getCurrentPriceById(contractAddress: string, currency?: string, platform_id?: string): Promise<[string, number]>;
68
+ getContractHistoricDayPrice(contractAddress: string, date: string, currency?: string, chainId?: number): Promise<number>;
69
+ getContractDetails(contract_address: string, platform_id?: string): Promise<unknown>;
70
+ getCurrentPriceByContract(contractAddress: string, currency?: string, chainId?: number): Promise<[string, number]>;
71
+ getCurrentPriceById(contractAddress: string, currency?: string, chainId?: number): Promise<[string, number]>;
46
72
  getContractPrices(addresses: Array<string>, currency?: string, platform_id?: string): Promise<CoinGeckoPrice[]>;
47
73
  getPlatforms(): Promise<CoinGeckoAssetPlatform[]>;
48
- call(path: string): Promise<any>;
74
+ call<T>(path: string): Promise<T>;
49
75
  protected getPriceCache(currency: string, platform_id: string): {
50
76
  [addr: string]: CoinGeckoPrice;
51
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Coingecko.d.ts","sourceRoot":"","sources":["../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,UAE/B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,KAAK,YAAY,GAAG;IAClB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAGF,qBAAa,SAAS;IAmClB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IArC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAO;IAG3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,eAAe,CAAO;WAEhB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAWjD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAO1B;IAED,SAAS,aACU,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,oBAAQ;IAO5B,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAQ;IAe5F;;;;;;;OAOG;IACG,2BAA2B,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB3G,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,SAAa;IAI/D,yBAAyB,CAC7B,eAAe,EAAE,MAAM,EACvB,QAAQ,SAAQ,EAChB,WAAW,SAAa,GACvB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAYtB,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,QAAQ,SAAQ,EAChB,WAAW,SAAa,GACvB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4BtB,iBAAiB,CACrB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,QAAQ,SAAQ,EAChB,WAAW,SAAa,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;IA0D5B,YAAY,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAIjD,IAAI,CAAC,IAAI,EAAE,MAAM;IA0BjB,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE;IAMlG,SAAS,CAAC,qBAAqB,CAC7B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,SAAS;IAwB7B,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;YAwBlG,UAAU;YAaV,QAAQ;CAYvB"}
1
+ {"version":3,"file":"Coingecko.d.ts","sourceRoot":"","sources":["../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,UAE/B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,KAAK,YAAY,GAAG;IAClB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE;QACT,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE;QACX,aAAa,EAAE;YACb,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChC,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrC,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC,CAAC;AAGF,qBAAa,SAAS;IAqClB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAvC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAO;IAG3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAA8C;WAElD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAWjD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAO1B;IAED,SAAS,aACU,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,oBAAQ;cAKlB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAyB/C,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoCtF,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMxE,cAAc,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC;IAajD,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAQ;IAe5F;;;;;;;OAOG;IACG,2BAA2B,CAC/B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAQ,EAChB,OAAO,SAAI,GACV,OAAO,CAAC,MAAM,CAAC;IAiBlB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,SAAa;IAI/D,yBAAyB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,SAAQ,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa5G,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,SAAQ,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6BtG,iBAAiB,CACrB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,QAAQ,SAAQ,EAChB,WAAW,SAAa,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;IA0D5B,YAAY,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAIjD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA0BjC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE;IAMlG,SAAS,CAAC,qBAAqB,CAC7B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,cAAc,GAAG,SAAS;IAwB7B,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;YAwBlG,UAAU;YAaV,QAAQ;CAYvB"}
@@ -0,0 +1,17 @@
1
+ import { PriceFeedAdapter, TokenPrice } from "../priceClient";
2
+ import { BaseHTTPAdapter } from "./baseAdapter";
3
+ /**
4
+ * Fallback price adapter to unconditionally return 0 on all input addresses.
5
+ * This adapter can be used as a last-resort to default to a token price of 0
6
+ * in case all other adapters fail to resolve a token price.
7
+ *
8
+ * Note: This adapter could be augmented to permit returning a custom price on a per-token bsis.
9
+ * This would allow the caller to peg token prices, which has been a use cases in the Across API.
10
+ * That's left as an open possibility for now.
11
+ */
12
+ export declare class PriceFeed extends BaseHTTPAdapter implements PriceFeedAdapter {
13
+ constructor();
14
+ getPriceByAddress(address: string, currency: string): Promise<TokenPrice>;
15
+ getPricesByAddress(addresses: string[], _currency: string): Promise<TokenPrice[]>;
16
+ }
17
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../src/priceClient/adapters/default.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,eAAgB,YAAW,gBAAgB;;IAKlE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAK/E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAGlF"}
@@ -1,4 +1,5 @@
1
1
  export * as acrossApi from "./acrossApi";
2
2
  export * as coingecko from "./coingecko";
3
+ export * as defaultAdapter from "./default";
3
4
  export * as defiLlama from "./defiLlama";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/priceClient/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/priceClient/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,cAAc,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC"}
@@ -14,12 +14,13 @@ export declare function msToS(ms: number): number;
14
14
  export declare class PriceClient implements PriceFeedAdapter {
15
15
  protected logger: Logger;
16
16
  readonly priceFeeds: PriceFeedAdapter[];
17
+ readonly throwOnFailure: boolean;
17
18
  readonly name: string;
18
19
  private _maxPriceAge;
19
20
  protected prices: {
20
21
  [currency: string]: PriceCache;
21
22
  };
22
- constructor(logger: Logger, priceFeeds: PriceFeedAdapter[]);
23
+ constructor(logger: Logger, priceFeeds: PriceFeedAdapter[], throwOnFailure?: boolean);
23
24
  get maxPriceAge(): number;
24
25
  set maxPriceAge(age: number);
25
26
  listPriceFeeds(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"priceClient.d.ts","sourceRoot":"","sources":["../../../src/priceClient/priceClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAClF;AAOD,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAExC;AAUD,qBAAa,WAAY,YAAW,gBAAgB;IAQhD,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE;IARzC,SAAgB,IAAI,EAAE,MAAM,CAAiB;IAC7C,OAAO,CAAC,YAAY,CAAO;IAC3B,SAAS,CAAC,MAAM,EAAE;QAChB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;KAChC,CAAM;gBAGK,MAAM,EAAE,MAAM,EACf,UAAU,EAAE,gBAAgB,EAAE;IAMzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAO1B;IAED,cAAc,IAAI,MAAM,EAAE;IAIpB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAQzE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiCtF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;YAKvC,YAAY;IAmC1B,OAAO,CAAC,WAAW;CAqCpB"}
1
+ {"version":3,"file":"priceClient.d.ts","sourceRoot":"","sources":["../../../src/priceClient/priceClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1E,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAClF;AAOD,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAExC;AAUD,qBAAa,WAAY,YAAW,gBAAgB;IAQhD,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE;IACvC,QAAQ,CAAC,cAAc;IATzB,SAAgB,IAAI,EAAE,MAAM,CAAiB;IAC7C,OAAO,CAAC,YAAY,CAAO;IAC3B,SAAS,CAAC,MAAM,EAAE;QAChB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;KAChC,CAAM;gBAGK,MAAM,EAAE,MAAM,EACf,UAAU,EAAE,gBAAgB,EAAE,EAC9B,cAAc,UAAQ;IAUjC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAO1B;IAED,cAAc,IAAI,MAAM,EAAE;IAIpB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAQzE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiCtF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;YAKvC,YAAY;IAmC1B,OAAO,CAAC,WAAW;CAqCpB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "3.2.16",
4
+ "version": "3.3.18",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -371,6 +371,15 @@ export class AcrossConfigStoreClient extends BaseAbstractClient {
371
371
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
372
372
  const { value, key, ...passedArgs } = args;
373
373
 
374
+ // Known transaction hash with bad config update.
375
+ // TODO: turn this into a rule that detects invalid UBAR values.
376
+ if (
377
+ passedArgs.transactionHash.toLowerCase() ===
378
+ "0x422abc617c6598e4b91859f99c392939d2034c1a839a342a963a34a2f0390195".toLowerCase()
379
+ ) {
380
+ throw new Error("Known bad config update found");
381
+ }
382
+
374
383
  // Drop value and key before passing args.
375
384
  if (parsedValue?.rateModel !== undefined) {
376
385
  const rateModelForToken = JSON.stringify(parsedValue.rateModel);
@@ -413,7 +422,7 @@ export class AcrossConfigStoreClient extends BaseAbstractClient {
413
422
  const maxWarnAge = (24 * 60 * 60) / (await utils.averageBlockTimeSeconds());
414
423
  if (result.searchEndBlock - event.blockNumber < maxWarnAge) {
415
424
  const errMsg = isError(err) ? err.message : "unknown error";
416
- this.logger.warn({
425
+ this.logger.debug({
417
426
  at: "ConfigStore::update",
418
427
  message: `Caught error during ConfigStore update: ${errMsg}`,
419
428
  update: args,
@@ -34,6 +34,29 @@ type CGTokenPrice = {
34
34
  last_updated_at: number;
35
35
  };
36
36
 
37
+ export type CoinGeckoTokenList = {
38
+ id: string;
39
+ symbol: string;
40
+ name: string;
41
+ platforms: {
42
+ [platform: string]: string;
43
+ };
44
+ };
45
+
46
+ export type PriceHistory = {
47
+ market_data: {
48
+ current_price: {
49
+ [currency: string]: number;
50
+ };
51
+ };
52
+ };
53
+
54
+ export type HistoricPriceChartData = {
55
+ prices: Array<[number, number]>;
56
+ market_caps: Array<[number, number]>;
57
+ total_volumes: Array<[number, number]>;
58
+ };
59
+
37
60
  // Singleton Coingecko class.
38
61
  export class Coingecko {
39
62
  private static instance: Coingecko | undefined;
@@ -44,6 +67,8 @@ export class Coingecko {
44
67
  private retryDelay = 1;
45
68
  private numRetries = 0; // Most failures are due to 429 rate-limiting, so there is no point in retrying.
46
69
  private basicApiTimeout = 500; // ms
70
+ private platformIdMap = new Map<number, string>(); // chainId => platform_id (137 => "polygon-pos")
71
+ private tokenIdMap: Record<string, Record<string, string>> = {}; // coinGeckoId => { platform_id : "tokenAddress":}
47
72
 
48
73
  public static get(logger: Logger, apiKey?: string) {
49
74
  if (!this.instance)
@@ -78,6 +103,84 @@ export class Coingecko {
78
103
  this.prices = {};
79
104
  }
80
105
 
106
+ protected async getPlatformId(chainId: number): Promise<string> {
107
+ let id = this.platformIdMap.get(chainId);
108
+
109
+ if (id) {
110
+ return id;
111
+ }
112
+
113
+ const platforms = await this.getPlatforms();
114
+ this.platformIdMap = new Map(
115
+ platforms.filter((chain) => Boolean(chain.chain_identifier)).map((chain) => [chain.chain_identifier, chain.id])
116
+ );
117
+
118
+ id = this.platformIdMap.get(chainId);
119
+ if (!id) {
120
+ this.logger.error({
121
+ message: `Coingecko does not support chain with id ${chainId}`,
122
+ at: "Coingecko#getPlatformId",
123
+ });
124
+ throw new Error(`Coingecko does not support chain with id ${chainId}`);
125
+ }
126
+
127
+ return id;
128
+ }
129
+
130
+ // for tokens not found in our constants, we can attempt to fetch the id from coingecko itself
131
+ protected async getCoingeckoTokenId(address: string, chainId: number): Promise<string> {
132
+ let id: string | undefined;
133
+ try {
134
+ id = getCoingeckoTokenIdByAddress(address);
135
+
136
+ return id;
137
+ } catch (error) {
138
+ this.logger.warn({
139
+ at: "Coingecko#getCoingeckoTokenIdByAddress",
140
+ message: `Token with address ${address} not found in constants. Attempting to fetch ID from coingecko API...`,
141
+ });
142
+ }
143
+
144
+ const platformId = await this.getPlatformId(chainId);
145
+
146
+ id = this.getTokenIdFromAddress(address, platformId);
147
+
148
+ if (id) {
149
+ return id;
150
+ }
151
+ await this.updateTokenMap();
152
+
153
+ id = this.getTokenIdFromAddress(address, platformId);
154
+
155
+ if (!id) {
156
+ const message = `Coin with address ${address} does not exist on chain with id ${chainId}`;
157
+ this.logger.error({
158
+ at: "Coingecko#getCoingeckoTokenIdByAddress",
159
+ message,
160
+ });
161
+ throw new Error(message);
162
+ }
163
+
164
+ return id;
165
+ }
166
+
167
+ getTokenIdFromAddress(address: string, platformId: string): string | undefined {
168
+ return Object.entries(this.tokenIdMap).find(([_, value]) =>
169
+ Boolean(value?.[platformId]?.toLowerCase() === address.toLowerCase())
170
+ )?.[0];
171
+ }
172
+
173
+ async updateTokenMap(): Promise<typeof this.tokenIdMap> {
174
+ const rawTokenList = await this.call<Array<CoinGeckoTokenList>>("coins/list?include_platform=true");
175
+ this.tokenIdMap = Object.fromEntries(
176
+ rawTokenList
177
+ .filter((token) => Boolean(Object.values(token?.platforms)?.length > 0))
178
+ .map((token) => [token.id, token.platforms])
179
+ );
180
+
181
+ return this.tokenIdMap;
182
+ }
183
+
81
184
  // Fetch historic prices for a `contract` denominated in `currency` between timestamp `from` and `to`. Note timestamps
82
185
  // are assumed to be js timestamps and are converted to unixtimestamps by dividing by 1000.
83
186
  async getHistoricContractPrices(contract: string, from: number, to: number, currency = "usd") {
@@ -87,7 +190,7 @@ export class Coingecko {
87
190
  assert(to, "requires to timestamp");
88
191
  const _from = msToS(from);
89
192
  const _to = msToS(to);
90
- const result = await this.call(
193
+ const result = await this.call<HistoricPriceChartData>(
91
194
  `coins/ethereum/contract/${contract.toLowerCase()}/market_chart/range/?vs_currency=${currency}&from=${_from}&to=${_to}`
92
195
  );
93
196
  // fyi timestamps are returned in ms in contrast to the current price endpoint
@@ -103,8 +206,13 @@ export class Coingecko {
103
206
  * @returns The price of the token at the given date.
104
207
  * @throws If today is selected and it is before 3am UTC or if the price is not found.
105
208
  */
106
- async getContractHistoricDayPrice(contractAddress: string, date: string, currency = "usd"): Promise<number> {
107
- const coingeckoTokenIdentifier = getCoingeckoTokenIdByAddress(contractAddress);
209
+ async getContractHistoricDayPrice(
210
+ contractAddress: string,
211
+ date: string,
212
+ currency = "usd",
213
+ chainId = 1
214
+ ): Promise<number> {
215
+ const coingeckoTokenIdentifier = await this.getCoingeckoTokenId(contractAddress, chainId);
108
216
  assert(date, "Requires date string");
109
217
  // Build the path for the Coingecko API request
110
218
  const url = `coins/${coingeckoTokenIdentifier}/history`;
@@ -114,7 +222,7 @@ export class Coingecko {
114
222
  localization: "false",
115
223
  };
116
224
  // Grab the result - parse out price, market cap, total volume, and timestamp
117
- const result = await this.call(`${url}?${new URLSearchParams(queryParams).toString()}`);
225
+ const result = await this.call<PriceHistory>(`${url}?${new URLSearchParams(queryParams).toString()}`);
118
226
  const price = result?.market_data?.current_price?.[currency];
119
227
  assert(price, `No price found for ${contractAddress} on ${date}`);
120
228
  return price;
@@ -124,11 +232,8 @@ export class Coingecko {
124
232
  return this.call(`coins/${platform_id}/contract/${contract_address.toLowerCase()}`);
125
233
  }
126
234
 
127
- async getCurrentPriceByContract(
128
- contractAddress: string,
129
- currency = "usd",
130
- platform_id = "ethereum"
131
- ): Promise<[string, number]> {
235
+ async getCurrentPriceByContract(contractAddress: string, currency = "usd", chainId = 1): Promise<[string, number]> {
236
+ const platform_id = await this.getPlatformId(chainId);
132
237
  const priceCache: { [addr: string]: CoinGeckoPrice } = this.getPriceCache(currency, platform_id);
133
238
  let tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
134
239
  if (tokenPrice === undefined) {
@@ -140,17 +245,14 @@ export class Coingecko {
140
245
  return [tokenPrice.timestamp.toString(), tokenPrice.price];
141
246
  }
142
247
 
143
- async getCurrentPriceById(
144
- contractAddress: string,
145
- currency = "usd",
146
- platform_id = "ethereum"
147
- ): Promise<[string, number]> {
148
- const priceCache: { [addr: string]: CoinGeckoPrice } = this.getPriceCache(currency, platform_id);
248
+ async getCurrentPriceById(contractAddress: string, currency = "usd", chainId = 1): Promise<[string, number]> {
249
+ const platform_id = await this.getPlatformId(chainId);
250
+ const priceCache = this.getPriceCache(currency, platform_id);
149
251
  let tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
150
252
  if (tokenPrice === undefined) {
151
- const coingeckoId = getCoingeckoTokenIdByAddress(contractAddress);
253
+ const coingeckoId = await this.getCoingeckoTokenId(contractAddress, chainId);
152
254
  // Build the path for the Coingecko API request
153
- const result = await this.call(
255
+ const result = await this.call<Record<string, CGTokenPrice>>(
154
256
  `simple/price?ids=${coingeckoId}&vs_currencies=${currency}&include_last_updated_at=true`
155
257
  );
156
258
  const cgPrice = result?.[coingeckoId];
@@ -238,18 +340,18 @@ export class Coingecko {
238
340
  return this.call("asset_platforms");
239
341
  }
240
342
 
241
- call(path: string) {
343
+ call<T>(path: string): Promise<T> {
242
344
  const sendRequest = async () => {
243
345
  const { proHost } = this;
244
346
 
245
347
  // If no pro api key, only send basic request:
246
348
  if (this.apiKey === undefined) {
247
- return await this._callBasic(path);
349
+ return (await this._callBasic(path)) as T;
248
350
  }
249
351
 
250
352
  // If pro api key, try basic and use pro as fallback.
251
353
  try {
252
- return await this._callBasic(path, this.basicApiTimeout);
354
+ return (await this._callBasic(path, this.basicApiTimeout)) as T;
253
355
  } catch (err) {
254
356
  this.logger.debug({
255
357
  at: "sdk/coingecko",
@@ -0,0 +1,26 @@
1
+ import { PriceFeedAdapter, TokenPrice } from "../priceClient";
2
+ import { BaseHTTPAdapter } from "./baseAdapter";
3
+
4
+ /**
5
+ * Fallback price adapter to unconditionally return 0 on all input addresses.
6
+ * This adapter can be used as a last-resort to default to a token price of 0
7
+ * in case all other adapters fail to resolve a token price.
8
+ *
9
+ * Note: This adapter could be augmented to permit returning a custom price on a per-token bsis.
10
+ * This would allow the caller to peg token prices, which has been a use cases in the Across API.
11
+ * That's left as an open possibility for now.
12
+ */
13
+ export class PriceFeed extends BaseHTTPAdapter implements PriceFeedAdapter {
14
+ constructor() {
15
+ super("Default Adapter", "127.0.0.1", {});
16
+ }
17
+
18
+ async getPriceByAddress(address: string, currency: string): Promise<TokenPrice> {
19
+ const price = await this.getPricesByAddress([address], currency);
20
+ return price[0];
21
+ }
22
+
23
+ getPricesByAddress(addresses: string[], _currency: string): Promise<TokenPrice[]> {
24
+ return Promise.resolve(addresses.map((address) => ({ address, price: 0, timestamp: 0 })));
25
+ }
26
+ }
@@ -1,3 +1,4 @@
1
1
  export * as acrossApi from "./acrossApi";
2
2
  export * as coingecko from "./coingecko";
3
+ export * as defaultAdapter from "./default";
3
4
  export * as defiLlama from "./defiLlama";
@@ -1,6 +1,7 @@
1
1
  import assert from "assert";
2
2
  import { CoinGeckoPrice } from "../coingecko";
3
3
  import { Logger } from "../relayFeeCalculator"; // @todo: Relocate Logger to utils?
4
+ import { defaultAdapter } from "./adapters";
4
5
 
5
6
  export { Logger }; // Permit adapters to import a common definition.
6
7
  export type TokenPrice = CoinGeckoPrice; // Temporary inversion; CoinGecko should source from here.
@@ -42,10 +43,15 @@ export class PriceClient implements PriceFeedAdapter {
42
43
 
43
44
  constructor(
44
45
  protected logger: Logger,
45
- readonly priceFeeds: PriceFeedAdapter[]
46
+ readonly priceFeeds: PriceFeedAdapter[],
47
+ readonly throwOnFailure = false
46
48
  ) {
47
49
  assert(logger, "No logging instance supplied.");
48
50
  assert(priceFeeds.length > 0, "No price feeds supplied.");
51
+
52
+ if (!throwOnFailure) {
53
+ priceFeeds.push(new defaultAdapter.PriceFeed());
54
+ }
49
55
  }
50
56
 
51
57
  get maxPriceAge(): number {
@@ -80,7 +86,7 @@ export class PriceClient implements PriceFeedAdapter {
80
86
  // Determine whether each *requested* price is current.
81
87
  const now = msToS(Date.now());
82
88
  const missed: { [address: string]: number } = {};
83
- addresses.forEach((address: string) => {
89
+ addresses.forEach((address) => {
84
90
  const addr = address.toLowerCase();
85
91
  const tokenPrice = priceCache[addr] ?? ({ price: 0, timestamp: 0 } as TokenPrice);
86
92
  priceCache[addr] = tokenPrice; // Update priceCache if necessary;
@@ -100,7 +106,7 @@ export class PriceClient implements PriceFeedAdapter {
100
106
  await this.updatePrices(currency);
101
107
  }
102
108
 
103
- return addresses.map((address: string) => {
109
+ return addresses.map((address) => {
104
110
  const { price, timestamp } = priceCache[address.toLowerCase()];
105
111
  return { address, price, timestamp };
106
112
  });
@@ -129,7 +135,7 @@ export class PriceClient implements PriceFeedAdapter {
129
135
  });
130
136
  try {
131
137
  const prices = await priceFeed.getPricesByAddress(addresses, currency);
132
- addresses = await this.updateCache(priceCache, prices, addresses);
138
+ addresses = this.updateCache(priceCache, prices, addresses);
133
139
  if (addresses.length === 0) break; // All done
134
140
  } catch (err) {
135
141
  this.logger.debug({