@zofai/zo-sdk 0.2.14 → 0.2.16
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/abstract/BaseAPI.cjs +5 -0
- package/dist/abstract/BaseAPI.cjs.map +1 -1
- package/dist/abstract/BaseAPI.d.cts +2 -1
- package/dist/abstract/BaseAPI.d.cts.map +1 -1
- package/dist/abstract/BaseAPI.d.mts +2 -1
- package/dist/abstract/BaseAPI.d.mts.map +1 -1
- package/dist/abstract/BaseAPI.mjs +5 -0
- package/dist/abstract/BaseAPI.mjs.map +1 -1
- package/dist/abstract/BaseDataAPI.cjs +1 -1
- package/dist/abstract/BaseDataAPI.cjs.map +1 -1
- package/dist/abstract/BaseDataAPI.mjs +1 -1
- package/dist/abstract/BaseDataAPI.mjs.map +1 -1
- package/dist/consts/deployments-usdz-mainnet.json +1 -1
- package/dist/consts/deployments-zo-oracle-mainnet.json +329 -0
- package/dist/consts/index.cjs +35 -1
- package/dist/consts/index.cjs.map +1 -1
- package/dist/consts/index.d.cts +45 -0
- package/dist/consts/index.d.cts.map +1 -1
- package/dist/consts/index.d.mts +45 -0
- package/dist/consts/index.d.mts.map +1 -1
- package/dist/consts/index.mjs +31 -0
- package/dist/consts/index.mjs.map +1 -1
- package/dist/data.cjs +1 -1
- package/dist/data.cjs.map +1 -1
- package/dist/data.mjs +1 -1
- package/dist/data.mjs.map +1 -1
- package/dist/implementations/SLPAPI.cjs +3 -2
- package/dist/implementations/SLPAPI.cjs.map +1 -1
- package/dist/implementations/SLPAPI.d.cts.map +1 -1
- package/dist/implementations/SLPAPI.d.mts.map +1 -1
- package/dist/implementations/SLPAPI.mjs +3 -2
- package/dist/implementations/SLPAPI.mjs.map +1 -1
- package/dist/implementations/USDZAPI.cjs +531 -81
- package/dist/implementations/USDZAPI.cjs.map +1 -1
- package/dist/implementations/USDZAPI.d.cts +62 -0
- package/dist/implementations/USDZAPI.d.cts.map +1 -1
- package/dist/implementations/USDZAPI.d.mts +62 -0
- package/dist/implementations/USDZAPI.d.mts.map +1 -1
- package/dist/implementations/USDZAPI.mjs +532 -82
- package/dist/implementations/USDZAPI.mjs.map +1 -1
- package/dist/implementations/USDZDataAPI.cjs +38 -0
- package/dist/implementations/USDZDataAPI.cjs.map +1 -1
- package/dist/implementations/USDZDataAPI.d.cts +16 -0
- package/dist/implementations/USDZDataAPI.d.cts.map +1 -1
- package/dist/implementations/USDZDataAPI.d.mts +16 -0
- package/dist/implementations/USDZDataAPI.d.mts.map +1 -1
- package/dist/implementations/USDZDataAPI.mjs +38 -0
- package/dist/implementations/USDZDataAPI.mjs.map +1 -1
- package/dist/implementations/ZBTCVCAPI.cjs +3 -1
- package/dist/implementations/ZBTCVCAPI.cjs.map +1 -1
- package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -1
- package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -1
- package/dist/implementations/ZBTCVCAPI.mjs +3 -1
- package/dist/implementations/ZBTCVCAPI.mjs.map +1 -1
- package/dist/implementations/ZLPAPI.cjs +3 -2
- package/dist/implementations/ZLPAPI.cjs.map +1 -1
- package/dist/implementations/ZLPAPI.d.cts.map +1 -1
- package/dist/implementations/ZLPAPI.d.mts.map +1 -1
- package/dist/implementations/ZLPAPI.mjs +3 -2
- package/dist/implementations/ZLPAPI.mjs.map +1 -1
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/base.d.cts +20 -2
- package/dist/interfaces/base.d.cts.map +1 -1
- package/dist/interfaces/base.d.mts +20 -2
- package/dist/interfaces/base.d.mts.map +1 -1
- package/dist/interfaces/usdz.d.cts +19 -0
- package/dist/interfaces/usdz.d.cts.map +1 -1
- package/dist/interfaces/usdz.d.mts +19 -0
- package/dist/interfaces/usdz.d.mts.map +1 -1
- package/dist/oracle.cjs +119 -1
- package/dist/oracle.cjs.map +1 -1
- package/dist/oracle.d.cts +57 -1
- package/dist/oracle.d.cts.map +1 -1
- package/dist/oracle.d.mts +57 -1
- package/dist/oracle.d.mts.map +1 -1
- package/dist/oracle.mjs +120 -2
- package/dist/oracle.mjs.map +1 -1
- package/dist/oraclePro.cjs +211 -0
- package/dist/oraclePro.cjs.map +1 -0
- package/dist/oraclePro.d.cts +90 -0
- package/dist/oraclePro.d.cts.map +1 -0
- package/dist/oraclePro.d.mts +90 -0
- package/dist/oraclePro.d.mts.map +1 -0
- package/dist/oraclePro.mjs +194 -0
- package/dist/oraclePro.mjs.map +1 -0
- package/dist/pythProClient.cjs +277 -0
- package/dist/pythProClient.cjs.map +1 -0
- package/dist/pythProClient.d.cts +143 -0
- package/dist/pythProClient.d.cts.map +1 -0
- package/dist/pythProClient.d.mts +143 -0
- package/dist/pythProClient.d.mts.map +1 -0
- package/dist/pythProClient.mjs +269 -0
- package/dist/pythProClient.mjs.map +1 -0
- package/dist/storkClient.cjs +217 -0
- package/dist/storkClient.cjs.map +1 -0
- package/dist/storkClient.d.cts +90 -0
- package/dist/storkClient.d.cts.map +1 -0
- package/dist/storkClient.d.mts +90 -0
- package/dist/storkClient.d.mts.map +1 -0
- package/dist/storkClient.mjs +208 -0
- package/dist/storkClient.mjs.map +1 -0
- package/dist/storkOracle.cjs +61 -0
- package/dist/storkOracle.cjs.map +1 -0
- package/dist/storkOracle.d.cts +21 -0
- package/dist/storkOracle.d.cts.map +1 -0
- package/dist/storkOracle.d.mts +21 -0
- package/dist/storkOracle.d.mts.map +1 -0
- package/dist/storkOracle.mjs +56 -0
- package/dist/storkOracle.mjs.map +1 -0
- package/package.json +1 -1
- package/src/abstract/BaseAPI.ts +11 -0
- package/src/abstract/BaseDataAPI.ts +1 -1
- package/src/consts/deployments-usdz-mainnet.json +1 -1
- package/src/consts/deployments-zo-oracle-mainnet.json +329 -0
- package/src/consts/index.ts +80 -0
- package/src/data.ts +1 -1
- package/src/implementations/SLPAPI.ts +5 -5
- package/src/implementations/USDZAPI.ts +906 -107
- package/src/implementations/USDZDataAPI.ts +42 -0
- package/src/implementations/ZBTCVCAPI.ts +6 -4
- package/src/implementations/ZLPAPI.ts +6 -5
- package/src/index.ts +3 -0
- package/src/interfaces/base.ts +55 -1
- package/src/interfaces/usdz.ts +170 -0
- package/src/oracle.ts +222 -1
- package/src/oraclePro.ts +309 -0
- package/src/pythProClient.ts +406 -0
- package/src/storkClient.ts +328 -0
- package/src/storkOracle.ts +82 -0
- package/tests/pythProClient.test.ts +155 -0
- package/tests/storkClient.test.ts +316 -0
package/dist/oracle.d.cts
CHANGED
|
@@ -4,12 +4,26 @@ import type { PriceFeed } from "@pythnetwork/pyth-sui-js";
|
|
|
4
4
|
import { SuiPythClient } from "@pythnetwork/pyth-sui-js";
|
|
5
5
|
import type { IConsts, Network } from "./consts/index.cjs";
|
|
6
6
|
import { LPToken } from "./consts/index.cjs";
|
|
7
|
+
import type { IFetchPythProUpdateOptions, IInitPythProOracleTxbResult, OracleInputs } from "./oraclePro.cjs";
|
|
8
|
+
import type { IGetLatestPythProPricesOptions, IPythProStreamSubscription, PythProLatestPriceData, PythProStreamUpdate } from "./pythProClient.cjs";
|
|
9
|
+
import { PythProStreamClient } from "./pythProClient.cjs";
|
|
10
|
+
import type { IStorkUpdateData } from "./storkClient.cjs";
|
|
7
11
|
import type { SuiClient } from "./suiClient.cjs";
|
|
8
12
|
export interface IInitOracleSponsorOptions {
|
|
9
13
|
sender: string;
|
|
10
14
|
/** SUI (MIST) needed beyond Pyth update fees, e.g. SUI collateral deposit + relayer fee. */
|
|
11
15
|
additionalSuiAmount?: bigint;
|
|
12
16
|
}
|
|
17
|
+
export interface IInitPythProOracleOptions extends IFetchPythProUpdateOptions {
|
|
18
|
+
/** Pre-fetched leEcdsa update bytes. When omitted, bytes are fetched via kronos REST. */
|
|
19
|
+
rawUpdateBytes?: Uint8Array | number[];
|
|
20
|
+
/** Pre-fetched Stork update payloads. When omitted, fetched via kronos REST when needed. */
|
|
21
|
+
storkUpdateData?: IStorkUpdateData[];
|
|
22
|
+
/** Skip Stork on-chain updates even when assets are configured. */
|
|
23
|
+
skipStork?: boolean;
|
|
24
|
+
/** Coin to split Stork update fees from (defaults to gas coin). */
|
|
25
|
+
storkFeeSource?: TransactionObjectArgument;
|
|
26
|
+
}
|
|
13
27
|
export interface IInitOracleTxbResult {
|
|
14
28
|
tx: Transaction;
|
|
15
29
|
/** Remaining SUI coin after Pyth fee splits; present when sponsored and SUI was resolved. */
|
|
@@ -20,12 +34,14 @@ export declare class OracleAPI {
|
|
|
20
34
|
consts: IConsts;
|
|
21
35
|
sharedConfig: IConsts;
|
|
22
36
|
connectionURL: string;
|
|
37
|
+
/** Kronos REST base URL for Pyth Pro proxy. Defaults to `DEFAULT_API_ENDPOINT`. */
|
|
38
|
+
apiEndpoint: string;
|
|
23
39
|
PythFeederToPriceId: Record<string, string>;
|
|
24
40
|
PythFeederToId: Record<string, string>;
|
|
25
41
|
provider: SuiClient;
|
|
26
42
|
client: SuiPythClient;
|
|
27
43
|
private priceCache;
|
|
28
|
-
constructor(network: Network, provider: SuiClient | null, connectionURL: string, lpToken?: LPToken);
|
|
44
|
+
constructor(network: Network, provider: SuiClient | null, connectionURL: string, lpToken?: LPToken, apiEndpoint?: string);
|
|
29
45
|
validateCache(): void;
|
|
30
46
|
getOraclePrice(tokenId: string): Promise<PriceFeed>;
|
|
31
47
|
getOraclePrices(tokens: string[]): Promise<PriceFeed[]>;
|
|
@@ -33,5 +49,45 @@ export declare class OracleAPI {
|
|
|
33
49
|
getStalePriceFeedIds(tokens: string[]): Promise<string[]>;
|
|
34
50
|
initOracleTxb(tokens: string[], tx?: Transaction, sponsoredTx?: boolean, sponsorOptions?: IInitOracleSponsorOptions): Promise<IInitOracleTxbResult>;
|
|
35
51
|
getBaseUpdateFee(): Promise<number>;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve SDK token ids (e.g. `sui`, `btc`) to Pyth Lazer numeric feed ids.
|
|
54
|
+
*/
|
|
55
|
+
resolveLazerFeedIdsForTokens(tokens: string[]): number[];
|
|
56
|
+
/** Map SDK token ids to kronos Stork asset ids (e.g. `BTCUSD`). */
|
|
57
|
+
resolveStorkAssetsForTokens(tokens: string[]): string[];
|
|
58
|
+
/** Fetch Stork on-chain update payloads via kronos REST. */
|
|
59
|
+
fetchStorkUpdateDataForTokens(tokens: string[]): Promise<IStorkUpdateData[]>;
|
|
60
|
+
/** Estimated Stork update fee in MIST for the given SDK tokens. */
|
|
61
|
+
estimateStorkUpdateFeeForTokens(tokens: string[]): bigint;
|
|
62
|
+
/** Kronos REST base URL used for Pyth Pro / Stork (`options.kronosUrl` overrides per call). */
|
|
63
|
+
protected resolveKronosUrl(kronosUrl?: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* V3 oracle PTB prelude: Stork on-chain updates → Pyth Pro verify → OracleInputs.
|
|
66
|
+
* Order: (1) Stork update, (2) parse_and_verify_le_ecdsa_update_v2, (3) ready for market op.
|
|
67
|
+
*/
|
|
68
|
+
initV3OracleTxb(tokens: string[], tx?: Transaction, options?: IInitPythProOracleOptions): Promise<IInitPythProOracleTxbResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Latest Pyth Pro prices via kronos REST (`/pyth-pro/latest-price`).
|
|
71
|
+
*/
|
|
72
|
+
getLatestPythProPricesForTokens(tokens: string[], options?: Omit<IGetLatestPythProPricesOptions, 'priceFeedIds'>): Promise<PythProLatestPriceData>;
|
|
73
|
+
/** WebSocket client for kronos `/pyth-pro/stream`. */
|
|
74
|
+
createPythProStreamClient(kronosUrl?: string): PythProStreamClient;
|
|
75
|
+
/**
|
|
76
|
+
* Subscribe to live Pyth Pro prices for SDK tokens via kronos WebSocket.
|
|
77
|
+
* Returns unsubscribe (closes subscription; disconnect the client separately if unused).
|
|
78
|
+
*/
|
|
79
|
+
subPythProPricesForTokens(tokens: string[], onUpdate: (update: PythProStreamUpdate) => void, options?: Omit<IPythProStreamSubscription, 'subscriptionId' | 'priceFeedIds'>, subscriptionId?: number): Promise<() => void>;
|
|
80
|
+
/**
|
|
81
|
+
* Fetch leEcdsa update bytes covering all tokens' Pyth Lazer feed ids via kronos REST.
|
|
82
|
+
*/
|
|
83
|
+
fetchPythProUpdateBytesForTokens(tokens: string[], options?: IFetchPythProUpdateOptions): Promise<Uint8Array>;
|
|
84
|
+
protected getOracleProConfig(): import("./consts/index.cjs").IOracleProConfig;
|
|
85
|
+
/**
|
|
86
|
+
* PTB step for Pyth Pro paths: Stork updates (when configured) + parse_and_verify_le_ecdsa_update_v2.
|
|
87
|
+
* @deprecated Alias for {@link initV3OracleTxb}.
|
|
88
|
+
*/
|
|
89
|
+
initPythProOracleTxb(tokens: string[], tx?: Transaction, options?: IInitPythProOracleOptions): Promise<IInitPythProOracleTxbResult>;
|
|
90
|
+
/** Re-use an already-verified Update object (composed PTBs). */
|
|
91
|
+
buildOracleInputsFromUpdate(tx: Transaction, pythProUpdate: TransactionObjectArgument): OracleInputs;
|
|
36
92
|
}
|
|
37
93
|
//# sourceMappingURL=oracle.d.cts.map
|
package/dist/oracle.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.cts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iCAAgC;AACzE,OAAO,EAAE,WAAW,EAAE,iCAAgC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,iCAAgC;AACzD,OAAO,EAA6B,aAAa,EAAE,iCAAgC;AAGnF,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,2BAAgB;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"oracle.d.cts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
package/dist/oracle.d.mts
CHANGED
|
@@ -4,12 +4,26 @@ import type { PriceFeed } from "@pythnetwork/pyth-sui-js";
|
|
|
4
4
|
import { SuiPythClient } from "@pythnetwork/pyth-sui-js";
|
|
5
5
|
import type { IConsts, Network } from "./consts/index.mjs";
|
|
6
6
|
import { LPToken } from "./consts/index.mjs";
|
|
7
|
+
import type { IFetchPythProUpdateOptions, IInitPythProOracleTxbResult, OracleInputs } from "./oraclePro.mjs";
|
|
8
|
+
import type { IGetLatestPythProPricesOptions, IPythProStreamSubscription, PythProLatestPriceData, PythProStreamUpdate } from "./pythProClient.mjs";
|
|
9
|
+
import { PythProStreamClient } from "./pythProClient.mjs";
|
|
10
|
+
import type { IStorkUpdateData } from "./storkClient.mjs";
|
|
7
11
|
import type { SuiClient } from "./suiClient.mjs";
|
|
8
12
|
export interface IInitOracleSponsorOptions {
|
|
9
13
|
sender: string;
|
|
10
14
|
/** SUI (MIST) needed beyond Pyth update fees, e.g. SUI collateral deposit + relayer fee. */
|
|
11
15
|
additionalSuiAmount?: bigint;
|
|
12
16
|
}
|
|
17
|
+
export interface IInitPythProOracleOptions extends IFetchPythProUpdateOptions {
|
|
18
|
+
/** Pre-fetched leEcdsa update bytes. When omitted, bytes are fetched via kronos REST. */
|
|
19
|
+
rawUpdateBytes?: Uint8Array | number[];
|
|
20
|
+
/** Pre-fetched Stork update payloads. When omitted, fetched via kronos REST when needed. */
|
|
21
|
+
storkUpdateData?: IStorkUpdateData[];
|
|
22
|
+
/** Skip Stork on-chain updates even when assets are configured. */
|
|
23
|
+
skipStork?: boolean;
|
|
24
|
+
/** Coin to split Stork update fees from (defaults to gas coin). */
|
|
25
|
+
storkFeeSource?: TransactionObjectArgument;
|
|
26
|
+
}
|
|
13
27
|
export interface IInitOracleTxbResult {
|
|
14
28
|
tx: Transaction;
|
|
15
29
|
/** Remaining SUI coin after Pyth fee splits; present when sponsored and SUI was resolved. */
|
|
@@ -20,12 +34,14 @@ export declare class OracleAPI {
|
|
|
20
34
|
consts: IConsts;
|
|
21
35
|
sharedConfig: IConsts;
|
|
22
36
|
connectionURL: string;
|
|
37
|
+
/** Kronos REST base URL for Pyth Pro proxy. Defaults to `DEFAULT_API_ENDPOINT`. */
|
|
38
|
+
apiEndpoint: string;
|
|
23
39
|
PythFeederToPriceId: Record<string, string>;
|
|
24
40
|
PythFeederToId: Record<string, string>;
|
|
25
41
|
provider: SuiClient;
|
|
26
42
|
client: SuiPythClient;
|
|
27
43
|
private priceCache;
|
|
28
|
-
constructor(network: Network, provider: SuiClient | null, connectionURL: string, lpToken?: LPToken);
|
|
44
|
+
constructor(network: Network, provider: SuiClient | null, connectionURL: string, lpToken?: LPToken, apiEndpoint?: string);
|
|
29
45
|
validateCache(): void;
|
|
30
46
|
getOraclePrice(tokenId: string): Promise<PriceFeed>;
|
|
31
47
|
getOraclePrices(tokens: string[]): Promise<PriceFeed[]>;
|
|
@@ -33,5 +49,45 @@ export declare class OracleAPI {
|
|
|
33
49
|
getStalePriceFeedIds(tokens: string[]): Promise<string[]>;
|
|
34
50
|
initOracleTxb(tokens: string[], tx?: Transaction, sponsoredTx?: boolean, sponsorOptions?: IInitOracleSponsorOptions): Promise<IInitOracleTxbResult>;
|
|
35
51
|
getBaseUpdateFee(): Promise<number>;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve SDK token ids (e.g. `sui`, `btc`) to Pyth Lazer numeric feed ids.
|
|
54
|
+
*/
|
|
55
|
+
resolveLazerFeedIdsForTokens(tokens: string[]): number[];
|
|
56
|
+
/** Map SDK token ids to kronos Stork asset ids (e.g. `BTCUSD`). */
|
|
57
|
+
resolveStorkAssetsForTokens(tokens: string[]): string[];
|
|
58
|
+
/** Fetch Stork on-chain update payloads via kronos REST. */
|
|
59
|
+
fetchStorkUpdateDataForTokens(tokens: string[]): Promise<IStorkUpdateData[]>;
|
|
60
|
+
/** Estimated Stork update fee in MIST for the given SDK tokens. */
|
|
61
|
+
estimateStorkUpdateFeeForTokens(tokens: string[]): bigint;
|
|
62
|
+
/** Kronos REST base URL used for Pyth Pro / Stork (`options.kronosUrl` overrides per call). */
|
|
63
|
+
protected resolveKronosUrl(kronosUrl?: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* V3 oracle PTB prelude: Stork on-chain updates → Pyth Pro verify → OracleInputs.
|
|
66
|
+
* Order: (1) Stork update, (2) parse_and_verify_le_ecdsa_update_v2, (3) ready for market op.
|
|
67
|
+
*/
|
|
68
|
+
initV3OracleTxb(tokens: string[], tx?: Transaction, options?: IInitPythProOracleOptions): Promise<IInitPythProOracleTxbResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Latest Pyth Pro prices via kronos REST (`/pyth-pro/latest-price`).
|
|
71
|
+
*/
|
|
72
|
+
getLatestPythProPricesForTokens(tokens: string[], options?: Omit<IGetLatestPythProPricesOptions, 'priceFeedIds'>): Promise<PythProLatestPriceData>;
|
|
73
|
+
/** WebSocket client for kronos `/pyth-pro/stream`. */
|
|
74
|
+
createPythProStreamClient(kronosUrl?: string): PythProStreamClient;
|
|
75
|
+
/**
|
|
76
|
+
* Subscribe to live Pyth Pro prices for SDK tokens via kronos WebSocket.
|
|
77
|
+
* Returns unsubscribe (closes subscription; disconnect the client separately if unused).
|
|
78
|
+
*/
|
|
79
|
+
subPythProPricesForTokens(tokens: string[], onUpdate: (update: PythProStreamUpdate) => void, options?: Omit<IPythProStreamSubscription, 'subscriptionId' | 'priceFeedIds'>, subscriptionId?: number): Promise<() => void>;
|
|
80
|
+
/**
|
|
81
|
+
* Fetch leEcdsa update bytes covering all tokens' Pyth Lazer feed ids via kronos REST.
|
|
82
|
+
*/
|
|
83
|
+
fetchPythProUpdateBytesForTokens(tokens: string[], options?: IFetchPythProUpdateOptions): Promise<Uint8Array>;
|
|
84
|
+
protected getOracleProConfig(): import("./consts/index.mjs").IOracleProConfig;
|
|
85
|
+
/**
|
|
86
|
+
* PTB step for Pyth Pro paths: Stork updates (when configured) + parse_and_verify_le_ecdsa_update_v2.
|
|
87
|
+
* @deprecated Alias for {@link initV3OracleTxb}.
|
|
88
|
+
*/
|
|
89
|
+
initPythProOracleTxb(tokens: string[], tx?: Transaction, options?: IInitPythProOracleOptions): Promise<IInitPythProOracleTxbResult>;
|
|
90
|
+
/** Re-use an already-verified Update object (composed PTBs). */
|
|
91
|
+
buildOracleInputsFromUpdate(tx: Transaction, pythProUpdate: TransactionObjectArgument): OracleInputs;
|
|
36
92
|
}
|
|
37
93
|
//# sourceMappingURL=oracle.d.mts.map
|
package/dist/oracle.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.mts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iCAAgC;AACzE,OAAO,EAAE,WAAW,EAAE,iCAAgC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,iCAAgC;AACzD,OAAO,EAA6B,aAAa,EAAE,iCAAgC;AAGnF,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,2BAAgB;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"oracle.d.mts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
package/dist/oracle.mjs
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { Transaction } from "@mysten/sui/transactions";
|
|
2
2
|
import { SuiPriceServiceConnection, SuiPythClient } from "@pythnetwork/pyth-sui-js";
|
|
3
3
|
import { resolveSpendableSuiCoin } from "./coins.mjs";
|
|
4
|
-
import { getConsts, getPriceIdToPythFeeder, getPythFeederToId, getPythFeederToPriceId, getSharedConfig, LPToken } from "./consts/index.mjs";
|
|
4
|
+
import { buildOracleProConfig, DEFAULT_API_ENDPOINT, getConsts, getPriceIdToPythFeeder, getPythFeederToId, getPythFeederToPriceId, getSharedConfig, getZoOracleConfig, LPToken } from "./consts/index.mjs";
|
|
5
|
+
import { buildOracleInputs, buildStorkAssetIdMap, fetchPythProUpdateBytes, parseAndVerifyPythProUpdate, resolveLazerFeedIds, resolveStorkAssetsForTokens } from "./oraclePro.mjs";
|
|
6
|
+
import { getLatestPythProPrices, PythProStreamClient } from "./pythProClient.mjs";
|
|
7
|
+
import { fetchStorkUpdateDataFromKronos } from "./storkClient.mjs";
|
|
8
|
+
import { appendStorkUpdatesToTransaction, estimateStorkUpdateFeeMist } from "./storkOracle.mjs";
|
|
5
9
|
import { createJsonRpcProvider } from "./utils.mjs";
|
|
6
10
|
export class OracleAPI {
|
|
7
11
|
constructor(network, provider,
|
|
8
12
|
// todo 需要从配置文件中获取
|
|
9
|
-
connectionURL, lpToken = LPToken.ZLP) {
|
|
13
|
+
connectionURL, lpToken = LPToken.ZLP, apiEndpoint = DEFAULT_API_ENDPOINT) {
|
|
10
14
|
this.priceCache = {};
|
|
11
15
|
this.network = network;
|
|
12
16
|
this.consts = getConsts(network, lpToken);
|
|
13
17
|
this.sharedConfig = getSharedConfig(network);
|
|
14
18
|
this.connectionURL = connectionURL;
|
|
19
|
+
this.apiEndpoint = apiEndpoint;
|
|
15
20
|
this.PythFeederToPriceId = getPythFeederToPriceId(network);
|
|
16
21
|
this.PythFeederToId = getPythFeederToId(network);
|
|
17
22
|
this.provider = provider || createJsonRpcProvider(network);
|
|
@@ -115,5 +120,118 @@ export class OracleAPI {
|
|
|
115
120
|
async getBaseUpdateFee() {
|
|
116
121
|
return await this.client.getBaseUpdateFee();
|
|
117
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Resolve SDK token ids (e.g. `sui`, `btc`) to Pyth Lazer numeric feed ids.
|
|
125
|
+
*/
|
|
126
|
+
resolveLazerFeedIdsForTokens(tokens) {
|
|
127
|
+
const zoOracle = getZoOracleConfig(this.network);
|
|
128
|
+
return resolveLazerFeedIds(zoOracle, this.consts.coins, tokens, this.network, this.consts.pythFeeder.feeder);
|
|
129
|
+
}
|
|
130
|
+
/** Map SDK token ids to kronos Stork asset ids (e.g. `BTCUSD`). */
|
|
131
|
+
resolveStorkAssetsForTokens(tokens) {
|
|
132
|
+
const zoOracle = getZoOracleConfig(this.network);
|
|
133
|
+
return resolveStorkAssetsForTokens(zoOracle, this.consts.coins, tokens);
|
|
134
|
+
}
|
|
135
|
+
/** Fetch Stork on-chain update payloads via kronos REST. */
|
|
136
|
+
async fetchStorkUpdateDataForTokens(tokens) {
|
|
137
|
+
const zoOracle = getZoOracleConfig(this.network);
|
|
138
|
+
const assets = this.resolveStorkAssetsForTokens(tokens);
|
|
139
|
+
if (assets.length === 0) {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
return await fetchStorkUpdateDataFromKronos(this.resolveKronosUrl(), assets, buildStorkAssetIdMap(zoOracle));
|
|
143
|
+
}
|
|
144
|
+
/** Estimated Stork update fee in MIST for the given SDK tokens. */
|
|
145
|
+
estimateStorkUpdateFeeForTokens(tokens) {
|
|
146
|
+
return estimateStorkUpdateFeeMist(this.resolveStorkAssetsForTokens(tokens).length);
|
|
147
|
+
}
|
|
148
|
+
/** Kronos REST base URL used for Pyth Pro / Stork (`options.kronosUrl` overrides per call). */
|
|
149
|
+
resolveKronosUrl(kronosUrl) {
|
|
150
|
+
return kronosUrl ?? this.apiEndpoint;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* V3 oracle PTB prelude: Stork on-chain updates → Pyth Pro verify → OracleInputs.
|
|
154
|
+
* Order: (1) Stork update, (2) parse_and_verify_le_ecdsa_update_v2, (3) ready for market op.
|
|
155
|
+
*/
|
|
156
|
+
async initV3OracleTxb(tokens, tx, options) {
|
|
157
|
+
const tx_ = tx ?? new Transaction();
|
|
158
|
+
const config = this.getOracleProConfig();
|
|
159
|
+
if (!options?.skipStork) {
|
|
160
|
+
const storkAssets = this.resolveStorkAssetsForTokens(tokens);
|
|
161
|
+
if (storkAssets.length > 0) {
|
|
162
|
+
let storkUpdates = options?.storkUpdateData;
|
|
163
|
+
if (!storkUpdates) {
|
|
164
|
+
const zoOracle = getZoOracleConfig(this.network);
|
|
165
|
+
storkUpdates = await fetchStorkUpdateDataFromKronos(this.resolveKronosUrl(options?.kronosUrl), storkAssets, buildStorkAssetIdMap(zoOracle));
|
|
166
|
+
}
|
|
167
|
+
appendStorkUpdatesToTransaction(tx_, config, storkUpdates, {
|
|
168
|
+
feeSource: options?.storkFeeSource,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
let rawBytes = options?.rawUpdateBytes;
|
|
173
|
+
if (!rawBytes) {
|
|
174
|
+
rawBytes = await this.fetchPythProUpdateBytesForTokens(tokens, options);
|
|
175
|
+
}
|
|
176
|
+
const pythProUpdate = parseAndVerifyPythProUpdate(tx_, config, rawBytes);
|
|
177
|
+
const oracle = buildOracleInputs(tx_, config, pythProUpdate);
|
|
178
|
+
return { tx: tx_, oracle };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Latest Pyth Pro prices via kronos REST (`/pyth-pro/latest-price`).
|
|
182
|
+
*/
|
|
183
|
+
async getLatestPythProPricesForTokens(tokens, options) {
|
|
184
|
+
const priceFeedIds = this.resolveLazerFeedIdsForTokens(tokens);
|
|
185
|
+
return getLatestPythProPrices(this.resolveKronosUrl(options?.kronosUrl), {
|
|
186
|
+
priceFeedIds,
|
|
187
|
+
channel: options?.channel,
|
|
188
|
+
includeEmaPrice: options?.includeEmaPrice,
|
|
189
|
+
includeUpdateBytes: options?.includeUpdateBytes,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
/** WebSocket client for kronos `/pyth-pro/stream`. */
|
|
193
|
+
createPythProStreamClient(kronosUrl) {
|
|
194
|
+
return new PythProStreamClient(this.resolveKronosUrl(kronosUrl));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Subscribe to live Pyth Pro prices for SDK tokens via kronos WebSocket.
|
|
198
|
+
* Returns unsubscribe (closes subscription; disconnect the client separately if unused).
|
|
199
|
+
*/
|
|
200
|
+
async subPythProPricesForTokens(tokens, onUpdate, options, subscriptionId = 1) {
|
|
201
|
+
const client = this.createPythProStreamClient();
|
|
202
|
+
const priceFeedIds = this.resolveLazerFeedIdsForTokens(tokens);
|
|
203
|
+
await client.connect();
|
|
204
|
+
return client.subscribe({
|
|
205
|
+
subscriptionId,
|
|
206
|
+
priceFeedIds,
|
|
207
|
+
...options,
|
|
208
|
+
}, onUpdate);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Fetch leEcdsa update bytes covering all tokens' Pyth Lazer feed ids via kronos REST.
|
|
212
|
+
*/
|
|
213
|
+
async fetchPythProUpdateBytesForTokens(tokens, options) {
|
|
214
|
+
const config = this.getOracleProConfig();
|
|
215
|
+
const feedIds = this.resolveLazerFeedIdsForTokens(tokens);
|
|
216
|
+
return await fetchPythProUpdateBytes(this.resolveKronosUrl(options?.kronosUrl), feedIds, {
|
|
217
|
+
channel: options?.channel ?? config.lazerChannel,
|
|
218
|
+
includeEmaPrice: options?.includeEmaPrice,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
getOracleProConfig() {
|
|
222
|
+
return buildOracleProConfig(getZoOracleConfig(this.network));
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* PTB step for Pyth Pro paths: Stork updates (when configured) + parse_and_verify_le_ecdsa_update_v2.
|
|
226
|
+
* @deprecated Alias for {@link initV3OracleTxb}.
|
|
227
|
+
*/
|
|
228
|
+
async initPythProOracleTxb(tokens, tx, options) {
|
|
229
|
+
return this.initV3OracleTxb(tokens, tx, options);
|
|
230
|
+
}
|
|
231
|
+
/** Re-use an already-verified Update object (composed PTBs). */
|
|
232
|
+
buildOracleInputsFromUpdate(tx, pythProUpdate) {
|
|
233
|
+
const config = this.getOracleProConfig();
|
|
234
|
+
return buildOracleInputs(tx, config, pythProUpdate);
|
|
235
|
+
}
|
|
118
236
|
}
|
|
119
237
|
//# sourceMappingURL=oracle.mjs.map
|
package/dist/oracle.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.mjs","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,iCAAgC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,iCAAgC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,oBAAe;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"oracle.mjs","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeCoinType = normalizeCoinType;
|
|
4
|
+
exports.requireOracleProConfig = requireOracleProConfig;
|
|
5
|
+
exports.buildCoinModuleToLazerFeedId = buildCoinModuleToLazerFeedId;
|
|
6
|
+
exports.resolveLazerFeedIds = resolveLazerFeedIds;
|
|
7
|
+
exports.buildStorkAssetIdMap = buildStorkAssetIdMap;
|
|
8
|
+
exports.resolveStorkAssetsForTokens = resolveStorkAssetsForTokens;
|
|
9
|
+
exports.toUpdateBytes = toUpdateBytes;
|
|
10
|
+
exports.parseAndVerifyPythProUpdate = parseAndVerifyPythProUpdate;
|
|
11
|
+
exports.buildOracleInputs = buildOracleInputs;
|
|
12
|
+
exports.oracleArgsStandard = oracleArgsStandard;
|
|
13
|
+
exports.oracleArgsAlt = oracleArgsAlt;
|
|
14
|
+
exports.buildOracleInputsAlt = buildOracleInputsAlt;
|
|
15
|
+
exports.fetchPythProUpdateBytes = fetchPythProUpdateBytes;
|
|
16
|
+
exports.valuateVaultsV2 = valuateVaultsV2;
|
|
17
|
+
exports.valuateSymbolsV2 = valuateSymbolsV2;
|
|
18
|
+
const utils_1 = require("@mysten/sui/utils");
|
|
19
|
+
const consts_1 = require("./consts/index.cjs");
|
|
20
|
+
const pythProClient_1 = require("./pythProClient.cjs");
|
|
21
|
+
const storkClient_1 = require("./storkClient.cjs");
|
|
22
|
+
const utils_2 = require("./utils.cjs");
|
|
23
|
+
/** Normalize coin type strings for zo_oracle ↔ LP deployment matching. */
|
|
24
|
+
function normalizeCoinType(coinType) {
|
|
25
|
+
const parts = coinType.split('::');
|
|
26
|
+
if (parts.length < 2 || !parts[0].startsWith('0x')) {
|
|
27
|
+
return coinType.toLowerCase();
|
|
28
|
+
}
|
|
29
|
+
const hex = parts[0].slice(2).replace(/^0+/, '') || '0';
|
|
30
|
+
return `0x${hex}::${parts.slice(1).join('::')}`.toLowerCase();
|
|
31
|
+
}
|
|
32
|
+
function requireOracleProConfig(network) {
|
|
33
|
+
return (0, consts_1.buildOracleProConfig)((0, consts_1.getZoOracleConfig)(network));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build coin module -> Lazer feed id using zo_oracle symbol configs + Hermes price id map.
|
|
37
|
+
*/
|
|
38
|
+
function buildCoinModuleToLazerFeedId(pythLazer, zoOracle, network) {
|
|
39
|
+
const pythFeederToPriceId = (0, consts_1.getPythFeederToPriceId)(network);
|
|
40
|
+
const map = new Map();
|
|
41
|
+
for (const config of Object.values(zoOracle.symbolConfigs)) {
|
|
42
|
+
const priceId = pythFeederToPriceId[config.pythFeederId];
|
|
43
|
+
if (!priceId) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const lazerId = pythLazer.feedIds[priceId];
|
|
47
|
+
if (lazerId === undefined) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
map.set(normalizeCoinType(config.coinType), lazerId);
|
|
51
|
+
}
|
|
52
|
+
return map;
|
|
53
|
+
}
|
|
54
|
+
function resolveLazerFeedIds(zoOracle, coins, tokens, network, legacyFeeders) {
|
|
55
|
+
const { pythLazer } = zoOracle;
|
|
56
|
+
const coinModuleMap = buildCoinModuleToLazerFeedId(pythLazer, zoOracle, network);
|
|
57
|
+
const feederToPriceId = (0, consts_1.getPythFeederToPriceId)(network);
|
|
58
|
+
const ids = new Set();
|
|
59
|
+
for (const token of tokens) {
|
|
60
|
+
const module = coins[token]?.module;
|
|
61
|
+
if (!module) {
|
|
62
|
+
throw new Error(`Unknown token: ${token}`);
|
|
63
|
+
}
|
|
64
|
+
let lazerId = coinModuleMap.get(normalizeCoinType(module));
|
|
65
|
+
if (lazerId === undefined && legacyFeeders?.[token]) {
|
|
66
|
+
const priceId = feederToPriceId[legacyFeeders[token]];
|
|
67
|
+
if (priceId) {
|
|
68
|
+
lazerId = pythLazer.feedIds[priceId];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (lazerId === undefined) {
|
|
72
|
+
throw new Error(`No Pyth Lazer feed id for token "${token}" (${module})`);
|
|
73
|
+
}
|
|
74
|
+
ids.add(lazerId);
|
|
75
|
+
}
|
|
76
|
+
return [...ids];
|
|
77
|
+
}
|
|
78
|
+
/** Map Stork asset symbol (e.g. `BTCUSD`) → 32-byte on-chain feeder id bytes. */
|
|
79
|
+
function buildStorkAssetIdMap(zoOracle) {
|
|
80
|
+
const map = new Map();
|
|
81
|
+
for (const [symbolKey, config] of Object.entries(zoOracle.symbolConfigs)) {
|
|
82
|
+
if (!config.storkFeederId) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const asset = symbolKey.replace('/', '');
|
|
86
|
+
map.set(asset, (0, storkClient_1.hexToBytes)(config.storkFeederId));
|
|
87
|
+
}
|
|
88
|
+
return map;
|
|
89
|
+
}
|
|
90
|
+
/** Map SDK token id → kronos Stork asset id (e.g. `btc` → `BTCUSD`). */
|
|
91
|
+
function resolveStorkAssetsForTokens(zoOracle, coins, tokens) {
|
|
92
|
+
const moduleToAsset = new Map();
|
|
93
|
+
for (const [symbolKey, config] of Object.entries(zoOracle.symbolConfigs)) {
|
|
94
|
+
if (!config.storkFeederId) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
moduleToAsset.set(normalizeCoinType(config.coinType), symbolKey.replace('/', ''));
|
|
98
|
+
}
|
|
99
|
+
const assets = new Set();
|
|
100
|
+
for (const token of tokens) {
|
|
101
|
+
const module = coins[token]?.module;
|
|
102
|
+
if (!module) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const asset = moduleToAsset.get(normalizeCoinType(module));
|
|
106
|
+
if (asset) {
|
|
107
|
+
assets.add(asset);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...assets];
|
|
111
|
+
}
|
|
112
|
+
function toUpdateBytes(raw) {
|
|
113
|
+
return raw instanceof Uint8Array ? Array.from(raw) : raw;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* PTB step 0: verify a Pyth Pro leEcdsa update on-chain.
|
|
117
|
+
* Returns the verified `pyth_lazer::update_v2::Update` object.
|
|
118
|
+
*/
|
|
119
|
+
function parseAndVerifyPythProUpdate(tx, config, rawUpdateBytes) {
|
|
120
|
+
const [pythProUpdate] = tx.moveCall({
|
|
121
|
+
target: `${config.pythLazer.package}::pyth_lazer::parse_and_verify_le_ecdsa_update_v2`,
|
|
122
|
+
arguments: [
|
|
123
|
+
tx.object(config.pythLazer.state),
|
|
124
|
+
tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
|
|
125
|
+
tx.pure.vector('u8', toUpdateBytes(rawUpdateBytes)),
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
return pythProUpdate;
|
|
129
|
+
}
|
|
130
|
+
function buildOracleInputs(tx, config, pythProUpdate) {
|
|
131
|
+
return {
|
|
132
|
+
pythProUpdate,
|
|
133
|
+
storkState: tx.object(config.storkState),
|
|
134
|
+
oracleRegistry: tx.object(config.oracleRegistry),
|
|
135
|
+
clock: tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/** Pyth Pro + Stork objects: `[pythProUpdate, storkState, oracleRegistry]`. */
|
|
139
|
+
function oracleArgsStandard(oracle) {
|
|
140
|
+
return [oracle.pythProUpdate, oracle.storkState, oracle.oracleRegistry];
|
|
141
|
+
}
|
|
142
|
+
function oracleArgsAlt(oracle) {
|
|
143
|
+
return [oracle.oracleRegistry, oracle.storkState, oracle.pythProUpdate];
|
|
144
|
+
}
|
|
145
|
+
function buildOracleInputsAlt(oracle) {
|
|
146
|
+
return {
|
|
147
|
+
oracleRegistry: oracle.oracleRegistry,
|
|
148
|
+
storkState: oracle.storkState,
|
|
149
|
+
pythProUpdate: oracle.pythProUpdate,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Fetch leEcdsa update bytes via kronos REST (`/pyth-pro/latest-price?includeUpdateBytes=true`).
|
|
154
|
+
*/
|
|
155
|
+
function fetchPythProUpdateBytes(kronosUrl, feedIds, options) {
|
|
156
|
+
return (0, pythProClient_1.fetchPythProUpdateBytesFromKronos)(kronosUrl, feedIds, options);
|
|
157
|
+
}
|
|
158
|
+
/** create_vaults_valuation + valuate_vault_v2 for each vault. */
|
|
159
|
+
function valuateVaultsV2(params) {
|
|
160
|
+
const { tx, upgradedPackage, lpType, market, vaults, coinModules, oracle } = params;
|
|
161
|
+
const vaultsValuation = tx.moveCall({
|
|
162
|
+
target: `${upgradedPackage}::market::create_vaults_valuation`,
|
|
163
|
+
typeArguments: [lpType],
|
|
164
|
+
arguments: [oracle.clock, tx.object(market)],
|
|
165
|
+
});
|
|
166
|
+
for (const key of Object.keys(vaults)) {
|
|
167
|
+
const vault = vaults[key];
|
|
168
|
+
tx.moveCall({
|
|
169
|
+
target: `${upgradedPackage}::market::valuate_vault_v2`,
|
|
170
|
+
typeArguments: [lpType, coinModules[key].module],
|
|
171
|
+
arguments: [
|
|
172
|
+
tx.object(market),
|
|
173
|
+
tx.object(vault.reservingFeeModel),
|
|
174
|
+
...oracleArgsStandard(oracle),
|
|
175
|
+
oracle.clock,
|
|
176
|
+
vaultsValuation,
|
|
177
|
+
],
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return vaultsValuation;
|
|
181
|
+
}
|
|
182
|
+
/** create_symbols_valuation + valuate_symbol_v2 for each symbol. */
|
|
183
|
+
function valuateSymbolsV2(params) {
|
|
184
|
+
const { tx, upgradedPackage, marketPackage, lpType, market, symbols, coinModules, oracle } = params;
|
|
185
|
+
const symbolsValuation = tx.moveCall({
|
|
186
|
+
target: `${upgradedPackage}::market::create_symbols_valuation`,
|
|
187
|
+
typeArguments: [lpType],
|
|
188
|
+
arguments: [oracle.clock, tx.object(market)],
|
|
189
|
+
});
|
|
190
|
+
for (const key of Object.keys(symbols)) {
|
|
191
|
+
const [direction, token] = (0, utils_2.parseSymbolKey)(key);
|
|
192
|
+
const symbol = symbols[key];
|
|
193
|
+
tx.moveCall({
|
|
194
|
+
target: `${upgradedPackage}::market::valuate_symbol_v2`,
|
|
195
|
+
typeArguments: [
|
|
196
|
+
lpType,
|
|
197
|
+
coinModules[token].module,
|
|
198
|
+
`${marketPackage}::market::${direction.toUpperCase()}`,
|
|
199
|
+
],
|
|
200
|
+
arguments: [
|
|
201
|
+
tx.object(market),
|
|
202
|
+
tx.object(symbol.fundingFeeModel),
|
|
203
|
+
...oracleArgsStandard(oracle),
|
|
204
|
+
oracle.clock,
|
|
205
|
+
symbolsValuation,
|
|
206
|
+
],
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return symbolsValuation;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=oraclePro.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oraclePro.cjs","sourceRoot":"","sources":["../src/oraclePro.ts"],"names":[],"mappings":"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"}
|