@liquid-af/sdk 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,4 +7,5 @@ export type { AmmFeeRates } from "./amm.js";
7
7
  export { calculatePoolMarketCap, lookupFeeTier, calculateFeesForPool, WSOL_MINT, } from "./tiered-fees.js";
8
8
  export { getCashbackBreakdown } from "./cashback.js";
9
9
  export type { CashbackBreakdown, TierBreakdown } from "./cashback.js";
10
+ export { calculateNativeMarketCapSol, calculateNativeMarketCapUsd, calculateStableMarketCapUsd, } from "./market-cap.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,GAAG,EACH,eAAe,EACf,mCAAmC,EACnC,iBAAiB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACN,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,GAAG,EACH,eAAe,EACf,mCAAmC,EACnC,iBAAiB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACN,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC3B,MAAM,iBAAiB,CAAC"}
@@ -4,4 +4,5 @@ export { calculateBuyExpectation, calculateSellExpectation, } from "./bonding-cu
4
4
  export { calculateAmmSellOutput, calculateAmmBuyInput, calculateLpToTokens, } from "./amm.js";
5
5
  export { calculatePoolMarketCap, lookupFeeTier, calculateFeesForPool, WSOL_MINT, } from "./tiered-fees.js";
6
6
  export { getCashbackBreakdown } from "./cashback.js";
