@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.
Files changed (138) hide show
  1. package/dist/abstract/BaseAPI.cjs +5 -0
  2. package/dist/abstract/BaseAPI.cjs.map +1 -1
  3. package/dist/abstract/BaseAPI.d.cts +2 -1
  4. package/dist/abstract/BaseAPI.d.cts.map +1 -1
  5. package/dist/abstract/BaseAPI.d.mts +2 -1
  6. package/dist/abstract/BaseAPI.d.mts.map +1 -1
  7. package/dist/abstract/BaseAPI.mjs +5 -0
  8. package/dist/abstract/BaseAPI.mjs.map +1 -1
  9. package/dist/abstract/BaseDataAPI.cjs +1 -1
  10. package/dist/abstract/BaseDataAPI.cjs.map +1 -1
  11. package/dist/abstract/BaseDataAPI.mjs +1 -1
  12. package/dist/abstract/BaseDataAPI.mjs.map +1 -1
  13. package/dist/consts/deployments-usdz-mainnet.json +1 -1
  14. package/dist/consts/deployments-zo-oracle-mainnet.json +329 -0
  15. package/dist/consts/index.cjs +35 -1
  16. package/dist/consts/index.cjs.map +1 -1
  17. package/dist/consts/index.d.cts +45 -0
  18. package/dist/consts/index.d.cts.map +1 -1
  19. package/dist/consts/index.d.mts +45 -0
  20. package/dist/consts/index.d.mts.map +1 -1
  21. package/dist/consts/index.mjs +31 -0
  22. package/dist/consts/index.mjs.map +1 -1
  23. package/dist/data.cjs +1 -1
  24. package/dist/data.cjs.map +1 -1
  25. package/dist/data.mjs +1 -1
  26. package/dist/data.mjs.map +1 -1
  27. package/dist/implementations/SLPAPI.cjs +3 -2
  28. package/dist/implementations/SLPAPI.cjs.map +1 -1
  29. package/dist/implementations/SLPAPI.d.cts.map +1 -1
  30. package/dist/implementations/SLPAPI.d.mts.map +1 -1
  31. package/dist/implementations/SLPAPI.mjs +3 -2
  32. package/dist/implementations/SLPAPI.mjs.map +1 -1
  33. package/dist/implementations/USDZAPI.cjs +531 -81
  34. package/dist/implementations/USDZAPI.cjs.map +1 -1
  35. package/dist/implementations/USDZAPI.d.cts +62 -0
  36. package/dist/implementations/USDZAPI.d.cts.map +1 -1
  37. package/dist/implementations/USDZAPI.d.mts +62 -0
  38. package/dist/implementations/USDZAPI.d.mts.map +1 -1
  39. package/dist/implementations/USDZAPI.mjs +532 -82
  40. package/dist/implementations/USDZAPI.mjs.map +1 -1
  41. package/dist/implementations/USDZDataAPI.cjs +38 -0
  42. package/dist/implementations/USDZDataAPI.cjs.map +1 -1
  43. package/dist/implementations/USDZDataAPI.d.cts +16 -0
  44. package/dist/implementations/USDZDataAPI.d.cts.map +1 -1
  45. package/dist/implementations/USDZDataAPI.d.mts +16 -0
  46. package/dist/implementations/USDZDataAPI.d.mts.map +1 -1
  47. package/dist/implementations/USDZDataAPI.mjs +38 -0
  48. package/dist/implementations/USDZDataAPI.mjs.map +1 -1
  49. package/dist/implementations/ZBTCVCAPI.cjs +3 -1
  50. package/dist/implementations/ZBTCVCAPI.cjs.map +1 -1
  51. package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -1
  52. package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -1
  53. package/dist/implementations/ZBTCVCAPI.mjs +3 -1
  54. package/dist/implementations/ZBTCVCAPI.mjs.map +1 -1
  55. package/dist/implementations/ZLPAPI.cjs +3 -2
  56. package/dist/implementations/ZLPAPI.cjs.map +1 -1
  57. package/dist/implementations/ZLPAPI.d.cts.map +1 -1
  58. package/dist/implementations/ZLPAPI.d.mts.map +1 -1
  59. package/dist/implementations/ZLPAPI.mjs +3 -2
  60. package/dist/implementations/ZLPAPI.mjs.map +1 -1
  61. package/dist/index.cjs +3 -0
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +3 -0
  64. package/dist/index.d.cts.map +1 -1
  65. package/dist/index.d.mts +3 -0
  66. package/dist/index.d.mts.map +1 -1
  67. package/dist/index.mjs +3 -0
  68. package/dist/index.mjs.map +1 -1
  69. package/dist/interfaces/base.d.cts +20 -2
  70. package/dist/interfaces/base.d.cts.map +1 -1
  71. package/dist/interfaces/base.d.mts +20 -2
  72. package/dist/interfaces/base.d.mts.map +1 -1
  73. package/dist/interfaces/usdz.d.cts +19 -0
  74. package/dist/interfaces/usdz.d.cts.map +1 -1
  75. package/dist/interfaces/usdz.d.mts +19 -0
  76. package/dist/interfaces/usdz.d.mts.map +1 -1
  77. package/dist/oracle.cjs +119 -1
  78. package/dist/oracle.cjs.map +1 -1
  79. package/dist/oracle.d.cts +57 -1
  80. package/dist/oracle.d.cts.map +1 -1
  81. package/dist/oracle.d.mts +57 -1
  82. package/dist/oracle.d.mts.map +1 -1
  83. package/dist/oracle.mjs +120 -2
  84. package/dist/oracle.mjs.map +1 -1
  85. package/dist/oraclePro.cjs +211 -0
  86. package/dist/oraclePro.cjs.map +1 -0
  87. package/dist/oraclePro.d.cts +90 -0
  88. package/dist/oraclePro.d.cts.map +1 -0
  89. package/dist/oraclePro.d.mts +90 -0
  90. package/dist/oraclePro.d.mts.map +1 -0
  91. package/dist/oraclePro.mjs +194 -0
  92. package/dist/oraclePro.mjs.map +1 -0
  93. package/dist/pythProClient.cjs +277 -0
  94. package/dist/pythProClient.cjs.map +1 -0
  95. package/dist/pythProClient.d.cts +143 -0
  96. package/dist/pythProClient.d.cts.map +1 -0
  97. package/dist/pythProClient.d.mts +143 -0
  98. package/dist/pythProClient.d.mts.map +1 -0
  99. package/dist/pythProClient.mjs +269 -0
  100. package/dist/pythProClient.mjs.map +1 -0
  101. package/dist/storkClient.cjs +217 -0
  102. package/dist/storkClient.cjs.map +1 -0
  103. package/dist/storkClient.d.cts +90 -0
  104. package/dist/storkClient.d.cts.map +1 -0
  105. package/dist/storkClient.d.mts +90 -0
  106. package/dist/storkClient.d.mts.map +1 -0
  107. package/dist/storkClient.mjs +208 -0
  108. package/dist/storkClient.mjs.map +1 -0
  109. package/dist/storkOracle.cjs +61 -0
  110. package/dist/storkOracle.cjs.map +1 -0
  111. package/dist/storkOracle.d.cts +21 -0
  112. package/dist/storkOracle.d.cts.map +1 -0
  113. package/dist/storkOracle.d.mts +21 -0
  114. package/dist/storkOracle.d.mts.map +1 -0
  115. package/dist/storkOracle.mjs +56 -0
  116. package/dist/storkOracle.mjs.map +1 -0
  117. package/package.json +1 -1
  118. package/src/abstract/BaseAPI.ts +11 -0
  119. package/src/abstract/BaseDataAPI.ts +1 -1
  120. package/src/consts/deployments-usdz-mainnet.json +1 -1
  121. package/src/consts/deployments-zo-oracle-mainnet.json +329 -0
  122. package/src/consts/index.ts +80 -0
  123. package/src/data.ts +1 -1
  124. package/src/implementations/SLPAPI.ts +5 -5
  125. package/src/implementations/USDZAPI.ts +906 -107
  126. package/src/implementations/USDZDataAPI.ts +42 -0
  127. package/src/implementations/ZBTCVCAPI.ts +6 -4
  128. package/src/implementations/ZLPAPI.ts +6 -5
  129. package/src/index.ts +3 -0
  130. package/src/interfaces/base.ts +55 -1
  131. package/src/interfaces/usdz.ts +170 -0
  132. package/src/oracle.ts +222 -1
  133. package/src/oraclePro.ts +309 -0
  134. package/src/pythProClient.ts +406 -0
  135. package/src/storkClient.ts +328 -0
  136. package/src/storkOracle.ts +82 -0
  137. package/tests/pythProClient.test.ts +155 -0
  138. package/tests/storkClient.test.ts +316 -0
