@liquid-af/sdk 0.1.0
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/README.md +776 -0
- package/dist/accounts/index.d.ts +5 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +5 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/liquid-fees.d.ts +63 -0
- package/dist/accounts/liquid-fees.d.ts.map +1 -0
- package/dist/accounts/liquid-fees.js +27 -0
- package/dist/accounts/liquid-fees.js.map +1 -0
- package/dist/accounts/liquid-state.d.ts +112 -0
- package/dist/accounts/liquid-state.d.ts.map +1 -0
- package/dist/accounts/liquid-state.js +92 -0
- package/dist/accounts/liquid-state.js.map +1 -0
- package/dist/accounts/liquid-swap.d.ts +97 -0
- package/dist/accounts/liquid-swap.d.ts.map +1 -0
- package/dist/accounts/liquid-swap.js +54 -0
- package/dist/accounts/liquid-swap.js.map +1 -0
- package/dist/accounts/liquid.d.ts +175 -0
- package/dist/accounts/liquid.d.ts.map +1 -0
- package/dist/accounts/liquid.js +66 -0
- package/dist/accounts/liquid.js.map +1 -0
- package/dist/client.d.ts +621 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +511 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +56 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +44 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +39 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +63 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/parser.d.ts +40 -0
- package/dist/events/parser.d.ts.map +1 -0
- package/dist/events/parser.js +67 -0
- package/dist/events/parser.js.map +1 -0
- package/dist/events/types.d.ts +286 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/helpers/index.d.ts +4 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +3 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/preview.d.ts +259 -0
- package/dist/helpers/preview.d.ts.map +1 -0
- package/dist/helpers/preview.js +458 -0
- package/dist/helpers/preview.js.map +1 -0
- package/dist/helpers/user.d.ts +11 -0
- package/dist/helpers/user.d.ts.map +1 -0
- package/dist/helpers/user.js +20 -0
- package/dist/helpers/user.js.map +1 -0
- package/dist/idl/index.d.ts +53 -0
- package/dist/idl/index.d.ts.map +1 -0
- package/dist/idl/index.js +64 -0
- package/dist/idl/index.js.map +1 -0
- package/dist/idl/liquid.d.ts +10523 -0
- package/dist/idl/liquid.d.ts.map +1 -0
- package/dist/idl/liquid.js +2 -0
- package/dist/idl/liquid.js.map +1 -0
- package/dist/idl/liquid.json +10516 -0
- package/dist/idl/liquid_fees.d.ts +1520 -0
- package/dist/idl/liquid_fees.d.ts.map +1 -0
- package/dist/idl/liquid_fees.js +2 -0
- package/dist/idl/liquid_fees.js.map +1 -0
- package/dist/idl/liquid_fees.json +1513 -0
- package/dist/idl/liquid_state.d.ts +2936 -0
- package/dist/idl/liquid_state.d.ts.map +1 -0
- package/dist/idl/liquid_state.js +2 -0
- package/dist/idl/liquid_state.js.map +1 -0
- package/dist/idl/liquid_state.json +2929 -0
- package/dist/idl/liquid_swap.d.ts +5849 -0
- package/dist/idl/liquid_swap.d.ts.map +1 -0
- package/dist/idl/liquid_swap.js +2 -0
- package/dist/idl/liquid_swap.js.map +1 -0
- package/dist/idl/liquid_swap.json +5842 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions/index.d.ts +9 -0
- package/dist/instructions/index.d.ts.map +1 -0
- package/dist/instructions/index.js +9 -0
- package/dist/instructions/index.js.map +1 -0
- package/dist/instructions/liquid-fees.d.ts +111 -0
- package/dist/instructions/liquid-fees.d.ts.map +1 -0
- package/dist/instructions/liquid-fees.js +169 -0
- package/dist/instructions/liquid-fees.js.map +1 -0
- package/dist/instructions/liquid-state.d.ts +173 -0
- package/dist/instructions/liquid-state.d.ts.map +1 -0
- package/dist/instructions/liquid-state.js +194 -0
- package/dist/instructions/liquid-state.js.map +1 -0
- package/dist/instructions/liquid-swap.d.ts +122 -0
- package/dist/instructions/liquid-swap.d.ts.map +1 -0
- package/dist/instructions/liquid-swap.js +167 -0
- package/dist/instructions/liquid-swap.js.map +1 -0
- package/dist/instructions/liquid.d.ts +297 -0
- package/dist/instructions/liquid.d.ts.map +1 -0
- package/dist/instructions/liquid.js +483 -0
- package/dist/instructions/liquid.js.map +1 -0
- package/dist/instructions/program-cache.d.ts +35 -0
- package/dist/instructions/program-cache.d.ts.map +1 -0
- package/dist/instructions/program-cache.js +68 -0
- package/dist/instructions/program-cache.js.map +1 -0
- package/dist/math/amm.d.ts +42 -0
- package/dist/math/amm.d.ts.map +1 -0
- package/dist/math/amm.js +109 -0
- package/dist/math/amm.js.map +1 -0
- package/dist/math/bonding-curve.d.ts +34 -0
- package/dist/math/bonding-curve.d.ts.map +1 -0
- package/dist/math/bonding-curve.js +80 -0
- package/dist/math/bonding-curve.js.map +1 -0
- package/dist/math/constants.d.ts +14 -0
- package/dist/math/constants.d.ts.map +1 -0
- package/dist/math/constants.js +14 -0
- package/dist/math/constants.js.map +1 -0
- package/dist/math/fees.d.ts +88 -0
- package/dist/math/fees.d.ts.map +1 -0
- package/dist/math/fees.js +135 -0
- package/dist/math/fees.js.map +1 -0
- package/dist/math/index.d.ts +8 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/index.js +6 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/tiered-fees.d.ts +80 -0
- package/dist/math/tiered-fees.d.ts.map +1 -0
- package/dist/math/tiered-fees.js +129 -0
- package/dist/math/tiered-fees.js.map +1 -0
- package/dist/oracle.d.ts +53 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +70 -0
- package/dist/oracle.js.map +1 -0
- package/dist/pda/index.d.ts +89 -0
- package/dist/pda/index.d.ts.map +1 -0
- package/dist/pda/index.js +127 -0
- package/dist/pda/index.js.map +1 -0
- package/dist/pda/liquid-fees.d.ts +27 -0
- package/dist/pda/liquid-fees.d.ts.map +1 -0
- package/dist/pda/liquid-fees.js +36 -0
- package/dist/pda/liquid-fees.js.map +1 -0
- package/dist/pda/liquid-state.d.ts +56 -0
- package/dist/pda/liquid-state.d.ts.map +1 -0
- package/dist/pda/liquid-state.js +79 -0
- package/dist/pda/liquid-state.js.map +1 -0
- package/dist/pda/liquid-swap.d.ts +76 -0
- package/dist/pda/liquid-swap.d.ts.map +1 -0
- package/dist/pda/liquid-swap.js +103 -0
- package/dist/pda/liquid-swap.js.map +1 -0
- package/dist/pda/liquid.d.ts +67 -0
- package/dist/pda/liquid.d.ts.map +1 -0
- package/dist/pda/liquid.js +91 -0
- package/dist/pda/liquid.js.map +1 -0
- package/dist/provider.d.ts +26 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +47 -0
- package/dist/provider.js.map +1 -0
- package/dist/transaction/builder.d.ts +30 -0
- package/dist/transaction/builder.d.ts.map +1 -0
- package/dist/transaction/builder.js +48 -0
- package/dist/transaction/builder.js.map +1 -0
- package/dist/transaction/index.d.ts +3 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/index.js +3 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction/send.d.ts +25 -0
- package/dist/transaction/send.d.ts.map +1 -0
- package/dist/transaction/send.js +52 -0
- package/dist/transaction/send.js.map +1 -0
- package/dist/types.d.ts +311 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +46 -0
- package/dist/types.js.map +1 -0
- package/package.json +112 -0
- package/src/accounts/index.ts +26 -0
- package/src/accounts/liquid-fees.ts +38 -0
- package/src/accounts/liquid-state.ts +134 -0
- package/src/accounts/liquid-swap.ts +79 -0
- package/src/accounts/liquid.ts +100 -0
- package/src/client.ts +1001 -0
- package/src/config.ts +91 -0
- package/src/errors.ts +94 -0
- package/src/events/index.ts +42 -0
- package/src/events/parser.ts +90 -0
- package/src/events/types.ts +310 -0
- package/src/helpers/index.ts +23 -0
- package/src/helpers/preview.ts +798 -0
- package/src/helpers/user.ts +24 -0
- package/src/idl/index.ts +94 -0
- package/src/idl/liquid.json +10516 -0
- package/src/idl/liquid.ts +10522 -0
- package/src/idl/liquid_fees.json +1513 -0
- package/src/idl/liquid_fees.ts +1519 -0
- package/src/idl/liquid_state.json +2929 -0
- package/src/idl/liquid_state.ts +2935 -0
- package/src/idl/liquid_swap.json +5842 -0
- package/src/idl/liquid_swap.ts +5848 -0
- package/src/index.ts +98 -0
- package/src/instructions/index.ts +109 -0
- package/src/instructions/liquid-fees.ts +289 -0
- package/src/instructions/liquid-state.ts +336 -0
- package/src/instructions/liquid-swap.ts +414 -0
- package/src/instructions/liquid.ts +884 -0
- package/src/instructions/program-cache.ts +106 -0
- package/src/math/amm.ts +146 -0
- package/src/math/bonding-curve.ts +122 -0
- package/src/math/constants.ts +19 -0
- package/src/math/fees.ts +191 -0
- package/src/math/index.ts +40 -0
- package/src/math/tiered-fees.ts +165 -0
- package/src/oracle.ts +97 -0
- package/src/pda/index.ts +331 -0
- package/src/pda/liquid-fees.ts +58 -0
- package/src/pda/liquid-state.ts +123 -0
- package/src/pda/liquid-swap.ts +162 -0
- package/src/pda/liquid.ts +152 -0
- package/src/provider.ts +60 -0
- package/src/transaction/builder.ts +80 -0
- package/src/transaction/index.ts +6 -0
- package/src/transaction/send.ts +72 -0
- package/src/types.ts +354 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import BN from "bn.js";
|
|
3
|
+
/** WSOL mint address (native SOL wrapped as SPL token) */
|
|
4
|
+
export const WSOL_MINT = new PublicKey("So11111111111111111111111111111111111111112");
|
|
5
|
+
/** Lamports per SOL constant */
|
|
6
|
+
const LAMPORTS_PER_SOL = new BN(1000000000);
|
|
7
|
+
/**
|
|
8
|
+
* Calculate pool fully diluted market cap in USD.
|
|
9
|
+
*
|
|
10
|
+
* The market cap is calculated as:
|
|
11
|
+
* - Pool token price (in USD) × base token total supply
|
|
12
|
+
* - Pool token price = (quote vault value in USD) / base vault amount
|
|
13
|
+
*
|
|
14
|
+
* For WSOL pools, the quote vault is converted to USD using the oracle price.
|
|
15
|
+
* For USDC pools, the quote vault is already in USD (assumed 1:1 peg).
|
|
16
|
+
*
|
|
17
|
+
* @param quoteVaultAmount - Quote vault balance (lamports for WSOL, 6 decimals for USDC)
|
|
18
|
+
* @param baseVaultAmount - Base vault balance (token decimals)
|
|
19
|
+
* @param baseTotalSupply - Total supply of base token (token decimals)
|
|
20
|
+
* @param solPriceUsd - SOL/USD price from oracle (6 decimals)
|
|
21
|
+
* @param quoteMint - Quote mint pubkey (to detect WSOL vs stable)
|
|
22
|
+
* @returns Market cap in USD (6 decimals)
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Pool with 100 SOL and 1M tokens, SOL = $150, supply = 1B tokens
|
|
27
|
+
* // Token price = (100 SOL × $150) / 1M = $0.015 per token
|
|
28
|
+
* // Market cap = $0.015 × 1B = $15M
|
|
29
|
+
* const marketCap = calculatePoolMarketCap(
|
|
30
|
+
* new BN(100_000_000_000), // 100 SOL in lamports
|
|
31
|
+
* new BN(1_000_000_000_000), // 1M tokens (6 decimals)
|
|
32
|
+
* new BN(1_000_000_000_000_000), // 1B tokens (6 decimals)
|
|
33
|
+
* new BN(150_000_000), // $150 (6 decimals)
|
|
34
|
+
* WSOL_MINT,
|
|
35
|
+
* );
|
|
36
|
+
* // Returns: 15_000_000_000_000 ($15M with 6 decimals)
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export function calculatePoolMarketCap(quoteVaultAmount, baseVaultAmount, baseTotalSupply, solPriceUsd, quoteMint) {
|
|
40
|
+
// Prevent division by zero
|
|
41
|
+
if (baseVaultAmount.isZero()) {
|
|
42
|
+
throw new Error("Base vault amount cannot be zero");
|
|
43
|
+
}
|
|
44
|
+
if (quoteMint.equals(WSOL_MINT)) {
|
|
45
|
+
// For WSOL pools: convert quote reserves to USD, then compute market cap
|
|
46
|
+
// Formula: market_cap = (quote_lamports × sol_price_usd / 1e9) × base_supply / base_vault
|
|
47
|
+
//
|
|
48
|
+
// Combined to avoid intermediate truncation:
|
|
49
|
+
// market_cap = (quote_lamports × sol_price_usd × base_supply) / (1e9 × base_vault)
|
|
50
|
+
const marketCap = quoteVaultAmount
|
|
51
|
+
.mul(solPriceUsd)
|
|
52
|
+
.mul(baseTotalSupply)
|
|
53
|
+
.div(LAMPORTS_PER_SOL)
|
|
54
|
+
.div(baseVaultAmount);
|
|
55
|
+
return marketCap;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// For USDC and other stablecoins: assume 1:1 with USD
|
|
59
|
+
// quote_vault already in 6 decimals for USDC
|
|
60
|
+
// Formula: market_cap = (quote_amount × base_supply) / base_vault
|
|
61
|
+
const marketCap = quoteVaultAmount
|
|
62
|
+
.mul(baseTotalSupply)
|
|
63
|
+
.div(baseVaultAmount);
|
|
64
|
+
return marketCap;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Find appropriate fee tier for given market cap.
|
|
69
|
+
*
|
|
70
|
+
* Performs a linear scan through the active fee tiers to find the tier
|
|
71
|
+
* whose range contains the given market cap. If the market cap exceeds
|
|
72
|
+
* all tier ranges, returns the last tier.
|
|
73
|
+
*
|
|
74
|
+
* @param marketCapUsd - Pool market cap in USD (6 decimals)
|
|
75
|
+
* @param tiers - Array of active fee tiers (sorted, validated)
|
|
76
|
+
* @returns Tuple of [lpFeeRate, protocolFeeRate, creatorFeeRate] in basis points
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const tiers = [
|
|
81
|
+
* { rangeStartInclusive: new BN(0), rangeEndExclusive: new BN(1_000_000_000_000), lpFeeRate: 30, protocolFeeRate: 5, creatorFeeRate: 5 },
|
|
82
|
+
* { rangeStartInclusive: new BN(1_000_000_000_000), rangeEndExclusive: new BN('18446744073709551615'), lpFeeRate: 20, protocolFeeRate: 3, creatorFeeRate: 3 },
|
|
83
|
+
* ];
|
|
84
|
+
*
|
|
85
|
+
* // Market cap = $500K -> uses first tier (high fees)
|
|
86
|
+
* const [lp, protocol, creator] = lookupFeeTier(new BN(500_000_000_000), tiers);
|
|
87
|
+
* // Returns: [30, 5, 5]
|
|
88
|
+
*
|
|
89
|
+
* // Market cap = $5M -> uses second tier (low fees)
|
|
90
|
+
* const [lp2, protocol2, creator2] = lookupFeeTier(new BN(5_000_000_000_000), tiers);
|
|
91
|
+
* // Returns: [20, 3, 3]
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export function lookupFeeTier(marketCapUsd, tiers) {
|
|
95
|
+
if (tiers.length === 0) {
|
|
96
|
+
throw new Error("No fee tiers configured");
|
|
97
|
+
}
|
|
98
|
+
// Linear scan to find matching tier
|
|
99
|
+
for (const tier of tiers) {
|
|
100
|
+
if (marketCapUsd.gte(tier.rangeStartInclusive) &&
|
|
101
|
+
marketCapUsd.lt(tier.rangeEndExclusive)) {
|
|
102
|
+
return [tier.lpFeeRate, tier.protocolFeeRate, tier.creatorFeeRate];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// If market cap exceeds all tiers, use the last tier
|
|
106
|
+
const lastTier = tiers[tiers.length - 1];
|
|
107
|
+
return [
|
|
108
|
+
lastTier.lpFeeRate,
|
|
109
|
+
lastTier.protocolFeeRate,
|
|
110
|
+
lastTier.creatorFeeRate,
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Calculate the fee rates that would apply for a given pool state.
|
|
115
|
+
* Helper function that combines market cap calculation and tier lookup.
|
|
116
|
+
*
|
|
117
|
+
* @param quoteVaultAmount - Quote vault balance
|
|
118
|
+
* @param baseVaultAmount - Base vault balance
|
|
119
|
+
* @param baseTotalSupply - Total supply of base token
|
|
120
|
+
* @param solPriceUsd - SOL/USD price from oracle (6 decimals)
|
|
121
|
+
* @param quoteMint - Quote mint pubkey
|
|
122
|
+
* @param tiers - Array of active fee tiers
|
|
123
|
+
* @returns Tuple of [lpFeeRate, protocolFeeRate, creatorFeeRate] in basis points
|
|
124
|
+
*/
|
|
125
|
+
export function calculateFeesForPool(quoteVaultAmount, baseVaultAmount, baseTotalSupply, solPriceUsd, quoteMint, tiers) {
|
|
126
|
+
const marketCap = calculatePoolMarketCap(quoteVaultAmount, baseVaultAmount, baseTotalSupply, solPriceUsd, quoteMint);
|
|
127
|
+
return lookupFeeTier(marketCap, tiers);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=tiered-fees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiered-fees.js","sourceRoot":"","sources":["../../src/math/tiered-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CACrC,6CAA6C,CAC7C,CAAC;AAEF,gCAAgC;AAChC,MAAM,gBAAgB,GAAG,IAAI,EAAE,CAAC,UAAa,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,sBAAsB,CACrC,gBAAoB,EACpB,eAAmB,EACnB,eAAmB,EACnB,WAAe,EACf,SAAoB;IAEpB,2BAA2B;IAC3B,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,yEAAyE;QACzE,0FAA0F;QAC1F,EAAE;QACF,6CAA6C;QAC7C,mFAAmF;QACnF,MAAM,SAAS,GAAG,gBAAgB;aAChC,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,eAAe,CAAC;aACpB,GAAG,CAAC,gBAAgB,CAAC;aACrB,GAAG,CAAC,eAAe,CAAC,CAAC;QAEvB,OAAO,SAAS,CAAC;IAClB,CAAC;SAAM,CAAC;QACP,sDAAsD;QACtD,6CAA6C;QAC7C,kEAAkE;QAClE,MAAM,SAAS,GAAG,gBAAgB;aAChC,GAAG,CAAC,eAAe,CAAC;aACpB,GAAG,CAAC,eAAe,CAAC,CAAC;QAEvB,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,aAAa,CAC5B,YAAgB,EAChB,KAAgB;IAEhB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,oCAAoC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IACC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC1C,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACtC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAED,qDAAqD;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO;QACN,QAAQ,CAAC,SAAS;QAClB,QAAQ,CAAC,eAAe;QACxB,QAAQ,CAAC,cAAc;KACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CACnC,gBAAoB,EACpB,eAAmB,EACnB,eAAmB,EACnB,WAAe,EACf,SAAoB,EACpB,KAAgB;IAEhB,MAAM,SAAS,GAAG,sBAAsB,CACvC,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,CACT,CAAC;IAEF,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/oracle.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SOL/USD feed ID from Pyth.
|
|
3
|
+
*
|
|
4
|
+
* This is a universal identifier for the SOL/USD price pair used across all networks
|
|
5
|
+
* (mainnet, devnet, testnet, and localnet). Feed IDs are asset pair identifiers,
|
|
6
|
+
* not account addresses. The actual price feed accounts differ per network, but all
|
|
7
|
+
* contain data for this feed ID.
|
|
8
|
+
*
|
|
9
|
+
* Must match the constant in programs/liquid/src/instructions/shared/oracle.rs
|
|
10
|
+
*/
|
|
11
|
+
export declare const SOL_USD_FEED_ID = "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d";
|
|
12
|
+
/**
|
|
13
|
+
* Standard Pyth exponent for SOL/USD (8 decimals)
|
|
14
|
+
*/
|
|
15
|
+
export declare const PYTH_EXPONENT = -8;
|
|
16
|
+
/**
|
|
17
|
+
* USD decimals used in the protocol
|
|
18
|
+
*/
|
|
19
|
+
export declare const USD_DECIMALS = 6;
|
|
20
|
+
/**
|
|
21
|
+
* Calculates the expected virtual SOL reserves for a given virtual reserve value and SOL price.
|
|
22
|
+
* Matches the calculation in oracle.rs::calculate_virtual_sol_reserves
|
|
23
|
+
*
|
|
24
|
+
* @param initialVirtualReserveUsd - Initial virtual reserve value in USD (6 decimals)
|
|
25
|
+
* @param solPriceUsd - SOL price in USD (6 decimals)
|
|
26
|
+
* @returns Virtual SOL reserves in lamports
|
|
27
|
+
*/
|
|
28
|
+
export declare function calculateVirtualSolReserves(initialVirtualReserveUsd: bigint, solPriceUsd: bigint): bigint;
|
|
29
|
+
/**
|
|
30
|
+
* Calculates the market cap of a token in USD for native curves.
|
|
31
|
+
* Matches the calculation in oracle.rs::calculate_market_cap_usd
|
|
32
|
+
*
|
|
33
|
+
* Market Cap = Token Price (in SOL) × Total Supply × SOL Price (in USD)
|
|
34
|
+
*
|
|
35
|
+
* @param virtualSolReserves - Virtual SOL reserves in lamports
|
|
36
|
+
* @param virtualTokenReserves - Virtual token reserves (6 decimals)
|
|
37
|
+
* @param tokenTotalSupply - Total supply of tokens (6 decimals)
|
|
38
|
+
* @param solPriceUsd - SOL price in USD (6 decimals)
|
|
39
|
+
* @returns Market cap in USD (6 decimals)
|
|
40
|
+
*/
|
|
41
|
+
export declare function calculateNativeMarketCapUsd(virtualSolReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint, solPriceUsd: bigint): bigint;
|
|
42
|
+
/**
|
|
43
|
+
* Calculates the market cap of a token in USD for stable curves (USDC quote).
|
|
44
|
+
*
|
|
45
|
+
* Market Cap = Token Price (in USDC) × Total Supply
|
|
46
|
+
*
|
|
47
|
+
* @param virtualQuoteReserves - Virtual USDC reserves (6 decimals)
|
|
48
|
+
* @param virtualTokenReserves - Virtual token reserves (6 decimals)
|
|
49
|
+
* @param tokenTotalSupply - Total supply of tokens (6 decimals)
|
|
50
|
+
* @returns Market cap in USD (6 decimals)
|
|
51
|
+
*/
|
|
52
|
+
export declare function calculateTokenMarketCapUsd(virtualQuoteReserves: bigint, virtualTokenReserves: bigint, tokenTotalSupply: bigint): bigint;
|
|
53
|
+
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,uEACyC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAC1C,wBAAwB,EAAE,MAAM,EAChC,WAAW,EAAE,MAAM,GACjB,MAAM,CAGR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAC1C,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GACjB,MAAM,CAcR;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACzC,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAUR"}
|
package/dist/oracle.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SOL/USD feed ID from Pyth.
|
|
3
|
+
*
|
|
4
|
+
* This is a universal identifier for the SOL/USD price pair used across all networks
|
|
5
|
+
* (mainnet, devnet, testnet, and localnet). Feed IDs are asset pair identifiers,
|
|
6
|
+
* not account addresses. The actual price feed accounts differ per network, but all
|
|
7
|
+
* contain data for this feed ID.
|
|
8
|
+
*
|
|
9
|
+
* Must match the constant in programs/liquid/src/instructions/shared/oracle.rs
|
|
10
|
+
*/
|
|
11
|
+
export const SOL_USD_FEED_ID = "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d";
|
|
12
|
+
/**
|
|
13
|
+
* Standard Pyth exponent for SOL/USD (8 decimals)
|
|
14
|
+
*/
|
|
15
|
+
export const PYTH_EXPONENT = -8;
|
|
16
|
+
/**
|
|
17
|
+
* USD decimals used in the protocol
|
|
18
|
+
*/
|
|
19
|
+
export const USD_DECIMALS = 6;
|
|
20
|
+
/**
|
|
21
|
+
* Calculates the expected virtual SOL reserves for a given virtual reserve value and SOL price.
|
|
22
|
+
* Matches the calculation in oracle.rs::calculate_virtual_sol_reserves
|
|
23
|
+
*
|
|
24
|
+
* @param initialVirtualReserveUsd - Initial virtual reserve value in USD (6 decimals)
|
|
25
|
+
* @param solPriceUsd - SOL price in USD (6 decimals)
|
|
26
|
+
* @returns Virtual SOL reserves in lamports
|
|
27
|
+
*/
|
|
28
|
+
export function calculateVirtualSolReserves(initialVirtualReserveUsd, solPriceUsd) {
|
|
29
|
+
// virtual_sol (lamports) = initial_virtual_reserve_usd / sol_price_usd * 10^9
|
|
30
|
+
return (initialVirtualReserveUsd * BigInt(1000000000)) / solPriceUsd;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Calculates the market cap of a token in USD for native curves.
|
|
34
|
+
* Matches the calculation in oracle.rs::calculate_market_cap_usd
|
|
35
|
+
*
|
|
36
|
+
* Market Cap = Token Price (in SOL) × Total Supply × SOL Price (in USD)
|
|
37
|
+
*
|
|
38
|
+
* @param virtualSolReserves - Virtual SOL reserves in lamports
|
|
39
|
+
* @param virtualTokenReserves - Virtual token reserves (6 decimals)
|
|
40
|
+
* @param tokenTotalSupply - Total supply of tokens (6 decimals)
|
|
41
|
+
* @param solPriceUsd - SOL price in USD (6 decimals)
|
|
42
|
+
* @returns Market cap in USD (6 decimals)
|
|
43
|
+
*/
|
|
44
|
+
export function calculateNativeMarketCapUsd(virtualSolReserves, virtualTokenReserves, tokenTotalSupply, solPriceUsd) {
|
|
45
|
+
// Token price in lamports per token (scaled by 1e6 for precision)
|
|
46
|
+
const tokenPriceLamports = (virtualSolReserves * BigInt(1000000)) / virtualTokenReserves;
|
|
47
|
+
// Market cap in lamports
|
|
48
|
+
const marketCapLamports = (tokenPriceLamports * tokenTotalSupply) / BigInt(1000000);
|
|
49
|
+
// Convert to USD
|
|
50
|
+
const marketCapUsd = (marketCapLamports * solPriceUsd) / BigInt(1000000000);
|
|
51
|
+
return marketCapUsd;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Calculates the market cap of a token in USD for stable curves (USDC quote).
|
|
55
|
+
*
|
|
56
|
+
* Market Cap = Token Price (in USDC) × Total Supply
|
|
57
|
+
*
|
|
58
|
+
* @param virtualQuoteReserves - Virtual USDC reserves (6 decimals)
|
|
59
|
+
* @param virtualTokenReserves - Virtual token reserves (6 decimals)
|
|
60
|
+
* @param tokenTotalSupply - Total supply of tokens (6 decimals)
|
|
61
|
+
* @returns Market cap in USD (6 decimals)
|
|
62
|
+
*/
|
|
63
|
+
export function calculateTokenMarketCapUsd(virtualQuoteReserves, virtualTokenReserves, tokenTotalSupply) {
|
|
64
|
+
// Token price in USDC (scaled by 1e6 for precision)
|
|
65
|
+
const tokenPriceUsdc = (virtualQuoteReserves * BigInt(1000000)) / virtualTokenReserves;
|
|
66
|
+
// Market cap = price * total_supply
|
|
67
|
+
const marketCapUsd = (tokenPriceUsdc * tokenTotalSupply) / BigInt(1000000);
|
|
68
|
+
return marketCapUsd;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=oracle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../src/oracle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAC1C,wBAAgC,EAChC,WAAmB;IAEnB,8EAA8E;IAC9E,OAAO,CAAC,wBAAwB,GAAG,MAAM,CAAC,UAAa,CAAC,CAAC,GAAG,WAAW,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CAC1C,kBAA0B,EAC1B,oBAA4B,EAC5B,gBAAwB,EACxB,WAAmB;IAEnB,kEAAkE;IAClE,MAAM,kBAAkB,GACvB,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC,GAAG,oBAAoB,CAAC;IAEjE,yBAAyB;IACzB,MAAM,iBAAiB,GACtB,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC;IAE7D,iBAAiB;IACjB,MAAM,YAAY,GACjB,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,UAAa,CAAC,CAAC;IAE3D,OAAO,YAAY,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CACzC,oBAA4B,EAC5B,oBAA4B,EAC5B,gBAAwB;IAExB,oDAAoD;IACpD,MAAM,cAAc,GACnB,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC,GAAG,oBAAoB,CAAC;IAEnE,oCAAoC;IACpC,MAAM,YAAY,GACjB,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,MAAM,CAAC,OAAS,CAAC,CAAC;IAEzD,OAAO,YAAY,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export { getLiquidGlobalConfigPDA, getBondingCurvePDA, getBondingCurveSolVaultPDA, getBondingCurveTokenAccount, getReferralVaultPDA, getReferralTokenVault, getBuybackVaultPDA, getStableBondingCurvePDA, } from "./liquid.js";
|
|
2
|
+
export { getSwapGlobalConfigPDA, getSwapAuthorityPDA, getPoolPDA, getPoolLpMintPDA, getPoolVaultPDA, getObservationPDA, getProtocolFeeVaultPDA, getTempWsolPDA, getSwapBuybackVaultPDA, } from "./liquid-swap.js";
|
|
3
|
+
export { getFeeConfigPDA, getFeeVaultPDA, getRecipientVaultPDA, } from "./liquid-fees.js";
|
|
4
|
+
export { getUserPropertiesPDA, getGlobalCurveVolumePDA, getGlobalAmmVolumePDA, getTokenVolumePDA, getCashbackConfigPDA, getUserSnapshotPDA, getDealPDA, } from "./liquid-state.js";
|
|
5
|
+
import type { PublicKey } from "@solana/web3.js";
|
|
6
|
+
import { type LiquidConfig } from "../config.js";
|
|
7
|
+
/** All PDAs associated with a bonding curve token */
|
|
8
|
+
export interface BondingCurvePDAs {
|
|
9
|
+
bondingCurve: PublicKey;
|
|
10
|
+
bondingCurveSolVault: PublicKey;
|
|
11
|
+
referralVault: PublicKey;
|
|
12
|
+
buybackVault: PublicKey;
|
|
13
|
+
feeConfig: PublicKey;
|
|
14
|
+
feeVault: PublicKey;
|
|
15
|
+
userProperties: PublicKey;
|
|
16
|
+
tokenVolume: PublicKey;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Derives all PDAs associated with a bonding curve token.
|
|
20
|
+
*
|
|
21
|
+
* @param mint - Token mint address
|
|
22
|
+
* @param creator - Bonding curve creator public key
|
|
23
|
+
* @param config - Liquid protocol configuration
|
|
24
|
+
* @returns All bonding curve-related PDAs
|
|
25
|
+
*/
|
|
26
|
+
export declare const getAllBondingCurvePDAs: (mint: PublicKey, creator: PublicKey, config: LiquidConfig) => BondingCurvePDAs;
|
|
27
|
+
/** All PDAs associated with an AMM pool */
|
|
28
|
+
export interface PoolPDAs {
|
|
29
|
+
poolState: PublicKey;
|
|
30
|
+
lpMint: PublicKey;
|
|
31
|
+
baseVault: PublicKey;
|
|
32
|
+
quoteVault: PublicKey;
|
|
33
|
+
observation: PublicKey;
|
|
34
|
+
ammConfig: PublicKey;
|
|
35
|
+
ammAuthority: PublicKey;
|
|
36
|
+
feeConfig: PublicKey;
|
|
37
|
+
tokenVolume: PublicKey;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Derives all PDAs associated with an AMM pool.
|
|
41
|
+
*
|
|
42
|
+
* @param baseMint - Base token mint address
|
|
43
|
+
* @param quoteMint - Quote token mint address
|
|
44
|
+
* @param config - Liquid protocol configuration
|
|
45
|
+
* @returns All pool-related PDAs
|
|
46
|
+
*/
|
|
47
|
+
export declare const getAllPoolPDAs: (baseMint: PublicKey, quoteMint: PublicKey, config: LiquidConfig) => PoolPDAs;
|
|
48
|
+
/** All PDAs needed for bonding curve to AMM migration */
|
|
49
|
+
export interface MigrationPDAs {
|
|
50
|
+
bondingCurve: PublicKey;
|
|
51
|
+
ammPoolState: PublicKey;
|
|
52
|
+
ammLpMint: PublicKey;
|
|
53
|
+
ammBaseVault: PublicKey;
|
|
54
|
+
ammQuoteVault: PublicKey;
|
|
55
|
+
ammObservation: PublicKey;
|
|
56
|
+
ammConfig: PublicKey;
|
|
57
|
+
ammAuthority: PublicKey;
|
|
58
|
+
ammBuybackVault: PublicKey;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Derives all PDAs needed for migration from bonding curve to AMM.
|
|
62
|
+
*
|
|
63
|
+
* @param tokenMint - Token mint address
|
|
64
|
+
* @param config - Liquid protocol configuration
|
|
65
|
+
* @returns All migration-related PDAs
|
|
66
|
+
*/
|
|
67
|
+
export declare const getMigrationPDAs: (tokenMint: PublicKey, config?: LiquidConfig) => MigrationPDAs;
|
|
68
|
+
/** All PDAs needed for token bonding curve to AMM migration */
|
|
69
|
+
export interface TokenMigrationPDAs {
|
|
70
|
+
bondingCurve: PublicKey;
|
|
71
|
+
ammPoolState: PublicKey;
|
|
72
|
+
ammLpMint: PublicKey;
|
|
73
|
+
ammBaseVault: PublicKey;
|
|
74
|
+
ammQuoteVault: PublicKey;
|
|
75
|
+
ammObservation: PublicKey;
|
|
76
|
+
ammConfig: PublicKey;
|
|
77
|
+
ammAuthority: PublicKey;
|
|
78
|
+
ammBuybackVault: PublicKey;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Derives all PDAs needed for migration from token bonding curve to AMM.
|
|
82
|
+
*
|
|
83
|
+
* @param tokenMint - Token mint address
|
|
84
|
+
* @param quoteMint - Quote token mint address (e.g., USDC)
|
|
85
|
+
* @param config - Liquid protocol configuration
|
|
86
|
+
* @returns All migration-related PDAs
|
|
87
|
+
*/
|
|
88
|
+
export declare const getTokenMigrationPDAs: (tokenMint: PublicKey, quoteMint: PublicKey, config: LiquidConfig) => TokenMigrationPDAs;
|
|
89
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pda/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,eAAe,EACf,cAAc,EACd,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAoB5E,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,SAAS,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,aAAa,EAAE,SAAS,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAClC,MAAM,SAAS,EACf,SAAS,SAAS,EAClB,QAAQ,YAAY,KAClB,gBAgCF,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAC1B,UAAU,SAAS,EACnB,WAAW,SAAS,EACpB,QAAQ,YAAY,KAClB,QAwCF,CAAC;AAEF,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC7B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,SAAS,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,aAAa,EAAE,SAAS,CAAC;IACzB,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,EAAE,SAAS,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC5B,WAAW,SAAS,EACpB,SAAQ,YAA6B,KACnC,aA+CF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IAClC,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,SAAS,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,aAAa,EAAE,SAAS,CAAC;IACzB,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,EAAE,SAAS,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,QAAQ,YAAY,KAClB,kBAgDF,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export { getLiquidGlobalConfigPDA, getBondingCurvePDA, getBondingCurveSolVaultPDA, getBondingCurveTokenAccount, getReferralVaultPDA, getReferralTokenVault, getBuybackVaultPDA, getStableBondingCurvePDA, } from "./liquid.js";
|
|
2
|
+
export { getSwapGlobalConfigPDA, getSwapAuthorityPDA, getPoolPDA, getPoolLpMintPDA, getPoolVaultPDA, getObservationPDA, getProtocolFeeVaultPDA, getTempWsolPDA, getSwapBuybackVaultPDA, } from "./liquid-swap.js";
|
|
3
|
+
export { getFeeConfigPDA, getFeeVaultPDA, getRecipientVaultPDA, } from "./liquid-fees.js";
|
|
4
|
+
export { getUserPropertiesPDA, getGlobalCurveVolumePDA, getGlobalAmmVolumePDA, getTokenVolumePDA, getCashbackConfigPDA, getUserSnapshotPDA, getDealPDA, } from "./liquid-state.js";
|
|
5
|
+
import { MAINNET_CONFIG, WSOL_MINT } from "../config.js";
|
|
6
|
+
import { getBondingCurvePDA, getBondingCurveSolVaultPDA, getReferralVaultPDA, getBuybackVaultPDA, getStableBondingCurvePDA, } from "./liquid.js";
|
|
7
|
+
import { getPoolPDA, getPoolLpMintPDA, getPoolVaultPDA, getObservationPDA, getSwapGlobalConfigPDA, getSwapAuthorityPDA, getSwapBuybackVaultPDA, } from "./liquid-swap.js";
|
|
8
|
+
import { getFeeConfigPDA, getFeeVaultPDA } from "./liquid-fees.js";
|
|
9
|
+
import { getUserPropertiesPDA, getTokenVolumePDA } from "./liquid-state.js";
|
|
10
|
+
/**
|
|
11
|
+
* Derives all PDAs associated with a bonding curve token.
|
|
12
|
+
*
|
|
13
|
+
* @param mint - Token mint address
|
|
14
|
+
* @param creator - Bonding curve creator public key
|
|
15
|
+
* @param config - Liquid protocol configuration
|
|
16
|
+
* @returns All bonding curve-related PDAs
|
|
17
|
+
*/
|
|
18
|
+
export const getAllBondingCurvePDAs = (mint, creator, config) => {
|
|
19
|
+
const [bondingCurve] = getBondingCurvePDA(mint, config.liquidProgramId);
|
|
20
|
+
const [bondingCurveSolVault] = getBondingCurveSolVaultPDA(bondingCurve, config.liquidProgramId);
|
|
21
|
+
const [referralVault] = getReferralVaultPDA(creator, config.liquidProgramId);
|
|
22
|
+
const [buybackVault] = getBuybackVaultPDA(bondingCurve, config.liquidProgramId);
|
|
23
|
+
const [feeConfig] = getFeeConfigPDA(mint, config.liquidFeesProgramId);
|
|
24
|
+
const [feeVault] = getFeeVaultPDA(feeConfig, config.liquidFeesProgramId);
|
|
25
|
+
const [userProperties] = getUserPropertiesPDA(creator, config.liquidStateProgramId);
|
|
26
|
+
const [tokenVolume] = getTokenVolumePDA(mint, config.liquidStateProgramId);
|
|
27
|
+
return {
|
|
28
|
+
bondingCurve,
|
|
29
|
+
bondingCurveSolVault,
|
|
30
|
+
referralVault,
|
|
31
|
+
buybackVault,
|
|
32
|
+
feeConfig,
|
|
33
|
+
feeVault,
|
|
34
|
+
userProperties,
|
|
35
|
+
tokenVolume,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Derives all PDAs associated with an AMM pool.
|
|
40
|
+
*
|
|
41
|
+
* @param baseMint - Base token mint address
|
|
42
|
+
* @param quoteMint - Quote token mint address
|
|
43
|
+
* @param config - Liquid protocol configuration
|
|
44
|
+
* @returns All pool-related PDAs
|
|
45
|
+
*/
|
|
46
|
+
export const getAllPoolPDAs = (baseMint, quoteMint, config) => {
|
|
47
|
+
const [poolState] = getPoolPDA(baseMint, quoteMint, config.liquidSwapProgramId);
|
|
48
|
+
const [lpMint] = getPoolLpMintPDA(poolState, config.liquidSwapProgramId);
|
|
49
|
+
const [baseVault] = getPoolVaultPDA(poolState, baseMint, config.liquidSwapProgramId);
|
|
50
|
+
const [quoteVault] = getPoolVaultPDA(poolState, quoteMint, config.liquidSwapProgramId);
|
|
51
|
+
const [observation] = getObservationPDA(poolState, config.liquidSwapProgramId);
|
|
52
|
+
const [ammConfig] = getSwapGlobalConfigPDA(config.liquidSwapProgramId);
|
|
53
|
+
const [ammAuthority] = getSwapAuthorityPDA(config.liquidSwapProgramId);
|
|
54
|
+
const [feeConfig] = getFeeConfigPDA(baseMint, config.liquidFeesProgramId);
|
|
55
|
+
const [tokenVolume] = getTokenVolumePDA(baseMint, config.liquidStateProgramId);
|
|
56
|
+
return {
|
|
57
|
+
poolState,
|
|
58
|
+
lpMint,
|
|
59
|
+
baseVault,
|
|
60
|
+
quoteVault,
|
|
61
|
+
observation,
|
|
62
|
+
ammConfig,
|
|
63
|
+
ammAuthority,
|
|
64
|
+
feeConfig,
|
|
65
|
+
tokenVolume,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Derives all PDAs needed for migration from bonding curve to AMM.
|
|
70
|
+
*
|
|
71
|
+
* @param tokenMint - Token mint address
|
|
72
|
+
* @param config - Liquid protocol configuration
|
|
73
|
+
* @returns All migration-related PDAs
|
|
74
|
+
*/
|
|
75
|
+
export const getMigrationPDAs = (tokenMint, config = MAINNET_CONFIG) => {
|
|
76
|
+
const [bondingCurve] = getBondingCurvePDA(tokenMint, config.liquidProgramId);
|
|
77
|
+
const [ammPoolState] = getPoolPDA(tokenMint, WSOL_MINT, config.liquidSwapProgramId);
|
|
78
|
+
const [ammLpMint] = getPoolLpMintPDA(ammPoolState, config.liquidSwapProgramId);
|
|
79
|
+
const [ammBaseVault] = getPoolVaultPDA(ammPoolState, tokenMint, config.liquidSwapProgramId);
|
|
80
|
+
const [ammQuoteVault] = getPoolVaultPDA(ammPoolState, WSOL_MINT, config.liquidSwapProgramId);
|
|
81
|
+
const [ammObservation] = getObservationPDA(ammPoolState, config.liquidSwapProgramId);
|
|
82
|
+
const [ammConfig] = getSwapGlobalConfigPDA(config.liquidSwapProgramId);
|
|
83
|
+
const [ammAuthority] = getSwapAuthorityPDA(config.liquidSwapProgramId);
|
|
84
|
+
const [ammBuybackVault] = getSwapBuybackVaultPDA(ammPoolState, WSOL_MINT, config.liquidSwapProgramId);
|
|
85
|
+
return {
|
|
86
|
+
bondingCurve,
|
|
87
|
+
ammPoolState,
|
|
88
|
+
ammLpMint,
|
|
89
|
+
ammBaseVault,
|
|
90
|
+
ammQuoteVault,
|
|
91
|
+
ammObservation,
|
|
92
|
+
ammConfig,
|
|
93
|
+
ammAuthority,
|
|
94
|
+
ammBuybackVault,
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Derives all PDAs needed for migration from token bonding curve to AMM.
|
|
99
|
+
*
|
|
100
|
+
* @param tokenMint - Token mint address
|
|
101
|
+
* @param quoteMint - Quote token mint address (e.g., USDC)
|
|
102
|
+
* @param config - Liquid protocol configuration
|
|
103
|
+
* @returns All migration-related PDAs
|
|
104
|
+
*/
|
|
105
|
+
export const getTokenMigrationPDAs = (tokenMint, quoteMint, config) => {
|
|
106
|
+
const [bondingCurve] = getStableBondingCurvePDA(tokenMint, quoteMint, config.liquidProgramId);
|
|
107
|
+
const [ammPoolState] = getPoolPDA(tokenMint, quoteMint, config.liquidSwapProgramId);
|
|
108
|
+
const [ammLpMint] = getPoolLpMintPDA(ammPoolState, config.liquidSwapProgramId);
|
|
109
|
+
const [ammBaseVault] = getPoolVaultPDA(ammPoolState, tokenMint, config.liquidSwapProgramId);
|
|
110
|
+
const [ammQuoteVault] = getPoolVaultPDA(ammPoolState, quoteMint, config.liquidSwapProgramId);
|
|
111
|
+
const [ammObservation] = getObservationPDA(ammPoolState, config.liquidSwapProgramId);
|
|
112
|
+
const [ammConfig] = getSwapGlobalConfigPDA(config.liquidSwapProgramId);
|
|
113
|
+
const [ammAuthority] = getSwapAuthorityPDA(config.liquidSwapProgramId);
|
|
114
|
+
const [ammBuybackVault] = getSwapBuybackVaultPDA(ammPoolState, quoteMint, config.liquidSwapProgramId);
|
|
115
|
+
return {
|
|
116
|
+
bondingCurve,
|
|
117
|
+
ammPoolState,
|
|
118
|
+
ammLpMint,
|
|
119
|
+
ammBaseVault,
|
|
120
|
+
ammQuoteVault,
|
|
121
|
+
ammObservation,
|
|
122
|
+
ammConfig,
|
|
123
|
+
ammAuthority,
|
|
124
|
+
ammBuybackVault,
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pda/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,eAAe,EACf,cAAc,EACd,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAC5E,OAAO,EACN,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAc5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,IAAe,EACf,OAAkB,EAClB,MAAoB,EACD,EAAE;IACrB,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACxE,MAAM,CAAC,oBAAoB,CAAC,GAAG,0BAA0B,CACxD,YAAY,EACZ,MAAM,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAC1C,OAAO,EACP,MAAM,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CACxC,YAAY,EACZ,MAAM,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzE,MAAM,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAC5C,OAAO,EACP,MAAM,CAAC,oBAAoB,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE3E,OAAO;QACN,YAAY;QACZ,oBAAoB;QACpB,aAAa;QACb,YAAY;QACZ,SAAS;QACT,QAAQ;QACR,cAAc;QACd,WAAW;KACX,CAAC;AACH,CAAC,CAAC;AAeF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,QAAmB,EACnB,SAAoB,EACpB,MAAoB,EACT,EAAE;IACb,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAC7B,QAAQ,EACR,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzE,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAClC,SAAS,EACT,QAAQ,EACR,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,UAAU,CAAC,GAAG,eAAe,CACnC,SAAS,EACT,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,WAAW,CAAC,GAAG,iBAAiB,CACtC,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,CAAC,WAAW,CAAC,GAAG,iBAAiB,CACtC,QAAQ,EACR,MAAM,CAAC,oBAAoB,CAC3B,CAAC;IAEF,OAAO;QACN,SAAS;QACT,MAAM;QACN,SAAS;QACT,UAAU;QACV,WAAW;QACX,SAAS;QACT,YAAY;QACZ,SAAS;QACT,WAAW;KACX,CAAC;AACH,CAAC,CAAC;AAeF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,SAAoB,EACpB,SAAuB,cAAc,EACrB,EAAE;IAClB,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CACxC,SAAS,EACT,MAAM,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAChC,SAAS,EACT,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAgB,CACnC,YAAY,EACZ,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,CACrC,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,aAAa,CAAC,GAAG,eAAe,CACtC,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CACzC,YAAY,EACZ,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,eAAe,CAAC,GAAG,sBAAsB,CAC/C,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IAEF,OAAO;QACN,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,aAAa;QACb,cAAc;QACd,SAAS;QACT,YAAY;QACZ,eAAe;KACf,CAAC;AACH,CAAC,CAAC;AAeF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,SAAoB,EACpB,SAAoB,EACpB,MAAoB,EACC,EAAE;IACvB,MAAM,CAAC,YAAY,CAAC,GAAG,wBAAwB,CAC9C,SAAS,EACT,SAAS,EACT,MAAM,CAAC,eAAe,CACtB,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAChC,SAAS,EACT,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAgB,CACnC,YAAY,EACZ,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,CACrC,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,aAAa,CAAC,GAAG,eAAe,CACtC,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CACzC,YAAY,EACZ,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACvE,MAAM,CAAC,eAAe,CAAC,GAAG,sBAAsB,CAC/C,YAAY,EACZ,SAAS,EACT,MAAM,CAAC,mBAAmB,CAC1B,CAAC;IAEF,OAAO;QACN,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,aAAa;QACb,cAAc;QACd,SAAS;QACT,YAAY;QACZ,eAAe;KACf,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Derives the fee config PDA for a token mint.
|
|
4
|
+
*
|
|
5
|
+
* @param tokenMint - Token mint address
|
|
6
|
+
* @param programId - Liquid Fees program ID
|
|
7
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
8
|
+
*/
|
|
9
|
+
export declare const getFeeConfigPDA: (tokenMint: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
10
|
+
/**
|
|
11
|
+
* Derives the fee vault PDA for a fee config.
|
|
12
|
+
*
|
|
13
|
+
* @param feeConfig - Fee config PDA address
|
|
14
|
+
* @param programId - Liquid Fees program ID
|
|
15
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
16
|
+
*/
|
|
17
|
+
export declare const getFeeVaultPDA: (feeConfig: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
18
|
+
/**
|
|
19
|
+
* Derives the recipient vault PDA for a specific recipient within a fee config.
|
|
20
|
+
*
|
|
21
|
+
* @param feeConfig - Fee config PDA address
|
|
22
|
+
* @param recipient - Recipient wallet address
|
|
23
|
+
* @param programId - Liquid Fees program ID
|
|
24
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
25
|
+
*/
|
|
26
|
+
export declare const getRecipientVaultPDA: (feeConfig: PublicKey, recipient: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
27
|
+
//# sourceMappingURL=liquid-fees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquid-fees.d.ts","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM5C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC3B,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAC1B,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAChC,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
const SEED_FEE_CONFIG = Buffer.from("fee_config");
|
|
3
|
+
const SEED_FEE_VAULT = Buffer.from("fee_vault");
|
|
4
|
+
const SEED_RECIPIENT_VAULT = Buffer.from("recipient_vault");
|
|
5
|
+
/**
|
|
6
|
+
* Derives the fee config PDA for a token mint.
|
|
7
|
+
*
|
|
8
|
+
* @param tokenMint - Token mint address
|
|
9
|
+
* @param programId - Liquid Fees program ID
|
|
10
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
11
|
+
*/
|
|
12
|
+
export const getFeeConfigPDA = (tokenMint, programId) => {
|
|
13
|
+
return PublicKey.findProgramAddressSync([SEED_FEE_CONFIG, tokenMint.toBuffer()], programId);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Derives the fee vault PDA for a fee config.
|
|
17
|
+
*
|
|
18
|
+
* @param feeConfig - Fee config PDA address
|
|
19
|
+
* @param programId - Liquid Fees program ID
|
|
20
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
21
|
+
*/
|
|
22
|
+
export const getFeeVaultPDA = (feeConfig, programId) => {
|
|
23
|
+
return PublicKey.findProgramAddressSync([SEED_FEE_VAULT, feeConfig.toBuffer()], programId);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Derives the recipient vault PDA for a specific recipient within a fee config.
|
|
27
|
+
*
|
|
28
|
+
* @param feeConfig - Fee config PDA address
|
|
29
|
+
* @param recipient - Recipient wallet address
|
|
30
|
+
* @param programId - Liquid Fees program ID
|
|
31
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
32
|
+
*/
|
|
33
|
+
export const getRecipientVaultPDA = (feeConfig, recipient, programId) => {
|
|
34
|
+
return PublicKey.findProgramAddressSync([SEED_RECIPIENT_VAULT, feeConfig.toBuffer(), recipient.toBuffer()], programId);
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=liquid-fees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquid-fees.js","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EACvC,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EACtC,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,oBAAoB,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAClE,SAAS,CACT,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Derives the user properties PDA.
|
|
4
|
+
*
|
|
5
|
+
* @param user - User's public key
|
|
6
|
+
* @param programId - Liquid State program ID
|
|
7
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
8
|
+
*/
|
|
9
|
+
export declare const getUserPropertiesPDA: (user: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
10
|
+
/**
|
|
11
|
+
* Derives the global curve volume accumulator PDA.
|
|
12
|
+
*
|
|
13
|
+
* @param programId - Liquid State program ID
|
|
14
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
15
|
+
*/
|
|
16
|
+
export declare const getGlobalCurveVolumePDA: (programId: PublicKey) => [PublicKey, number];
|
|
17
|
+
/**
|
|
18
|
+
* Derives the global AMM volume accumulator PDA.
|
|
19
|
+
*
|
|
20
|
+
* @param programId - Liquid State program ID
|
|
21
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
22
|
+
*/
|
|
23
|
+
export declare const getGlobalAmmVolumePDA: (programId: PublicKey) => [PublicKey, number];
|
|
24
|
+
/**
|
|
25
|
+
* Derives the token volume accumulator PDA for a mint.
|
|
26
|
+
*
|
|
27
|
+
* @param mint - Token mint address
|
|
28
|
+
* @param programId - Liquid State program ID
|
|
29
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
30
|
+
*/
|
|
31
|
+
export declare const getTokenVolumePDA: (mint: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
32
|
+
/**
|
|
33
|
+
* Derives the cashback config PDA.
|
|
34
|
+
*
|
|
35
|
+
* @param programId - Liquid State program ID
|
|
36
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
37
|
+
*/
|
|
38
|
+
export declare const getCashbackConfigPDA: (programId: PublicKey) => [PublicKey, number];
|
|
39
|
+
/**
|
|
40
|
+
* Derives the user snapshot PDA for a given user and index.
|
|
41
|
+
*
|
|
42
|
+
* @param user - User's public key
|
|
43
|
+
* @param index - Snapshot index (0-based)
|
|
44
|
+
* @param programId - Liquid State program ID
|
|
45
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
46
|
+
*/
|
|
47
|
+
export declare const getUserSnapshotPDA: (user: PublicKey, index: number, programId: PublicKey) => [PublicKey, number];
|
|
48
|
+
/**
|
|
49
|
+
* Derives the deal PDA for a given owner.
|
|
50
|
+
*
|
|
51
|
+
* @param owner - Deal owner's public key
|
|
52
|
+
* @param programId - Liquid State program ID
|
|
53
|
+
* @returns Tuple of [PDA address, bump seed]
|
|
54
|
+
*/
|
|
55
|
+
export declare const getDealPDA: (owner: PublicKey, programId: PublicKey) => [PublicKey, number];
|
|
56
|
+
//# sourceMappingURL=liquid-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquid-state.d.ts","sourceRoot":"","sources":["../../src/pda/liquid-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU5C;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,SAAS,EACf,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GACnC,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC7B,MAAM,SAAS,EACf,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAChC,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAEpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC9B,MAAM,SAAS,EACf,OAAO,MAAM,EACb,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAOpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACtB,OAAO,SAAS,EAChB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC"}
|