7
+ export { calculateNativeMarketCapSol, calculateNativeMarketCapUsd, calculateStableMarketCapUsd, } from "./market-cap.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,GAAG,EACH,eAAe,EACf,mCAAmC,EACnC,iBAAiB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACN,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,GAAG,EACH,eAAe,EACf,mCAAmC,EACnC,iBAAiB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACN,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACN,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACT,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC3B,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Calculates the market cap of a token denominated in SOL for native curves.
3
+ *
4
+ * Formula: market_cap_sol = virtual_sol * supply / virtual_token
5
+ *
6
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
7
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
8
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
9
+ * @returns Market cap in lamports (9 decimals)
10
+ */
11
+ export declare function calculateNativeMarketCapSol(virtualSolReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint): bigint;
12
+ /**
13
+ * Calculates the market cap of a token in USD for native SOL curves.
14
+ *
15
+ * Converts virtual SOL reserves to USD using the SOL price, then computes
16
+ * fully diluted market cap.
17
+ *
18
+ * Formula: market_cap_usd = (virtual_sol * sol_price / 1e9) * supply / virtual_token
19
+ *
20
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
21
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
22
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
23
+ * @param solPriceUsd - SOL price in USD (6 decimals)
24
+ * @returns Market cap in USD (6 decimals)
25
+ */
26
+ export declare function calculateNativeMarketCapUsd(virtualSolReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint, solPriceUsd: bigint): bigint;
27
+ /**
28
+ * Calculates the market cap of a token in USD for stable curves.
29
+ *
30
+ * Formula: market_cap_usd = virtual_quote * supply / virtual_token
31
+ *
32
+ * Normalizes the result to 6 decimal USD when the quote token uses
33
+ * a different decimal count (e.g. 8-decimal WBTC).
34
+ *
35
+ * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
36
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
37
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
38
+ * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
39
+ * @returns Market cap in USD (6 decimals)
40
+ */
41
+ export declare function calculateStableMarketCapUsd(virtualQuoteReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint, quoteDecimals?: number): bigint;
42
+ //# sourceMappingURL=market-cap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-cap.d.ts","sourceRoot":"","sources":["../../src/math/market-cap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAC1C,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAER;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAC1C,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GACjB,MAAM,CAIR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAC1C,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,aAAa,GAAE,MAAU,GACvB,MAAM,CAOR"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Calculates the market cap of a token denominated in SOL for native curves.
3
+ *
4
+ * Formula: market_cap_sol = virtual_sol * supply / virtual_token
5
+ *
6
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
7
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
8
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
9
+ * @returns Market cap in lamports (9 decimals)
10
+ */
11
+ export function calculateNativeMarketCapSol(virtualSolReserves, virtualTokenReserves, tokenTotalSupply) {
12
+ return (virtualSolReserves * tokenTotalSupply) / virtualTokenReserves;
13
+ }
14
+ /**
15
+ * Calculates the market cap of a token in USD for native SOL curves.
16
+ *
17
+ * Converts virtual SOL reserves to USD using the SOL price, then computes
18
+ * fully diluted market cap.
19
+ *
20
+ * Formula: market_cap_usd = (virtual_sol * sol_price / 1e9) * supply / virtual_token
21
+ *
22
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
23
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
24
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
25
+ * @param solPriceUsd - SOL price in USD (6 decimals)
26
+ * @returns Market cap in USD (6 decimals)
27
+ */
28
+ export function calculateNativeMarketCapUsd(virtualSolReserves, virtualTokenReserves, tokenTotalSupply, solPriceUsd) {
29
+ const virtualSolUsd = (virtualSolReserves * solPriceUsd) / 1000000000n;
30
+ return (virtualSolUsd * tokenTotalSupply) / virtualTokenReserves;
31
+ }
32
+ /**
33
+ * Calculates the market cap of a token in USD for stable curves.
34
+ *
35
+ * Formula: market_cap_usd = virtual_quote * supply / virtual_token
36
+ *
37
+ * Normalizes the result to 6 decimal USD when the quote token uses
38
+ * a different decimal count (e.g. 8-decimal WBTC).
39
+ *
40
+ * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
41
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
42
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
43
+ * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
44
+ * @returns Market cap in USD (6 decimals)
45
+ */
46
+ export function calculateStableMarketCapUsd(virtualQuoteReserves, virtualTokenReserves, tokenTotalSupply, quoteDecimals = 6) {
47
+ const raw = (virtualQuoteReserves * tokenTotalSupply) / virtualTokenReserves;
48
+ // Normalize to 6 decimals (USD_DECIMALS) if quote has different precision
49
+ if (quoteDecimals === 6)
50
+ return raw;
51
+ if (quoteDecimals > 6)
52
+ return raw / BigInt(10 ** (quoteDecimals - 6));
53
+ return raw * BigInt(10 ** (6 - quoteDecimals));
54
+ }
55
+ //# sourceMappingURL=market-cap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-cap.js","sourceRoot":"","sources":["../../src/math/market-cap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAC1C,kBAA0B,EAC1B,oBAA4B,EAC5B,gBAAwB;IAExB,OAAO,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,oBAAoB,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAC1C,kBAA0B,EAC1B,oBAA4B,EAC5B,gBAAwB,EACxB,WAAmB;IAEnB,MAAM,aAAa,GAClB,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,WAAc,CAAC;IACrD,OAAO,CAAC,aAAa,GAAG,gBAAgB,CAAC,GAAG,oBAAoB,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAC1C,oBAA4B,EAC5B,oBAA4B,EAC5B,gBAAwB,EACxB,gBAAwB,CAAC;IAEzB,MAAM,GAAG,GACR,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,GAAG,oBAAoB,CAAC;IAClE,0EAA0E;IAC1E,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;AAChD,CAAC"}
package/dist/oracle.d.ts CHANGED
@@ -15,19 +15,4 @@ export declare const PYTH_EXPONENT = -8;
15
15
  * USD decimals used in the protocol
16
16
  */
17
17
  export declare const USD_DECIMALS = 6;