@@ -0,0 +1,90 @@
1
+ import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import type { IOracleProConfig, IPythLazerConfig, IZoOracleConfig, Network } from "./consts/index.cjs";
3
+ import type { PythProChannel } from "./pythProClient.cjs";
4
+ /** Shared oracle bundle for most entry functions (Clock is passed separately when required). */
5
+ export interface OracleInputs {
6
+ pythProUpdate: TransactionObjectArgument;
7
+ storkState: TransactionObjectArgument;
8
+ oracleRegistry: TransactionObjectArgument;
9
+ clock: TransactionObjectArgument;
10
+ }
11
+ /** Alternate order used by liquidate + execute v3_1 (no clock). */
12
+ export interface OracleInputsAlt {
13
+ oracleRegistry: TransactionObjectArgument;
14
+ storkState: TransactionObjectArgument;
15
+ pythProUpdate: TransactionObjectArgument;
16
+ }
17
+ export interface IInitPythProOracleTxbResult {
18
+ tx: Transaction;
19
+ oracle: OracleInputs;
20
+ }
21
+ export interface IFetchPythProUpdateOptions {
22
+ channel?: PythProChannel;
23
+ /** Request ema_price for swap volatility fee. */
24
+ includeEmaPrice?: boolean;
25
+ /** Override kronos REST base URL (default: instance apiEndpoint or `DEFAULT_API_ENDPOINT`). */
26
+ kronosUrl?: string;
27
+ }
28
+ /** Normalize coin type strings for zo_oracle ↔ LP deployment matching. */
29
+ export declare function normalizeCoinType(coinType: string): string;
30
+ export declare function requireOracleProConfig(network: Network): IOracleProConfig;
31
+ /**
32
+ * Build coin module -> Lazer feed id using zo_oracle symbol configs + Hermes price id map.
33
+ */
34
+ export declare function buildCoinModuleToLazerFeedId(pythLazer: IPythLazerConfig, zoOracle: IZoOracleConfig, network: Network): Map<string, number>;
35
+ export declare function resolveLazerFeedIds(zoOracle: IZoOracleConfig, coins: Record<string, {
36
+ module: string;
37
+ }>, tokens: string[], network: Network, legacyFeeders?: Record<string, string>): number[];
38
+ /** Map Stork asset symbol (e.g. `BTCUSD`) → 32-byte on-chain feeder id bytes. */
39
+ export declare function buildStorkAssetIdMap(zoOracle: IZoOracleConfig): Map<string, Uint8Array>;
40
+ /** Map SDK token id → kronos Stork asset id (e.g. `btc` → `BTCUSD`). */
41
+ export declare function resolveStorkAssetsForTokens(zoOracle: IZoOracleConfig, coins: Record<string, {
42
+ module: string;
43
+ }>, tokens: string[]): string[];
44
+ export declare function toUpdateBytes(raw: Uint8Array | number[]): number[];
45
+ /**
46
+ * PTB step 0: verify a Pyth Pro leEcdsa update on-chain.
47
+ * Returns the verified `pyth_lazer::update_v2::Update` object.
48
+ */
49
+ export declare function parseAndVerifyPythProUpdate(tx: Transaction, config: IOracleProConfig, rawUpdateBytes: Uint8Array | number[]): TransactionObjectArgument;
50
+ export declare function buildOracleInputs(tx: Transaction, config: IOracleProConfig, pythProUpdate: TransactionObjectArgument): OracleInputs;
51
+ /** Pyth Pro + Stork objects: `[pythProUpdate, storkState, oracleRegistry]`. */
52
+ export declare function oracleArgsStandard(oracle: OracleInputs): TransactionObjectArgument[];
53
+ export declare function oracleArgsAlt(oracle: OracleInputsAlt): TransactionObjectArgument[];
54
+ export declare function buildOracleInputsAlt(oracle: OracleInputs): OracleInputsAlt;
55
+ /**
56
+ * Fetch leEcdsa update bytes via kronos REST (`/pyth-pro/latest-price?includeUpdateBytes=true`).
57
+ */
58
+ export declare function fetchPythProUpdateBytes(kronosUrl: string, feedIds: number[], options?: Pick<IFetchPythProUpdateOptions, 'channel' | 'includeEmaPrice'>): Promise<Uint8Array>;
59
+ export interface IValuateVaultsV2Params {
60
+ tx: Transaction;
61
+ upgradedPackage: string;
62
+ lpType: string;
63
+ market: string;
64
+ vaults: Record<string, {
65
+ reservingFeeModel: string;
66
+ }>;
67
+ coinModules: Record<string, {
68
+ module: string;
69
+ }>;
70
+ oracle: OracleInputs;
71
+ }
72
+ /** create_vaults_valuation + valuate_vault_v2 for each vault. */
73
+ export declare function valuateVaultsV2(params: IValuateVaultsV2Params): TransactionObjectArgument;
74
+ export interface IValuateSymbolsV2Params {
75
+ tx: Transaction;
76
+ upgradedPackage: string;
77
+ marketPackage: string;
78
+ lpType: string;
79
+ market: string;
80
+ symbols: Record<string, {
81
+ fundingFeeModel: string;
82
+ }>;
83
+ coinModules: Record<string, {
84
+ module: string;
85
+ }>;
86
+ oracle: OracleInputs;
87
+ }
88
+ /** create_symbols_valuation + valuate_symbol_v2 for each symbol. */
89
+ export declare function valuateSymbolsV2(params: IValuateSymbolsV2Params): TransactionObjectArgument;
90
+ //# sourceMappingURL=oraclePro.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oraclePro.d.cts","sourceRoot":"","sources":["../src/oraclePro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import type { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import type { IOracleProConfig, IPythLazerConfig, IZoOracleConfig, Network } from "./consts/index.mjs";
3
+ import type { PythProChannel } from "./pythProClient.mjs";
4
+ /** Shared oracle bundle for most entry functions (Clock is passed separately when required). */
5
+ export interface OracleInputs {
6
+ pythProUpdate: TransactionObjectArgument;
7
+ storkState: TransactionObjectArgument;
8
+ oracleRegistry: TransactionObjectArgument;
9
+ clock: TransactionObjectArgument;
10
+ }
11
+ /** Alternate order used by liquidate + execute v3_1 (no clock). */
12
+ export interface OracleInputsAlt {
13
+ oracleRegistry: TransactionObjectArgument;
14
+ storkState: TransactionObjectArgument;
15
+ pythProUpdate: TransactionObjectArgument;
16
+ }
17
+ export interface IInitPythProOracleTxbResult {
18
+ tx: Transaction;
19
+ oracle: OracleInputs;
20
+ }
21
+ export interface IFetchPythProUpdateOptions {
22
+ channel?: PythProChannel;
23
+ /** Request ema_price for swap volatility fee. */
24
+ includeEmaPrice?: boolean;
25
+ /** Override kronos REST base URL (default: instance apiEndpoint or `DEFAULT_API_ENDPOINT`). */
26
+ kronosUrl?: string;
27
+ }
28
+ /** Normalize coin type strings for zo_oracle ↔ LP deployment matching. */
29
+ export declare function normalizeCoinType(coinType: string): string;
30
+ export declare function requireOracleProConfig(network: Network): IOracleProConfig;
31
+ /**
32
+ * Build coin module -> Lazer feed id using zo_oracle symbol configs + Hermes price id map.
33
+ */
34
+ export declare function buildCoinModuleToLazerFeedId(pythLazer: IPythLazerConfig, zoOracle: IZoOracleConfig, network: Network): Map<string, number>;
35
+ export declare function resolveLazerFeedIds(zoOracle: IZoOracleConfig, coins: Record<string, {
36
+ module: string;
37
+ }>, tokens: string[], network: Network, legacyFeeders?: Record<string, string>): number[];
38
+ /** Map Stork asset symbol (e.g. `BTCUSD`) → 32-byte on-chain feeder id bytes. */
39
+ export declare function buildStorkAssetIdMap(zoOracle: IZoOracleConfig): Map<string, Uint8Array>;
40
+ /** Map SDK token id → kronos Stork asset id (e.g. `btc` → `BTCUSD`). */
41
+ export declare function resolveStorkAssetsForTokens(zoOracle: IZoOracleConfig, coins: Record<string, {
42
+ module: string;
43
+ }>, tokens: string[]): string[];
44
+ export declare function toUpdateBytes(raw: Uint8Array | number[]): number[];
45
+ /**
46
+ * PTB step 0: verify a Pyth Pro leEcdsa update on-chain.
47
+ * Returns the verified `pyth_lazer::update_v2::Update` object.
48
+ */
49
+ export declare function parseAndVerifyPythProUpdate(tx: Transaction, config: IOracleProConfig, rawUpdateBytes: Uint8Array | number[]): TransactionObjectArgument;
50
+ export declare function buildOracleInputs(tx: Transaction, config: IOracleProConfig, pythProUpdate: TransactionObjectArgument): OracleInputs;
51
+ /** Pyth Pro + Stork objects: `[pythProUpdate, storkState, oracleRegistry]`. */
52
+ export declare function oracleArgsStandard(oracle: OracleInputs): TransactionObjectArgument[];
53
+ export declare function oracleArgsAlt(oracle: OracleInputsAlt): TransactionObjectArgument[];
54
+ export declare function buildOracleInputsAlt(oracle: OracleInputs): OracleInputsAlt;
55
+ /**
56
+ * Fetch leEcdsa update bytes via kronos REST (`/pyth-pro/latest-price?includeUpdateBytes=true`).
57
+ */
58
+ export declare function fetchPythProUpdateBytes(kronosUrl: string, feedIds: number[], options?: Pick<IFetchPythProUpdateOptions, 'channel' | 'includeEmaPrice'>): Promise<Uint8Array>;
59
+ export interface IValuateVaultsV2Params {
60
+ tx: Transaction;
61
+ upgradedPackage: string;
62
+ lpType: string;
63
+ market: string;
64
+ vaults: Record<string, {
65
+ reservingFeeModel: string;
66
+ }>;
67
+ coinModules: Record<string, {
68
+ module: string;
69
+ }>;
70
+ oracle: OracleInputs;
71
+ }
72
+ /** create_vaults_valuation + valuate_vault_v2 for each vault. */
73
+ export declare function valuateVaultsV2(params: IValuateVaultsV2Params): TransactionObjectArgument;
74
+ export interface IValuateSymbolsV2Params {
75
+ tx: Transaction;
76
+ upgradedPackage: string;
77
+ marketPackage: string;
78
+ lpType: string;
79
+ market: string;
80
+ symbols: Record<string, {
81
+ fundingFeeModel: string;
82
+ }>;
83
+ coinModules: Record<string, {
84
+ module: string;
85
+ }>;
86
+ oracle: OracleInputs;
87
+ }
88
+ /** create_symbols_valuation + valuate_symbol_v2 for each symbol. */
89
+ export declare function valuateSymbolsV2(params: IValuateSymbolsV2Params): TransactionObjectArgument;
90
+ //# sourceMappingURL=oraclePro.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oraclePro.d.mts","sourceRoot":"","sources":["../src/oraclePro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
2
+ import { buildOracleProConfig, getPythFeederToPriceId, getZoOracleConfig } from "./consts/index.mjs";
3
+ import { fetchPythProUpdateBytesFromKronos } from "./pythProClient.mjs";
4
+ import { hexToBytes } from "./storkClient.mjs";
5
+ import { parseSymbolKey } from "./utils.mjs";
6
+ /** Normalize coin type strings for zo_oracle ↔ LP deployment matching. */
7
+ export function normalizeCoinType(coinType) {
8
+ const parts = coinType.split('::');
9
+ if (parts.length < 2 || !parts[0].startsWith('0x')) {
10
+ return coinType.toLowerCase();
11
+ }
12
+ const hex = parts[0].slice(2).replace(/^0+/, '') || '0';
13
+ return `0x${hex}::${parts.slice(1).join('::')}`.toLowerCase();
14
+ }
15
+ export function requireOracleProConfig(network) {
16
+ return buildOracleProConfig(getZoOracleConfig(network));
17
+ }
18
+ /**
19
+ * Build coin module -> Lazer feed id using zo_oracle symbol configs + Hermes price id map.
20
+ */
21
+ export function buildCoinModuleToLazerFeedId(pythLazer, zoOracle, network) {
22
+ const pythFeederToPriceId = getPythFeederToPriceId(network);
23
+ const map = new Map();
24
+ for (const config of Object.values(zoOracle.symbolConfigs)) {
25
+ const priceId = pythFeederToPriceId[config.pythFeederId];
26
+ if (!priceId) {
27
+ continue;
28
+ }
29
+ const lazerId = pythLazer.feedIds[priceId];
30
+ if (lazerId === undefined) {
31
+ continue;
32
+ }
33
+ map.set(normalizeCoinType(config.coinType), lazerId);
34
+ }
35
+ return map;
36
+ }
37
+ export function resolveLazerFeedIds(zoOracle, coins, tokens, network, legacyFeeders) {
38
+ const { pythLazer } = zoOracle;
39
+ const coinModuleMap = buildCoinModuleToLazerFeedId(pythLazer, zoOracle, network);
40
+ const feederToPriceId = getPythFeederToPriceId(network);
41
+ const ids = new Set();
42
+ for (const token of tokens) {
43
+ const module = coins[token]?.module;
44
+ if (!module) {
45
+ throw new Error(`Unknown token: ${token}`);
46
+ }
47
+ let lazerId = coinModuleMap.get(normalizeCoinType(module));
48
+ if (lazerId === undefined && legacyFeeders?.[token]) {
49
+ const priceId = feederToPriceId[legacyFeeders[token]];
50
+ if (priceId) {
51
+ lazerId = pythLazer.feedIds[priceId];
52
+ }
53
+ }
54
+ if (lazerId === undefined) {
55
+ throw new Error(`No Pyth Lazer feed id for token "${token}" (${module})`);
56
+ }
57
+ ids.add(lazerId);
58
+ }
59
+ return [...ids];
60
+ }
61
+ /** Map Stork asset symbol (e.g. `BTCUSD`) → 32-byte on-chain feeder id bytes. */
62
+ export function buildStorkAssetIdMap(zoOracle) {
63
+ const map = new Map();
64
+ for (const [symbolKey, config] of Object.entries(zoOracle.symbolConfigs)) {
65
+ if (!config.storkFeederId) {
66
+ continue;
67
+ }
68
+ const asset = symbolKey.replace('/', '');
69
+ map.set(asset, hexToBytes(config.storkFeederId));
70
+ }
71
+ return map;
72
+ }
73
+ /** Map SDK token id → kronos Stork asset id (e.g. `btc` → `BTCUSD`). */
74
+ export function resolveStorkAssetsForTokens(zoOracle, coins, tokens) {
75
+ const moduleToAsset = new Map();
76
+ for (const [symbolKey, config] of Object.entries(zoOracle.symbolConfigs)) {
77
+ if (!config.storkFeederId) {
78
+ continue;
79
+ }
80
+ moduleToAsset.set(normalizeCoinType(config.coinType), symbolKey.replace('/', ''));
81
+ }
82
+ const assets = new Set();
83
+ for (const token of tokens) {
84
+ const module = coins[token]?.module;
85
+ if (!module) {
86
+ continue;
87
+ }
88
+ const asset = moduleToAsset.get(normalizeCoinType(module));
89
+ if (asset) {
90
+ assets.add(asset);
91
+ }
92
+ }
93
+ return [...assets];
94
+ }
95
+ export function toUpdateBytes(raw) {
96
+ return raw instanceof Uint8Array ? Array.from(raw) : raw;
97
+ }
98
+ /**
99
+ * PTB step 0: verify a Pyth Pro leEcdsa update on-chain.
100
+ * Returns the verified `pyth_lazer::update_v2::Update` object.
101
+ */
102
+ export function parseAndVerifyPythProUpdate(tx, config, rawUpdateBytes) {
103
+ const [pythProUpdate] = tx.moveCall({
104
+ target: `${config.pythLazer.package}::pyth_lazer::parse_and_verify_le_ecdsa_update_v2`,
105
+ arguments: [
106
+ tx.object(config.pythLazer.state),
107
+ tx.object(SUI_CLOCK_OBJECT_ID),
108
+ tx.pure.vector('u8', toUpdateBytes(rawUpdateBytes)),
109
+ ],
110
+ });
111
+ return pythProUpdate;
112
+ }
113
+ export function buildOracleInputs(tx, config, pythProUpdate) {
114
+ return {
115
+ pythProUpdate,
116
+ storkState: tx.object(config.storkState),
117
+ oracleRegistry: tx.object(config.oracleRegistry),
118
+ clock: tx.object(SUI_CLOCK_OBJECT_ID),
119
+ };
120
+ }
121
+ /** Pyth Pro + Stork objects: `[pythProUpdate, storkState, oracleRegistry]`. */
122
+ export function oracleArgsStandard(oracle) {
123
+ return [oracle.pythProUpdate, oracle.storkState, oracle.oracleRegistry];
124
+ }
125
+ export function oracleArgsAlt(oracle) {
126
+ return [oracle.oracleRegistry, oracle.storkState, oracle.pythProUpdate];
127
+ }
128
+ export function buildOracleInputsAlt(oracle) {
129
+ return {
130
+ oracleRegistry: oracle.oracleRegistry,
131
+ storkState: oracle.storkState,
132
+ pythProUpdate: oracle.pythProUpdate,
133
+ };
134
+ }
135
+ /**
136
+ * Fetch leEcdsa update bytes via kronos REST (`/pyth-pro/latest-price?includeUpdateBytes=true`).
137
+ */
138
+ export function fetchPythProUpdateBytes(kronosUrl, feedIds, options) {
139
+ return fetchPythProUpdateBytesFromKronos(kronosUrl, feedIds, options);
140
+ }
141
+ /** create_vaults_valuation + valuate_vault_v2 for each vault. */
142
+ export function valuateVaultsV2(params) {
143
+ const { tx, upgradedPackage, lpType, market, vaults, coinModules, oracle } = params;
144
+ const vaultsValuation = tx.moveCall({
145
+ target: `${upgradedPackage}::market::create_vaults_valuation`,
146
+ typeArguments: [lpType],
147
+ arguments: [oracle.clock, tx.object(market)],
148
+ });
149
+ for (const key of Object.keys(vaults)) {
150
+ const vault = vaults[key];
151
+ tx.moveCall({
152
+ target: `${upgradedPackage}::market::valuate_vault_v2`,
153
+ typeArguments: [lpType, coinModules[key].module],
154
+ arguments: [
155
+ tx.object(market),
156
+ tx.object(vault.reservingFeeModel),
157
+ ...oracleArgsStandard(oracle),
158
+ oracle.clock,
159
+ vaultsValuation,
160
+ ],
161
+ });
162
+ }
163
+ return vaultsValuation;
164
+ }
165
+ /** create_symbols_valuation + valuate_symbol_v2 for each symbol. */
166
+ export function valuateSymbolsV2(params) {
167
+ const { tx, upgradedPackage, marketPackage, lpType, market, symbols, coinModules, oracle } = params;
168
+ const symbolsValuation = tx.moveCall({
169
+ target: `${upgradedPackage}::market::create_symbols_valuation`,
170
+ typeArguments: [lpType],
171
+ arguments: [oracle.clock, tx.object(market)],
172
+ });
173
+ for (const key of Object.keys(symbols)) {
174
+ const [direction, token] = parseSymbolKey(key);
175
+ const symbol = symbols[key];
176
+ tx.moveCall({
177
+ target: `${upgradedPackage}::market::valuate_symbol_v2`,
178
+ typeArguments: [
179
+ lpType,
180
+ coinModules[token].module,
181
+ `${marketPackage}::market::${direction.toUpperCase()}`,
182
+ ],
183
+ arguments: [
184
+ tx.object(market),
185
+ tx.object(symbol.fundingFeeModel),
186
+ ...oracleArgsStandard(oracle),
187
+ oracle.clock,
188
+ symbolsValuation,
189
+ ],
190
+ });
191
+ }
192
+ return symbolsValuation;
193
+ }
194
+ //# sourceMappingURL=oraclePro.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oraclePro.mjs","sourceRoot":"","sources":["../src/oraclePro.ts"],"names":[],"mappings":"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"}