@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,458 @@
|
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
import { fetchAmmConfig, fetchPoolState } from "../accounts/liquid-swap.js";
|
|
3
|
+
import { fetchLiquidGlobalConfig, fetchNativeBondingCurve, fetchStableBondingCurve, } from "../accounts/liquid.js";
|
|
4
|
+
import { calculateBuyExpectation, calculateSellExpectation, } from "../math/bonding-curve.js";
|
|
5
|
+
import { calculateAmmSellOutput, calculateAmmBuyInput } from "../math/amm.js";
|
|
6
|
+
import { BPS_DENOMINATOR } from "../math/constants.js";
|
|
7
|
+
import { calculateVirtualSolReserves } from "../oracle.js";
|
|
8
|
+
import { getAccount, getMint } from "@solana/spl-token";
|
|
9
|
+
import { calculateFeesForPool } from "../math/tiered-fees.js";
|
|
10
|
+
/**
|
|
11
|
+
* Previews a buy on the bonding curve from pre-fetched state. The function executes offline using the state being passed in.
|
|
12
|
+
*
|
|
13
|
+
* @param amountInQuote - Quote token amount to spend (lamports for SOL, smallest unit for stables)
|
|
14
|
+
* @param state - Pre-fetched bonding curve and global config state
|
|
15
|
+
* @param options - Optional referral flags
|
|
16
|
+
* @returns Buy preview with tokens out, fees, price impact, and completion flag
|
|
17
|
+
*/
|
|
18
|
+
export function calculateBuyCurvePreview(amountInQuote, state, options) {
|
|
19
|
+
const { globalConfig, bondingCurve } = state;
|
|
20
|
+
const feeConfig = {
|
|
21
|
+
protocolFeeBps: globalConfig.protocolFeeBasisPoints,
|
|
22
|
+
creatorFeeBps: globalConfig.creatorFeeBasisPoints,
|
|
23
|
+
creatorReferralBps: globalConfig.creatorReferralRewardBasisPoints,
|
|
24
|
+
traderReferralBps: globalConfig.traderReferralRewardBasisPoints,
|
|
25
|
+
};
|
|
26
|
+
const result = calculateBuyExpectation(amountInQuote, bondingCurve, feeConfig, options?.hasCreatorRef ?? false, options?.hasTraderRef ?? false);
|
|
27
|
+
const priceBefore = bondingCurve.virtualQuoteReserves
|
|
28
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
29
|
+
.div(bondingCurve.virtualTokenReserves);
|
|
30
|
+
const priceAfter = result.newVirtualQuote
|
|
31
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
32
|
+
.div(result.newVirtualToken);
|
|
33
|
+
const priceImpactBps = priceAfter
|
|
34
|
+
.sub(priceBefore)
|
|
35
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
36
|
+
.div(priceBefore)
|
|
37
|
+
.toNumber();
|
|
38
|
+
const willComplete = result.tokensOut.gte(bondingCurve.realTokenReserves);
|
|
39
|
+
return {
|
|
40
|
+
tokensOut: result.tokensOut,
|
|
41
|
+
fees: {
|
|
42
|
+
protocolFee: result.protocolFee,
|
|
43
|
+
creatorFee: result.creatorFee,
|
|
44
|
+
creatorReferralFee: result.creatorReferralFee,
|
|
45
|
+
traderReferralFee: result.traderReferralFee,
|
|
46
|
+
totalFees: result.totalFees,
|
|
47
|
+
},
|
|
48
|
+
priceImpactBps,
|
|
49
|
+
newReserves: {
|
|
50
|
+
virtualQuote: result.newVirtualQuote,
|
|
51
|
+
virtualToken: result.newVirtualToken,
|
|
52
|
+
},
|
|
53
|
+
willComplete,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Previews a sell on the bonding curve from pre-fetched state. The function executes offline using the state being passed in.
|
|
58
|
+
*
|
|
59
|
+
* @param amountInTokens - Token amount to sell
|
|
60
|
+
* @param state - Pre-fetched bonding curve and global config state
|
|
61
|
+
* @param options - Optional referral flags
|
|
62
|
+
* @returns Sell preview with quote out, fees, and price impact
|
|
63
|
+
*/
|
|
64
|
+
export function calculateSellCurvePreview(amountInTokens, state, options) {
|
|
65
|
+
const { globalConfig, bondingCurve } = state;
|
|
66
|
+
const feeConfig = {
|
|
67
|
+
protocolFeeBps: globalConfig.protocolFeeBasisPoints,
|
|
68
|
+
creatorFeeBps: globalConfig.creatorFeeBasisPoints,
|
|
69
|
+
creatorReferralBps: globalConfig.creatorReferralRewardBasisPoints,
|
|
70
|
+
traderReferralBps: globalConfig.traderReferralRewardBasisPoints,
|
|
71
|
+
};
|
|
72
|
+
const result = calculateSellExpectation(amountInTokens, bondingCurve, feeConfig, options?.hasCreatorRef ?? false, options?.hasTraderRef ?? false);
|
|
73
|
+
const priceBefore = bondingCurve.virtualQuoteReserves
|
|
74
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
75
|
+
.div(bondingCurve.virtualTokenReserves);
|
|
76
|
+
const priceAfter = result.newVirtualQuote
|
|
77
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
78
|
+
.div(result.newVirtualToken);
|
|
79
|
+
const priceImpactBps = priceBefore
|
|
80
|
+
.sub(priceAfter)
|
|
81
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
82
|
+
.div(priceBefore)
|
|
83
|
+
.toNumber();
|
|
84
|
+
return {
|
|
85
|
+
quoteOut: result.quoteOutGross,
|
|
86
|
+
quoteOutNet: result.quoteOutNet,
|
|
87
|
+
fees: {
|
|
88
|
+
protocolFee: result.protocolFee,
|
|
89
|
+
creatorFee: result.creatorFee,
|
|
90
|
+
creatorReferralFee: result.creatorReferralFee,
|
|
91
|
+
traderReferralFee: result.traderReferralFee,
|
|
92
|
+
totalFees: result.totalFees,
|
|
93
|
+
},
|
|
94
|
+
priceImpactBps,
|
|
95
|
+
newReserves: {
|
|
96
|
+
virtualQuote: result.newVirtualQuote,
|
|
97
|
+
virtualToken: result.newVirtualToken,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Previews a buy swap on the AMM (quote -> base) from pre-fetched state. The function executes offline using the state being passed in.
|
|
103
|
+
*
|
|
104
|
+
* @param amountOut - Desired base token amount out
|
|
105
|
+
* @param state - Pre-fetched AMM config and vault balances
|
|
106
|
+
* @returns Swap preview with quote in, fees, and price impact
|
|
107
|
+
*/
|
|
108
|
+
export function calculateSwapBuyPreview(amountOut, state) {
|
|
109
|
+
const { ammConfig, baseVaultBalance, quoteVaultBalance } = state;
|
|
110
|
+
const result = calculateAmmBuyInput(amountOut, baseVaultBalance, quoteVaultBalance, {
|
|
111
|
+
lpFeeRate: ammConfig.lpFeeRate,
|
|
112
|
+
creatorFeeRate: ammConfig.creatorFeeRate,
|
|
113
|
+
protocolFeeRate: ammConfig.protocolFeeRate,
|
|
114
|
+
});
|
|
115
|
+
const priceBefore = quoteVaultBalance
|
|
116
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
117
|
+
.div(baseVaultBalance);
|
|
118
|
+
const newBaseVault = baseVaultBalance.sub(amountOut);
|
|
119
|
+
const newQuoteVault = quoteVaultBalance.add(result.quoteInGross);
|
|
120
|
+
const priceAfter = newQuoteVault
|
|
121
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
122
|
+
.div(newBaseVault);
|
|
123
|
+
const priceImpactBps = priceAfter
|
|
124
|
+
.sub(priceBefore)
|
|
125
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
126
|
+
.div(priceBefore)
|
|
127
|
+
.toNumber();
|
|
128
|
+
return {
|
|
129
|
+
amountOut: result.quoteInGross,
|
|
130
|
+
amountOutNet: result.quoteIn,
|
|
131
|
+
fees: {
|
|
132
|
+
lpFee: result.lpFee,
|
|
133
|
+
creatorFee: result.creatorFee,
|
|
134
|
+
protocolFee: result.protocolFee,
|
|
135
|
+
totalFees: result.totalFees,
|
|
136
|
+
},
|
|
137
|
+
priceImpactBps,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Previews a sell swap on the AMM (base -> quote) from pre-fetched state. The function executes offline using the state being passed in.
|
|
142
|
+
*
|
|
143
|
+
* @param amountIn - Base token amount to sell
|
|
144
|
+
* @param state - Pre-fetched AMM config and vault balances
|
|
145
|
+
* @returns Swap preview with quote out, fees, and price impact
|
|
146
|
+
*/
|
|
147
|
+
export function calculateSwapSellPreview(amountIn, state) {
|
|
148
|
+
const { ammConfig, baseVaultBalance, quoteVaultBalance } = state;
|
|
149
|
+
const result = calculateAmmSellOutput(amountIn, baseVaultBalance, quoteVaultBalance, {
|
|
150
|
+
lpFeeRate: ammConfig.lpFeeRate,
|
|
151
|
+
creatorFeeRate: ammConfig.creatorFeeRate,
|
|
152
|
+
protocolFeeRate: ammConfig.protocolFeeRate,
|
|
153
|
+
});
|
|
154
|
+
const priceBefore = quoteVaultBalance
|
|
155
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
156
|
+
.div(baseVaultBalance);
|
|
157
|
+
const newBaseVault = baseVaultBalance.add(amountIn);
|
|
158
|
+
const newQuoteVault = quoteVaultBalance.sub(result.quoteOut);
|
|
159
|
+
const priceAfter = newQuoteVault
|
|
160
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
161
|
+
.div(newBaseVault);
|
|
162
|
+
const priceImpactBps = priceBefore
|
|
163
|
+
.sub(priceAfter)
|
|
164
|
+
.mul(new BN(BPS_DENOMINATOR))
|
|
165
|
+
.div(priceBefore)
|
|
166
|
+
.toNumber();
|
|
167
|
+
return {
|
|
168
|
+
amountOut: result.quoteOut,
|
|
169
|
+
amountOutNet: result.quoteOutNet,
|
|
170
|
+
fees: {
|
|
171
|
+
lpFee: result.lpFee,
|
|
172
|
+
creatorFee: result.creatorFee,
|
|
173
|
+
protocolFee: result.protocolFee,
|
|
174
|
+
totalFees: result.totalFees,
|
|
175
|
+
},
|
|
176
|
+
priceImpactBps,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Fetches the on-chain global config and maps it to the fee/reserve fields
|
|
181
|
+
* required by {@link CurvePreviewState}.
|
|
182
|
+
*
|
|
183
|
+
* @param connection - Solana RPC connection
|
|
184
|
+
* @param config - Liquid protocol configuration (provides the program ID)
|
|
185
|
+
* @returns Fee basis-point fields plus `initialVirtualReserveUsd` for native reserve computation
|
|
186
|
+
*/
|
|
187
|
+
async function fetchCurveGlobalConfig(connection, config) {
|
|
188
|
+
const raw = await fetchLiquidGlobalConfig(connection, config);
|
|
189
|
+
return {
|
|
190
|
+
protocolFeeBasisPoints: raw.protocolFeeBasisPoints,
|
|
191
|
+
creatorFeeBasisPoints: raw.creatorFeeBasisPoints,
|
|
192
|
+
creatorReferralRewardBasisPoints: raw.creatorReferralRewardBasisPoints,
|
|
193
|
+
traderReferralRewardBasisPoints: raw.traderReferralRewardBasisPoints,
|
|
194
|
+
initialVirtualReserveUsd: raw.initialVirtualReserveUsd,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Resolves {@link CurvePreviewState} for native SOL curves.
|
|
199
|
+
*
|
|
200
|
+
* Fetches the global config and native bonding curve in parallel (skipping
|
|
201
|
+
* any that are prefetched), then computes `virtualQuoteReserves` from
|
|
202
|
+
* `initialVirtualReserveUsd` and `solPriceUsd`.
|
|
203
|
+
*
|
|
204
|
+
* @param connection - Solana RPC connection
|
|
205
|
+
* @param mint - Token mint address of the native bonding curve
|
|
206
|
+
* @param options - Native curve options containing `solPriceUsd` and optional `prefetched` state
|
|
207
|
+
* @param config - Liquid protocol configuration
|
|
208
|
+
* @returns Resolved curve preview state ready for pure-math preview calculations
|
|
209
|
+
*/
|
|
210
|
+
async function resolveNativeCurve(connection, mint, options, config) {
|
|
211
|
+
const pre = options.prefetched;
|
|
212
|
+
const [globalConfig, nativeCurve] = await Promise.all([
|
|
213
|
+
pre?.globalConfig ?? fetchCurveGlobalConfig(connection, config),
|
|
214
|
+
pre?.bondingCurve
|
|
215
|
+
? null
|
|
216
|
+
: fetchNativeBondingCurve(connection, mint, config),
|
|
217
|
+
]);
|
|
218
|
+
const virtualSolReserves = calculateVirtualSolReserves(BigInt(globalConfig.initialVirtualReserveUsd.toString()), BigInt(options.solPriceUsd.toString()));
|
|
219
|
+
const bondingCurve = pre?.bondingCurve ?? {
|
|
220
|
+
virtualQuoteReserves: new BN(virtualSolReserves.toString()),
|
|
221
|
+
virtualTokenReserves: nativeCurve.virtualTokenReserves,
|
|
222
|
+
realTokenReserves: nativeCurve.realTokenReserves,
|
|
223
|
+
};
|
|
224
|
+
return { globalConfig, bondingCurve };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Resolves {@link CurvePreviewState} for stable (e.g. USDC) curves.
|
|
228
|
+
*
|
|
229
|
+
* Fetches the global config and stable bonding curve in parallel (skipping
|
|
230
|
+
* any that are prefetched). `virtualQuoteReserves` is read directly from
|
|
231
|
+
* the on-chain account.
|
|
232
|
+
*
|
|
233
|
+
* @param connection - Solana RPC connection
|
|
234
|
+
* @param mint - Token mint address of the stable bonding curve
|
|
235
|
+
* @param options - Stable curve options containing `quoteMint` and optional `prefetched` state
|
|
236
|
+
* @param config - Liquid protocol configuration
|
|
237
|
+
* @returns Resolved curve preview state ready for pure-math preview calculations
|
|
238
|
+
*/
|
|
239
|
+
async function resolveStableCurve(connection, mint, options, config) {
|
|
240
|
+
const pre = options.prefetched;
|
|
241
|
+
const [globalConfig, stableCurve] = await Promise.all([
|
|
242
|
+
pre?.globalConfig ?? fetchCurveGlobalConfig(connection, config),
|
|
243
|
+
pre?.bondingCurve
|
|
244
|
+
? null
|
|
245
|
+
: fetchStableBondingCurve(connection, mint, options.quoteMint, config),
|
|
246
|
+
]);
|
|
247
|
+
const bondingCurve = pre?.bondingCurve ?? {
|
|
248
|
+
virtualQuoteReserves: stableCurve.virtualQuoteReserves,
|
|
249
|
+
virtualTokenReserves: stableCurve.virtualTokenReserves,
|
|
250
|
+
realTokenReserves: stableCurve.realTokenReserves,
|
|
251
|
+
};
|
|
252
|
+
return { globalConfig, bondingCurve };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Dispatches to {@link resolveNativeCurve} or {@link resolveStableCurve}
|
|
256
|
+
* based on whether `options.quoteMint` is present.
|
|
257
|
+
*
|
|
258
|
+
* @param connection - Solana RPC connection
|
|
259
|
+
* @param mint - Token mint address
|
|
260
|
+
* @param config - Liquid protocol configuration
|
|
261
|
+
* @param options - Discriminated curve options (native or stable)
|
|
262
|
+
* @returns Resolved curve preview state ready for pure-math preview calculations
|
|
263
|
+
*/
|
|
264
|
+
function resolveCurveState(connection, mint, config, options) {
|
|
265
|
+
if (options.quoteMint) {
|
|
266
|
+
return resolveStableCurve(connection, mint, options, config);
|
|
267
|
+
}
|
|
268
|
+
return resolveNativeCurve(connection, mint, options, config);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Previews a buy on the bonding curve.
|
|
272
|
+
*
|
|
273
|
+
* Auto-fetches the global config and bonding curve state from chain, then
|
|
274
|
+
* computes expected tokens out, fee breakdown, price impact, and whether the
|
|
275
|
+
* buy would complete the curve.
|
|
276
|
+
*
|
|
277
|
+
* @param connection - Solana RPC connection
|
|
278
|
+
* @param mint - Token mint address
|
|
279
|
+
* @param amountInQuote - Quote token amount to spend (lamports for SOL, smallest unit for stables)
|
|
280
|
+
* @param config - Liquid protocol configuration
|
|
281
|
+
* @param options - Native ({@link NativeCurveOptions}) or stable ({@link StableCurveOptions})
|
|
282
|
+
* @returns Buy preview with `tokensOut`, `fees`, `priceImpactBps`, `newReserves`, and `willComplete`
|
|
283
|
+
*
|
|
284
|
+
* @example Native SOL curve
|
|
285
|
+
* ```ts
|
|
286
|
+
* const preview = await previewBuyOnCurve(connection, mint, new BN(100_000_000), config, {
|
|
287
|
+
* solPriceUsd: new BN(150_000_000), // $150
|
|
288
|
+
* });
|
|
289
|
+
* ```
|
|
290
|
+
*
|
|
291
|
+
* @example Stable (USDC) curve
|
|
292
|
+
* ```ts
|
|
293
|
+
* const preview = await previewBuyOnCurve(connection, mint, new BN(10_000_000), config, {
|
|
294
|
+
* quoteMint: USDC_MINT,
|
|
295
|
+
* });
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @see {@link calculateBuyCurvePreview} for pure offline calculations with pre-built state
|
|
299
|
+
*/
|
|
300
|
+
export async function previewBuyOnCurve(connection, mint, amountInQuote, config, options) {
|
|
301
|
+
const state = await resolveCurveState(connection, mint, config, options);
|
|
302
|
+
return calculateBuyCurvePreview(amountInQuote, state, {
|
|
303
|
+
hasCreatorRef: options?.hasCreatorRef,
|
|
304
|
+
hasTraderRef: options?.hasTraderRef,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Previews a sell on the bonding curve.
|
|
309
|
+
*
|
|
310
|
+
* Auto-fetches the global config and bonding curve state from chain, then
|
|
311
|
+
* computes expected quote out, fee breakdown, and price impact.
|
|
312
|
+
*
|
|
313
|
+
* @param connection - Solana RPC connection
|
|
314
|
+
* @param mint - Token mint address
|
|
315
|
+
* @param amountInTokens - Token amount to sell (smallest unit, 6 decimals)
|
|
316
|
+
* @param config - Liquid protocol configuration
|
|
317
|
+
* @param options - Native ({@link NativeCurveOptions}) or stable ({@link StableCurveOptions})
|
|
318
|
+
* @returns Sell preview with `quoteOut`, `quoteOutNet`, `fees`, `priceImpactBps`, and `newReserves`
|
|
319
|
+
*
|
|
320
|
+
* @example Native SOL curve
|
|
321
|
+
* ```ts
|
|
322
|
+
* const preview = await previewSellOnCurve(connection, mint, new BN(5_000_000), config, {
|
|
323
|
+
* solPriceUsd: new BN(150_000_000),
|
|
324
|
+
* });
|
|
325
|
+
* ```
|
|
326
|
+
*
|
|
327
|
+
* @see {@link calculateSellCurvePreview} for pure offline calculations with pre-built state
|
|
328
|
+
*/
|
|
329
|
+
export async function previewSellOnCurve(connection, mint, amountInTokens, config, options) {
|
|
330
|
+
const state = await resolveCurveState(connection, mint, config, options);
|
|
331
|
+
return calculateSellCurvePreview(amountInTokens, state, {
|
|
332
|
+
hasCreatorRef: options?.hasCreatorRef,
|
|
333
|
+
hasTraderRef: options?.hasTraderRef,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Previews a sell swap on the AMM (base -> quote).
|
|
338
|
+
*
|
|
339
|
+
* Accepts optional pre-fetched state to avoid redundant RPC calls.
|
|
340
|
+
* For tiered fee systems, you must provide either:
|
|
341
|
+
* - `prefetched.feeRates` - pre-computed fee rates for the current market cap
|
|
342
|
+
* - `solPriceUsd` parameter - to calculate fee rates from on-chain tiered config
|
|
343
|
+
*
|
|
344
|
+
* @param connection - Solana RPC connection
|
|
345
|
+
* @param baseMint - Base token mint address
|
|
346
|
+
* @param quoteMint - Quote token mint address
|
|
347
|
+
* @param amountIn - Base token amount to sell
|
|
348
|
+
* @param config - Liquid protocol configuration
|
|
349
|
+
* @param options - Optional pre-fetched AMM state and solPriceUsd for tier calculation
|
|
350
|
+
* @returns Swap preview with quote out, fees, and price impact
|
|
351
|
+
*
|
|
352
|
+
* @throws Error if neither feeRates nor solPriceUsd is provided for tiered fee systems
|
|
353
|
+
*/
|
|
354
|
+
export async function previewSwapSell(connection, baseMint, quoteMint, amountIn, config, options) {
|
|
355
|
+
const pre = options?.prefetched;
|
|
356
|
+
// Fetch pool state if not provided
|
|
357
|
+
const poolState = pre?.poolState ??
|
|
358
|
+
(await fetchPoolState(connection, baseMint, quoteMint, config));
|
|
359
|
+
// Get vault balances
|
|
360
|
+
let baseVaultBalance;
|
|
361
|
+
let quoteVaultBalance;
|
|
362
|
+
if (pre?.vaultBalances) {
|
|
363
|
+
({ baseVaultBalance, quoteVaultBalance } = pre.vaultBalances);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
const [baseVaultAccount, quoteVaultAccount] = await Promise.all([
|
|
367
|
+
getAccount(connection, poolState.baseVault, "confirmed", poolState.baseTokenProgram),
|
|
368
|
+
getAccount(connection, poolState.quoteVault, "confirmed", poolState.quoteTokenProgram),
|
|
369
|
+
]);
|
|
370
|
+
baseVaultBalance = new BN(baseVaultAccount.amount.toString());
|
|
371
|
+
quoteVaultBalance = new BN(quoteVaultAccount.amount.toString());
|
|
372
|
+
}
|
|
373
|
+
// Get fee rates
|
|
374
|
+
let feeRates;
|
|
375
|
+
if (pre?.feeRates) {
|
|
376
|
+
// Use pre-computed fee rates
|
|
377
|
+
feeRates = pre.feeRates;
|
|
378
|
+
}
|
|
379
|
+
else if (options?.solPriceUsd) {
|
|
380
|
+
// Calculate fee rates from tiered config
|
|
381
|
+
const ammConfig = await fetchAmmConfig(connection, config);
|
|
382
|
+
const baseMintAccount = await getMint(connection, poolState.baseMint, "confirmed", poolState.baseTokenProgram);
|
|
383
|
+
const baseTotalSupply = new BN(baseMintAccount.supply.toString());
|
|
384
|
+
const tiers = ammConfig.feeTiers;
|
|
385
|
+
const [lpFeeRate, protocolFeeRate, creatorFeeRate] = calculateFeesForPool(quoteVaultBalance, baseVaultBalance, baseTotalSupply, options.solPriceUsd, poolState.quoteMint, tiers);
|
|
386
|
+
feeRates = { lpFeeRate, protocolFeeRate, creatorFeeRate };
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
throw new Error("Either prefetched.feeRates or solPriceUsd must be provided for tiered fee calculations");
|
|
390
|
+
}
|
|
391
|
+
return calculateSwapSellPreview(amountIn, {
|
|
392
|
+
ammConfig: feeRates,
|
|
393
|
+
baseVaultBalance,
|
|
394
|
+
quoteVaultBalance,
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Previews a buy swap on the AMM (quote -> base).
|
|
399
|
+
*
|
|
400
|
+
* Accepts optional pre-fetched state to avoid redundant RPC calls.
|
|
401
|
+
* For tiered fee systems, you must provide either:
|
|
402
|
+
* - `prefetched.feeRates` - pre-computed fee rates for the current market cap
|
|
403
|
+
* - `solPriceUsd` parameter - to calculate fee rates from on-chain tiered config
|
|
404
|
+
*
|
|
405
|
+
* @param connection - Solana RPC connection
|
|
406
|
+
* @param baseMint - Base token mint address
|
|
407
|
+
* @param quoteMint - Quote token mint address
|
|
408
|
+
* @param amountOut - Desired base token amount out
|
|
409
|
+
* @param config - Liquid protocol configuration
|
|
410
|
+
* @param options - Optional pre-fetched AMM state and solPriceUsd for tier calculation
|
|
411
|
+
* @returns Swap preview with quote in, fees, and price impact
|
|
412
|
+
*
|
|
413
|
+
* @throws Error if neither feeRates nor solPriceUsd is provided for tiered fee systems
|
|
414
|
+
*/
|
|
415
|
+
export async function previewSwapBuy(connection, baseMint, quoteMint, amountOut, config, options) {
|
|
416
|
+
const pre = options?.prefetched;
|
|
417
|
+
// Fetch pool state if not provided
|
|
418
|
+
const poolState = pre?.poolState ??
|
|
419
|
+
(await fetchPoolState(connection, baseMint, quoteMint, config));
|
|
420
|
+
// Get vault balances
|
|
421
|
+
let baseVaultBalance;
|
|
422
|
+
let quoteVaultBalance;
|
|
423
|
+
if (pre?.vaultBalances) {
|
|
424
|
+
({ baseVaultBalance, quoteVaultBalance } = pre.vaultBalances);
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
const [baseVaultAccount, quoteVaultAccount] = await Promise.all([
|
|
428
|
+
getAccount(connection, poolState.baseVault, "confirmed", poolState.baseTokenProgram),
|
|
429
|
+
getAccount(connection, poolState.quoteVault, "confirmed", poolState.quoteTokenProgram),
|
|
430
|
+
]);
|
|
431
|
+
baseVaultBalance = new BN(baseVaultAccount.amount.toString());
|
|
432
|
+
quoteVaultBalance = new BN(quoteVaultAccount.amount.toString());
|
|
433
|
+
}
|
|
434
|
+
// Get fee rates
|
|
435
|
+
let feeRates;
|
|
436
|
+
if (pre?.feeRates) {
|
|
437
|
+
// Use pre-computed fee rates
|
|
438
|
+
feeRates = pre.feeRates;
|
|
439
|
+
}
|
|
440
|
+
else if (options?.solPriceUsd) {
|
|
441
|
+
// Calculate fee rates from tiered config
|
|
442
|
+
const ammConfig = await fetchAmmConfig(connection, config);
|
|
443
|
+
const baseMintAccount = await getMint(connection, poolState.baseMint, "confirmed", poolState.baseTokenProgram);
|
|
444
|
+
const baseTotalSupply = new BN(baseMintAccount.supply.toString());
|
|
445
|
+
const tiers = ammConfig.feeTiers;
|
|
446
|
+
const [lpFeeRate, protocolFeeRate, creatorFeeRate] = calculateFeesForPool(quoteVaultBalance, baseVaultBalance, baseTotalSupply, options.solPriceUsd, poolState.quoteMint, tiers);
|
|
447
|
+
feeRates = { lpFeeRate, protocolFeeRate, creatorFeeRate };
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
throw new Error("Either prefetched.feeRates or solPriceUsd must be provided for tiered fee calculations");
|
|
451
|
+
}
|
|
452
|
+
return calculateSwapBuyPreview(amountOut, {
|
|
453
|
+
ammConfig: feeRates,
|
|
454
|
+
baseVaultBalance,
|
|
455
|
+
quoteVaultBalance,
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/helpers/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Connection, PublicKey } from "@solana/web3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the token program for a given mint by inspecting the account owner.
|
|
4
|
+
* Bonding curve tokens use Token-2022, WSOL and quote mints use standard SPL Token.
|
|
5
|
+
*
|
|
6
|
+
* @param connection - Solana connection
|
|
7
|
+
* @param mint - Mint address to check
|
|
8
|
+
* @returns The token program ID (TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID)
|
|
9
|
+
*/
|
|
10
|
+
export declare const resolveTokenProgram: (connection: Connection, mint: PublicKey) => Promise<PublicKey>;
|
|
11
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/helpers/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC/B,YAAY,UAAU,EACtB,MAAM,SAAS,KACb,OAAO,CAAC,SAAS,CASnB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID } from "@solana/spl-token";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the token program for a given mint by inspecting the account owner.
|
|
4
|
+
* Bonding curve tokens use Token-2022, WSOL and quote mints use standard SPL Token.
|
|
5
|
+
*
|
|
6
|
+
* @param connection - Solana connection
|
|
7
|
+
* @param mint - Mint address to check
|
|
8
|
+
* @returns The token program ID (TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID)
|
|
9
|
+
*/
|
|
10
|
+
export const resolveTokenProgram = async (connection, mint) => {
|
|
11
|
+
const account = await connection.getAccountInfo(mint);
|
|
12
|
+
if (!account) {
|
|
13
|
+
throw new Error(`Mint account ${mint.toBase58()} not found`);
|
|
14
|
+
}
|
|
15
|
+
if (account.owner.equals(TOKEN_2022_PROGRAM_ID)) {
|
|
16
|
+
return TOKEN_2022_PROGRAM_ID;
|
|
17
|
+
}
|
|
18
|
+
return TOKEN_PROGRAM_ID;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/helpers/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACvC,UAAsB,EACtB,IAAe,EACM,EAAE;IACvB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjD,OAAO,qBAAqB,CAAC;IAC9B,CAAC;IACD,OAAO,gBAAgB,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { Connection } from "@solana/web3.js";
|
|
3
|
+
import type { LiquidConfig } from "../config.js";
|
|
4
|
+
import liquidIdl from "./liquid.json";
|
|
5
|
+
import liquidSwapIdl from "./liquid_swap.json";
|
|
6
|
+
import liquidFeesIdl from "./liquid_fees.json";
|
|
7
|
+
import liquidStateIdl from "./liquid_state.json";
|
|
8
|
+
export { liquidIdl, liquidSwapIdl, liquidFeesIdl, liquidStateIdl };
|
|
9
|
+
export type { Liquid } from "./liquid.js";
|
|
10
|
+
export type { LiquidSwap } from "./liquid_swap.js";
|
|
11
|
+
export type { LiquidFees } from "./liquid_fees.js";
|
|
12
|
+
export type { LiquidState } from "./liquid_state.js";
|
|
13
|
+
import type { Liquid } from "./liquid.js";
|
|
14
|
+
import type { LiquidSwap } from "./liquid_swap.js";
|
|
15
|
+
import type { LiquidFees } from "./liquid_fees.js";
|
|
16
|
+
import type { LiquidState } from "./liquid_state.js";
|
|
17
|
+
/**
|
|
18
|
+
* Creates a typed Program instance for the Liquid bonding curve program.
|
|
19
|
+
* Uses a readonly provider — no signing capability.
|
|
20
|
+
*
|
|
21
|
+
* @param connection - Solana RPC connection
|
|
22
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
23
|
+
* @returns Read-only Program instance typed as Liquid
|
|
24
|
+
*/
|
|
25
|
+
export declare function getLiquidProgram(connection: Connection, config?: LiquidConfig): Program<Liquid>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a typed Program instance for the Liquid Swap AMM program.
|
|
28
|
+
* Uses a readonly provider — no signing capability.
|
|
29
|
+
*
|
|
30
|
+
* @param connection - Solana RPC connection
|
|
31
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
32
|
+
* @returns Read-only Program instance typed as LiquidSwap
|
|
33
|
+
*/
|
|
34
|
+
export declare function getLiquidSwapProgram(connection: Connection, config?: LiquidConfig): Program<LiquidSwap>;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a typed Program instance for the Liquid Fees program.
|
|
37
|
+
* Uses a readonly provider — no signing capability.
|
|
38
|
+
*
|
|
39
|
+
* @param connection - Solana RPC connection
|
|
40
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
41
|
+
* @returns Read-only Program instance typed as LiquidFees
|
|
42
|
+
*/
|
|
43
|
+
export declare function getLiquidFeesProgram(connection: Connection, config?: LiquidConfig): Program<LiquidFees>;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a typed Program instance for the Liquid State program.
|
|
46
|
+
* Uses a readonly provider — no signing capability.
|
|
47
|
+
*
|
|
48
|
+
* @param connection - Solana RPC connection
|
|
49
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
50
|
+
* @returns Read-only Program instance typed as LiquidState
|
|
51
|
+
*/
|
|
52
|
+
export declare function getLiquidStateProgram(connection: Connection, config?: LiquidConfig): Program<LiquidState>;
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/idl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,SAAS,MAAM,eAAe,CAAuB;AAC5D,OAAO,aAAa,MAAM,oBAAoB,CAAuB;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAuB;AACrE,OAAO,cAAc,MAAM,qBAAqB,CAAuB;AAEvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAGnE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,WAAW,CAAC,CAKtB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { createReadonlyProvider } from "../provider.js";
|
|
3
|
+
import liquidIdl from "./liquid.json" with { type: "json" };
|
|
4
|
+
import liquidSwapIdl from "./liquid_swap.json" with { type: "json" };
|
|
5
|
+
import liquidFeesIdl from "./liquid_fees.json" with { type: "json" };
|
|
6
|
+
import liquidStateIdl from "./liquid_state.json" with { type: "json" };
|
|
7
|
+
export { liquidIdl, liquidSwapIdl, liquidFeesIdl, liquidStateIdl };
|
|
8
|
+
/**
|
|
9
|
+
* Creates a typed Program instance for the Liquid bonding curve program.
|
|
10
|
+
* Uses a readonly provider — no signing capability.
|
|
11
|
+
*
|
|
12
|
+
* @param connection - Solana RPC connection
|
|
13
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
14
|
+
* @returns Read-only Program instance typed as Liquid
|
|
15
|
+
*/
|
|
16
|
+
export function getLiquidProgram(connection, config) {
|
|
17
|
+
const idl = config
|
|
18
|
+
? { ...liquidIdl, address: config.liquidProgramId.toBase58() }
|
|
19
|
+
: liquidIdl;
|
|
20
|
+
return new Program(idl, createReadonlyProvider(connection));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Creates a typed Program instance for the Liquid Swap AMM program.
|
|
24
|
+
* Uses a readonly provider — no signing capability.
|
|
25
|
+
*
|
|
26
|
+
* @param connection - Solana RPC connection
|
|
27
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
28
|
+
* @returns Read-only Program instance typed as LiquidSwap
|
|
29
|
+
*/
|
|
30
|
+
export function getLiquidSwapProgram(connection, config) {
|
|
31
|
+
const idl = config
|
|
32
|
+
? { ...liquidSwapIdl, address: config.liquidSwapProgramId.toBase58() }
|
|
33
|
+
: liquidSwapIdl;
|
|
34
|
+
return new Program(idl, createReadonlyProvider(connection));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a typed Program instance for the Liquid Fees program.
|
|
38
|
+
* Uses a readonly provider — no signing capability.
|
|
39
|
+
*
|
|
40
|
+
* @param connection - Solana RPC connection
|
|
41
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
42
|
+
* @returns Read-only Program instance typed as LiquidFees
|
|
43
|
+
*/
|
|
44
|
+
export function getLiquidFeesProgram(connection, config) {
|
|
45
|
+
const idl = config
|
|
46
|
+
? { ...liquidFeesIdl, address: config.liquidFeesProgramId.toBase58() }
|
|
47
|
+
: liquidFeesIdl;
|
|
48
|
+
return new Program(idl, createReadonlyProvider(connection));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a typed Program instance for the Liquid State program.
|
|
52
|
+
* Uses a readonly provider — no signing capability.
|
|
53
|
+
*
|
|
54
|
+
* @param connection - Solana RPC connection
|
|
55
|
+
* @param config - Optional protocol configuration (overrides IDL address)
|
|
56
|
+
* @returns Read-only Program instance typed as LiquidState
|
|
57
|
+
*/
|
|
58
|
+
export function getLiquidStateProgram(connection, config) {
|
|
59
|
+
const idl = config
|
|
60
|
+
? { ...liquidStateIdl, address: config.liquidStateProgramId.toBase58() }
|
|
61
|
+
: liquidStateIdl;
|
|
62
|
+
return new Program(idl, createReadonlyProvider(connection));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/idl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,SAAS,MAAM,eAAe,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,OAAO,aAAa,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,aAAa,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,cAAc,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAanE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC/B,UAAsB,EACtB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM;QACjB,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE;QAC9D,CAAC,CAAC,SAAS,CAAC;IACb,OAAO,IAAI,OAAO,CAAC,GAAa,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CACnC,UAAsB,EACtB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM;QACjB,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE;QACtE,CAAC,CAAC,aAAa,CAAC;IACjB,OAAO,IAAI,OAAO,CAAC,GAAiB,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CACnC,UAAsB,EACtB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM;QACjB,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE;QACtE,CAAC,CAAC,aAAa,CAAC;IACjB,OAAO,IAAI,OAAO,CAAC,GAAiB,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACpC,UAAsB,EACtB,MAAqB;IAErB,MAAM,GAAG,GAAG,MAAM;QACjB,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE;QACxE,CAAC,CAAC,cAAc,CAAC;IAClB,OAAO,IAAI,OAAO,CAAC,GAAkB,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|