18
- /**
19
- * Calculates the market cap of a token in USD for stable curves.
20
- *
21
- * Formula: market_cap_usd = virtual_quote * supply / virtual_token
22
- *
23
- * Normalizes the result to 6 decimal USD when the quote token uses
24
- * a different decimal count (e.g. 8-decimal WBTC).
25
- *
26
- * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
27
- * @param virtualTokenReserves - Virtual token reserves (6 decimals)
28
- * @param tokenTotalSupply - Total supply of tokens (6 decimals)
29
- * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
30
- * @returns Market cap in USD (6 decimals)
31
- */
32
- export declare function calculateStableMarketCapUsd(virtualQuoteReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint, quoteDecimals?: number): bigint;
33
18
  //# sourceMappingURL=oracle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,uEACyC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAC1C,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,aAAa,GAAE,MAAU,GACvB,MAAM,CAOR"}
1
+ {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,uEACyC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC"}
package/dist/oracle.js CHANGED
@@ -15,27 +15,4 @@ export const PYTH_EXPONENT = -8;
15
15
  * USD decimals used in the protocol
16
16
  */
17
17
  export const USD_DECIMALS = 6;
18
- /**
19
- * Calculates the market cap of a token in USD for stable curves.
20
- *
21
- * Formula: market_cap_usd = virtual_quote * supply / virtual_token
22
- *
23
- * Normalizes the result to 6 decimal USD when the quote token uses
24
- * a different decimal count (e.g. 8-decimal WBTC).
25
- *
26
- * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
27
- * @param virtualTokenReserves - Virtual token reserves (6 decimals)
28
- * @param tokenTotalSupply - Total supply of tokens (6 decimals)
29
- * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
30
- * @returns Market cap in USD (6 decimals)
31
- */
32
- export function calculateStableMarketCapUsd(virtualQuoteReserves, virtualTokenReserves, tokenTotalSupply, quoteDecimals = 6) {
33
- const raw = (virtualQuoteReserves * tokenTotalSupply) / virtualTokenReserves;
34
- // Normalize to 6 decimals (USD_DECIMALS) if quote has different precision
35
- if (quoteDecimals === 6)
36
- return raw;
37
- if (quoteDecimals > 6)
38
- return raw / BigInt(10 ** (quoteDecimals - 6));
39
- return raw * BigInt(10 ** (6 - quoteDecimals));
40
- }
41
18
  //# sourceMappingURL=oracle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAC3B,oEAAoE,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAC1C,oBAA4B,EAC5B,oBAA4B,EAC5B,gBAAwB,EACxB,gBAAwB,CAAC;IAEzB,MAAM,GAAG,GACR,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,GAAG,oBAAoB,CAAC;IAClE,0EAA0E;IAC1E,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAC3B,oEAAoE,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liquid-af/sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "TypeScript SDK for the Liquid DeFi protocol on Solana",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/src/math/index.ts CHANGED
@@ -41,3 +41,9 @@ export {
41
41
 
42
42
  export { getCashbackBreakdown } from "./cashback.js";
43
43
  export type { CashbackBreakdown, TierBreakdown } from "./cashback.js";
44
+
45
+ export {
46
+ calculateNativeMarketCapSol,
47
+ calculateNativeMarketCapUsd,
48
+ calculateStableMarketCapUsd,
49
+ } from "./market-cap.js";
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Calculates the market cap of a token denominated in SOL for native curves.
3
+ *
4
+ * Formula: market_cap_sol = virtual_sol * supply / virtual_token
5
+ *
6
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
7
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
8
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
9
+ * @returns Market cap in lamports (9 decimals)
10
+ */
11
+ export function calculateNativeMarketCapSol(
12
+ virtualSolReserves: bigint,
13
+ virtualTokenReserves: bigint,
14
+ tokenTotalSupply: bigint,
15
+ ): bigint {
16
+ return (virtualSolReserves * tokenTotalSupply) / virtualTokenReserves;
17
+ }
18
+
19
+ /**
20
+ * Calculates the market cap of a token in USD for native SOL curves.
21
+ *
22
+ * Converts virtual SOL reserves to USD using the SOL price, then computes
23
+ * fully diluted market cap.
24
+ *
25
+ * Formula: market_cap_usd = (virtual_sol * sol_price / 1e9) * supply / virtual_token
26
+ *
27
+ * @param virtualSolReserves - Virtual SOL reserves in lamports (9 decimals)
28
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
29
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
30
+ * @param solPriceUsd - SOL price in USD (6 decimals)
31
+ * @returns Market cap in USD (6 decimals)
32
+ */
33
+ export function calculateNativeMarketCapUsd(
34
+ virtualSolReserves: bigint,
35
+ virtualTokenReserves: bigint,
36
+ tokenTotalSupply: bigint,
37
+ solPriceUsd: bigint,
38
+ ): bigint {
39
+ const virtualSolUsd =
40
+ (virtualSolReserves * solPriceUsd) / 1_000_000_000n;
41
+ return (virtualSolUsd * tokenTotalSupply) / virtualTokenReserves;
42
+ }
43
+
44
+ /**
45
+ * Calculates the market cap of a token in USD for stable curves.
46
+ *
47
+ * Formula: market_cap_usd = virtual_quote * supply / virtual_token
48
+ *
49
+ * Normalizes the result to 6 decimal USD when the quote token uses
50
+ * a different decimal count (e.g. 8-decimal WBTC).
51
+ *
52
+ * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
53
+ * @param virtualTokenReserves - Virtual token reserves (6 decimals)
54
+ * @param tokenTotalSupply - Total supply of tokens (6 decimals)
55
+ * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
56
+ * @returns Market cap in USD (6 decimals)
57
+ */
58
+ export function calculateStableMarketCapUsd(
59
+ virtualQuoteReserves: bigint,
60
+ virtualTokenReserves: bigint,
61
+ tokenTotalSupply: bigint,
62
+ quoteDecimals: number = 6,
63
+ ): bigint {
64
+ const raw =
65
+ (virtualQuoteReserves * tokenTotalSupply) / virtualTokenReserves;
66
+ // Normalize to 6 decimals (USD_DECIMALS) if quote has different precision
67
+ if (quoteDecimals === 6) return raw;
68
+ if (quoteDecimals > 6) return raw / BigInt(10 ** (quoteDecimals - 6));
69
+ return raw * BigInt(10 ** (6 - quoteDecimals));
70
+ }
package/src/oracle.ts CHANGED
@@ -19,30 +19,3 @@ export const PYTH_EXPONENT = -8;
19
19
  */
20
20
  export const USD_DECIMALS = 6;
21
21
 
22
- /**
23
- * Calculates the market cap of a token in USD for stable curves.
24
- *
25
- * Formula: market_cap_usd = virtual_quote * supply / virtual_token
26
- *
27
- * Normalizes the result to 6 decimal USD when the quote token uses
28
- * a different decimal count (e.g. 8-decimal WBTC).
29
- *
30
- * @param virtualQuoteReserves - Virtual quote reserves (in quote token decimals)
31
- * @param virtualTokenReserves - Virtual token reserves (6 decimals)
32
- * @param tokenTotalSupply - Total supply of tokens (6 decimals)
33
- * @param quoteDecimals - Number of decimals of the quote token (default 6 for USDC)
34
- * @returns Market cap in USD (6 decimals)
35
- */
36
- export function calculateStableMarketCapUsd(
37
- virtualQuoteReserves: bigint,
38
- virtualTokenReserves: bigint,
39
- tokenTotalSupply: bigint,
40
- quoteDecimals: number = 6,
41
- ): bigint {
42
- const raw =
43
- (virtualQuoteReserves * tokenTotalSupply) / virtualTokenReserves;
44
- // Normalize to 6 decimals (USD_DECIMALS) if quote has different precision
45
- if (quoteDecimals === 6) return raw;
46
- if (quoteDecimals > 6) return raw / BigInt(10 ** (quoteDecimals - 6));
47
- return raw * BigInt(10 ** (6 - quoteDecimals));
48
- }