@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.
- package/dist/math/index.d.ts +1 -0
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.js +1 -0
- package/dist/math/index.js.map +1 -1
- package/dist/math/market-cap.d.ts +42 -0
- package/dist/math/market-cap.d.ts.map +1 -0
- package/dist/math/market-cap.js +55 -0
- package/dist/math/market-cap.js.map +1 -0
- package/dist/oracle.d.ts +0 -15
- package/dist/oracle.d.ts.map +1 -1
- package/dist/oracle.js +0 -23
- package/dist/oracle.js.map +1 -1
- package/package.json +1 -1
- package/src/math/index.ts +6 -0
- package/src/math/market-cap.ts +70 -0
- package/src/oracle.ts +0 -27
package/dist/math/index.d.ts
CHANGED
|
@@ -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
|
package/dist/math/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/math/index.js
CHANGED
|
@@ -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
|
package/dist/math/index.js.map
CHANGED
|
@@ -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
|
package/dist/oracle.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
package/dist/oracle.js.map
CHANGED
|
@@ -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
|
|
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
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
|
-
}
|