@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.
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +5 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/cjs/coingecko/Coingecko.d.ts +32 -6
- package/dist/cjs/coingecko/Coingecko.js +124 -23
- package/dist/cjs/coingecko/Coingecko.js.map +1 -1
- package/dist/cjs/priceClient/adapters/default.d.ts +7 -0
- package/dist/cjs/priceClient/adapters/default.js +30 -0
- package/dist/cjs/priceClient/adapters/default.js.map +1 -0
- package/dist/cjs/priceClient/adapters/index.d.ts +1 -0
- package/dist/cjs/priceClient/adapters/index.js +2 -1
- package/dist/cjs/priceClient/adapters/index.js.map +1 -1
- package/dist/cjs/priceClient/priceClient.d.ts +2 -1
- package/dist/cjs/priceClient/priceClient.js +16 -12
- package/dist/cjs/priceClient/priceClient.js.map +1 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/esm/coingecko/Coingecko.d.ts +32 -6
- package/dist/esm/coingecko/Coingecko.js +125 -23
- package/dist/esm/coingecko/Coingecko.js.map +1 -1
- package/dist/esm/priceClient/adapters/default.d.ts +16 -0
- package/dist/esm/priceClient/adapters/default.js +36 -0
- package/dist/esm/priceClient/adapters/default.js.map +1 -0
- package/dist/esm/priceClient/adapters/index.d.ts +1 -0
- package/dist/esm/priceClient/adapters/index.js +2 -0
- package/dist/esm/priceClient/adapters/index.js.map +1 -1
- package/dist/esm/priceClient/priceClient.d.ts +2 -1
- package/dist/esm/priceClient/priceClient.js +16 -12
- package/dist/esm/priceClient/priceClient.js.map +1 -1
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
- package/dist/types/coingecko/Coingecko.d.ts +32 -6
- package/dist/types/coingecko/Coingecko.d.ts.map +1 -1
- package/dist/types/priceClient/adapters/default.d.ts +17 -0
- package/dist/types/priceClient/adapters/default.d.ts.map +1 -0
- package/dist/types/priceClient/adapters/index.d.ts +1 -0
- package/dist/types/priceClient/adapters/index.d.ts.map +1 -1
- package/dist/types/priceClient/priceClient.d.ts +2 -1
- package/dist/types/priceClient/priceClient.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts +10 -1
- package/src/coingecko/Coingecko.ts +122 -20
- package/src/priceClient/adapters/default.ts +26 -0
- package/src/priceClient/adapters/index.ts +1 -0
- package/src/priceClient/priceClient.ts +10 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceClient.js","sourceRoot":"","sources":["../../../src/priceClient/priceClient.ts"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
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;
|
|
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
|
-
|
|
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<
|
|
44
|
-
getCurrentPriceByContract(contractAddress: string, currency?: string,
|
|
45
|
-
getCurrentPriceById(contractAddress: string, currency?: string,
|
|
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<
|
|
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;
|
|
1
|
+
{"version":3,"file":"Coingecko.d.ts","sourceRoot":"","sources":["../../../src/coingecko/Coingecko.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 +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;
|
|
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
|
@@ -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.
|
|
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(
|
|
107
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
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 =
|
|
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,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
|
|
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
|
|
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 =
|
|
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({
|