@coinbarrel/sdk 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -58
- package/dist/accounts.d.ts +1 -0
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +12 -5
- package/dist/accounts.js.map +1 -1
- package/dist/curve.d.ts +5 -1
- package/dist/curve.d.ts.map +1 -1
- package/dist/curve.js +56 -28
- package/dist/curve.js.map +1 -1
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +16 -10
- package/dist/pool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,8 +17,8 @@ import { CoinBarrel, solToLamports } from '@coinbarrel/sdk';
|
|
|
17
17
|
// Initialize SDK
|
|
18
18
|
const connection = new Connection('https://api.mainnet-beta.solana.com');
|
|
19
19
|
const sdk = new CoinBarrel({
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
connection,
|
|
21
|
+
network: 'mainnet', // or 'devnet'
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
// Token to trade
|
|
@@ -31,13 +31,13 @@ const tokenMint = new PublicKey('YOUR_TOKEN_MINT');
|
|
|
31
31
|
|
|
32
32
|
```typescript
|
|
33
33
|
const quote = await sdk.curve.getBuyQuote(
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
tokenMint,
|
|
35
|
+
solToLamports(0.1) // 0.1 SOL
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
if (quote) {
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
console.log(`Tokens out: ${quote.tokensOut}`);
|
|
40
|
+
console.log(`Price impact: ${quote.priceImpactBps / 100}%`);
|
|
41
41
|
}
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -47,9 +47,9 @@ if (quote) {
|
|
|
47
47
|
import { Transaction, sendAndConfirmTransaction } from '@solana/web3.js';
|
|
48
48
|
|
|
49
49
|
const instructions = await sdk.curve.buildBuyInstruction({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
tokenMint,
|
|
51
|
+
buyer: wallet.publicKey,
|
|
52
|
+
lamportsIn: solToLamports(0.1),
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
const tx = new Transaction().add(...instructions);
|
|
@@ -60,15 +60,15 @@ const signature = await sendAndConfirmTransaction(connection, tx, [wallet]);
|
|
|
60
60
|
|
|
61
61
|
```typescript
|
|
62
62
|
const instructions = await sdk.curve.buildSellInstruction({
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
tokenMint,
|
|
64
|
+
seller: wallet.publicKey,
|
|
65
|
+
tokenAmount: BigInt(1_000_000), // 1 token (6 decimals)
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
// Or sell entire balance
|
|
69
69
|
const sellMaxIx = await sdk.curve.buildSellMaxInstruction({
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
tokenMint,
|
|
71
|
+
seller: wallet.publicKey,
|
|
72
72
|
});
|
|
73
73
|
```
|
|
74
74
|
|
|
@@ -78,13 +78,13 @@ const sellMaxIx = await sdk.curve.buildSellMaxInstruction({
|
|
|
78
78
|
|
|
79
79
|
```typescript
|
|
80
80
|
const quote = await sdk.pool.getSwapSolToTokenQuote(
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
tokenMint,
|
|
82
|
+
solToLamports(1.0) // 1 SOL
|
|
83
83
|
);
|
|
84
84
|
|
|
85
85
|
if (quote) {
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
console.log(`Tokens out: ${quote.amountOut}`);
|
|
87
|
+
console.log(`Fee: ${quote.fee} lamports`);
|
|
88
88
|
}
|
|
89
89
|
```
|
|
90
90
|
|
|
@@ -92,10 +92,10 @@ if (quote) {
|
|
|
92
92
|
|
|
93
93
|
```typescript
|
|
94
94
|
const instructions = await sdk.pool.buildSwapSolToTokenInstruction({
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
tokenMint,
|
|
96
|
+
user: wallet.publicKey,
|
|
97
|
+
lamportsIn: solToLamports(1.0),
|
|
98
|
+
minimumAmountOut: BigInt(900_000), // Slippage protection
|
|
99
99
|
});
|
|
100
100
|
```
|
|
101
101
|
|
|
@@ -103,16 +103,16 @@ const instructions = await sdk.pool.buildSwapSolToTokenInstruction({
|
|
|
103
103
|
|
|
104
104
|
```typescript
|
|
105
105
|
const instructions = await sdk.pool.buildSwapTokenToSolInstruction({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
tokenMint,
|
|
107
|
+
user: wallet.publicKey,
|
|
108
|
+
amountIn: BigInt(1_000_000),
|
|
109
|
+
minimumLamportsOut: solToLamports(0.09),
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
// Or sell entire balance
|
|
113
113
|
const sellMaxIx = await sdk.pool.buildSwapTokenToSolMaxInstruction({
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
tokenMint,
|
|
115
|
+
user: wallet.publicKey,
|
|
116
116
|
});
|
|
117
117
|
```
|
|
118
118
|
|
|
@@ -124,10 +124,10 @@ const sellMaxIx = await sdk.pool.buildSwapTokenToSolMaxInstruction({
|
|
|
124
124
|
const info = await sdk.getMarketInfo(tokenMint);
|
|
125
125
|
|
|
126
126
|
if (info) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
console.log(`Phase: ${info.phase}`); // 'curve' or 'pool'
|
|
128
|
+
console.log(`Price: ${info.price} lamports/token`);
|
|
129
|
+
console.log(`Market Cap: ${info.marketCapSol} lamports`);
|
|
130
|
+
console.log(`Fee: ${info.feeBps / 100}%`);
|
|
131
131
|
}
|
|
132
132
|
```
|
|
133
133
|
|
|
@@ -135,9 +135,9 @@ if (info) {
|
|
|
135
135
|
|
|
136
136
|
```typescript
|
|
137
137
|
if (await sdk.isOnCurve(tokenMint)) {
|
|
138
|
-
|
|
138
|
+
// Use curve methods
|
|
139
139
|
} else if (await sdk.isOnPool(tokenMint)) {
|
|
140
|
-
|
|
140
|
+
// Use pool methods
|
|
141
141
|
}
|
|
142
142
|
```
|
|
143
143
|
|
|
@@ -148,33 +148,28 @@ The SDK supports both devnet and mainnet:
|
|
|
148
148
|
```typescript
|
|
149
149
|
// Devnet
|
|
150
150
|
const devnetSdk = new CoinBarrel({
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
connection: new Connection('https://api.devnet.solana.com'),
|
|
152
|
+
network: 'devnet',
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
// Mainnet
|
|
156
156
|
const mainnetSdk = new CoinBarrel({
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
connection: new Connection('https://api.mainnet-beta.solana.com'),
|
|
158
|
+
network: 'mainnet',
|
|
159
159
|
});
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
## Utility Functions
|
|
163
163
|
|
|
164
164
|
```typescript
|
|
165
|
-
import {
|
|
166
|
-
solToLamports,
|
|
167
|
-
lamportsToSol,
|
|
168
|
-
toRawAmount,
|
|
169
|
-
toUiAmount
|
|
170
|
-
} from '@coinbarrel/sdk';
|
|
165
|
+
import { solToLamports, lamportsToSol, toRawAmount, toUiAmount } from '@coinbarrel/sdk';
|
|
171
166
|
|
|
172
167
|
// SOL conversions
|
|
173
|
-
const lamports = solToLamports(1.5);
|
|
168
|
+
const lamports = solToLamports(1.5); // 1_500_000_000n
|
|
174
169
|
const sol = lamportsToSol(1_500_000_000n); // 1.5
|
|
175
170
|
|
|
176
171
|
// Token amount conversions (default 6 decimals)
|
|
177
|
-
const raw = toRawAmount(100);
|
|
172
|
+
const raw = toRawAmount(100); // 100_000_000n
|
|
178
173
|
const ui = toUiAmount(100_000_000n); // 100
|
|
179
174
|
```
|
|
180
175
|
|
|
@@ -192,11 +187,17 @@ const holderReward = sdk.getHolderRewardPda(tokenMint, wallet.publicKey);
|
|
|
192
187
|
CoinBarrel fees are enforced at the program level and cannot be bypassed:
|
|
193
188
|
|
|
194
189
|
- **1% total fee** on all trades
|
|
195
|
-
- **
|
|
196
|
-
- **
|
|
197
|
-
- **
|
|
190
|
+
- **50%** goes to CoinBarrel (protocol) - fixed
|
|
191
|
+
- **25-40%** goes to holder rewards pool (of total fee, configured by token launcher via `trader_rewards_share_bps`)
|
|
192
|
+
- **10-25%** goes to token creator (remainder: 50% - holder%)
|
|
193
|
+
|
|
194
|
+
Example: If `trader_rewards_share_bps = 3000` (30%):
|
|
198
195
|
|
|
199
|
-
|
|
196
|
+
- Platform: 50% of fee
|
|
197
|
+
- Holders: 30% of fee
|
|
198
|
+
- Creator: 20% of fee
|
|
199
|
+
|
|
200
|
+
The split is set when the token is launched (`trader_rewards_share_bps` must be 2500-4000). The SDK reads fee recipients from on-chain state. Integrators cannot modify or bypass fees.
|
|
200
201
|
|
|
201
202
|
## TypeScript
|
|
202
203
|
|
|
@@ -204,17 +205,16 @@ The SDK is fully typed:
|
|
|
204
205
|
|
|
205
206
|
```typescript
|
|
206
207
|
import type {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
208
|
+
BondingCurveState,
|
|
209
|
+
PoolState,
|
|
210
|
+
MarketInfo,
|
|
211
|
+
BuyQuote,
|
|
212
|
+
SellQuote,
|
|
213
|
+
SwapQuote,
|
|
214
|
+
Network,
|
|
214
215
|
} from '@coinbarrel/sdk';
|
|
215
216
|
```
|
|
216
217
|
|
|
217
218
|
## License
|
|
218
219
|
|
|
219
220
|
MIT
|
|
220
|
-
|
package/dist/accounts.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare function getCurveSolBalance(connection: Connection, tokenMint: Pu
|
|
|
18
18
|
export declare function getPoolState(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<PoolState | null>;
|
|
19
19
|
/**
|
|
20
20
|
* Get pool vault balances
|
|
21
|
+
* Uses vault addresses stored in Pool state rather than deriving PDAs
|
|
21
22
|
*/
|
|
22
23
|
export declare function getPoolBalances(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<{
|
|
23
24
|
solBalance: bigint;
|
package/dist/accounts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4B3E;;GAEG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BnC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAID;;GAEG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA0B3B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAyB9D;AAID;;;GAGG;AACH,wBAAsB,aAAa,CAClC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgE5B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
package/dist/accounts.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { PublicKey } from '@solana/web3.js';
|
|
6
6
|
import { getAssociatedTokenAddressSync, getAccount } from '@solana/spl-token';
|
|
7
|
-
import { BONDING_CURVE_OFFSETS, POOL_OFFSETS, LAMPORTS_PER_SOL } from './constants.js';
|
|
8
|
-
import { getBondingCurvePda, getPoolPda, getSolEscrowPda,
|
|
7
|
+
import { BONDING_CURVE_OFFSETS, POOL_OFFSETS, NATIVE_MINT, LAMPORTS_PER_SOL } from './constants.js';
|
|
8
|
+
import { getBondingCurvePda, getPoolPda, getSolEscrowPda, } from './pda.js';
|
|
9
9
|
// ============= Buffer Helpers =============
|
|
10
10
|
function readU16LE(data, offset) {
|
|
11
11
|
return data.readUInt16LE(offset);
|
|
@@ -93,11 +93,18 @@ export async function getPoolState(connection, tokenMint, programId) {
|
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* Get pool vault balances
|
|
96
|
+
* Uses vault addresses stored in Pool state rather than deriving PDAs
|
|
96
97
|
*/
|
|
97
98
|
export async function getPoolBalances(connection, tokenMint, programId) {
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
99
|
+
// First fetch pool state to get stored vault addresses
|
|
100
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
101
|
+
if (!state) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
// Determine which vault is WSOL and which is the token based on stored mints
|
|
105
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
106
|
+
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
107
|
+
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
101
108
|
try {
|
|
102
109
|
const [wsolAccount, tokenAccount] = await Promise.all([
|
|
103
110
|
getAccount(connection, wsolVault),
|
package/dist/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/curve.d.ts
CHANGED
|
@@ -6,11 +6,13 @@ import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
|
6
6
|
import type { BuyOnCurveParams, SellOnCurveParams, SellMaxOnCurveParams, BuyQuote, SellQuote } from './types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Calculate buy quote for bonding curve
|
|
9
|
-
* Uses constant product formula
|
|
9
|
+
* Uses amplified constant product formula matching the program:
|
|
10
|
+
* k = vSol_eff * vToken_eff where _eff = base * amp_bps / 10000
|
|
10
11
|
*/
|
|
11
12
|
export declare function getBuyQuote(connection: Connection, tokenMint: PublicKey, solIn: bigint, programId: PublicKey): Promise<BuyQuote | null>;
|
|
12
13
|
/**
|
|
13
14
|
* Calculate sell quote for bonding curve
|
|
15
|
+
* Uses amplified constant product formula matching the program
|
|
14
16
|
*/
|
|
15
17
|
export declare function getSellQuote(connection: Connection, tokenMint: PublicKey, tokensIn: bigint, programId: PublicKey): Promise<SellQuote | null>;
|
|
16
18
|
/**
|
|
@@ -24,10 +26,12 @@ export declare function buildBuyOnCurveInstruction(connection: Connection, param
|
|
|
24
26
|
* Build sell_on_curve instruction
|
|
25
27
|
*
|
|
26
28
|
* IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
|
|
29
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
27
30
|
*/
|
|
28
31
|
export declare function buildSellOnCurveInstruction(connection: Connection, params: SellOnCurveParams, programId: PublicKey): Promise<TransactionInstruction[]>;
|
|
29
32
|
/**
|
|
30
33
|
* Build sell_max_on_curve instruction (sell entire balance)
|
|
34
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
31
35
|
*/
|
|
32
36
|
export declare function buildSellMaxOnCurveInstruction(connection: Connection, params: SellMaxOnCurveParams, programId: PublicKey): Promise<TransactionInstruction[]>;
|
|
33
37
|
//# sourceMappingURL=curve.d.ts.map
|
package/dist/curve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAe/F,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,MAAM,YAAY,CAAC;AAYpB
|
|
1
|
+
{"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAe/F,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,MAAM,YAAY,CAAC;AAYpB;;;;GAIG;AACH,wBAAsB,WAAW,CAChC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAiD1B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+C3B;AAID;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAmDnC;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAwCnC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CACnD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAwCnC"}
|
package/dist/curve.js
CHANGED
|
@@ -16,7 +16,8 @@ function writeU64LE(n) {
|
|
|
16
16
|
// ============= Quote Calculations =============
|
|
17
17
|
/**
|
|
18
18
|
* Calculate buy quote for bonding curve
|
|
19
|
-
* Uses constant product formula
|
|
19
|
+
* Uses amplified constant product formula matching the program:
|
|
20
|
+
* k = vSol_eff * vToken_eff where _eff = base * amp_bps / 10000
|
|
20
21
|
*/
|
|
21
22
|
export async function getBuyQuote(connection, tokenMint, solIn, programId) {
|
|
22
23
|
const state = await getBondingCurveState(connection, tokenMint, programId);
|
|
@@ -24,19 +25,29 @@ export async function getBuyQuote(connection, tokenMint, solIn, programId) {
|
|
|
24
25
|
return null;
|
|
25
26
|
const feeBps = BigInt(state.feeBps);
|
|
26
27
|
const totalFee = (solIn * feeBps) / 10000n;
|
|
27
|
-
// Fee
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
const
|
|
28
|
+
// Fee split matches program: Platform 50%, Holders 25-40%, Creator 10-25% (of TOTAL fee)
|
|
29
|
+
// trader_rewards_share_bps represents holder % of TOTAL fee (2500 = 25%, 4000 = 40%)
|
|
30
|
+
const adminFee = totalFee / 2n; // 50% to platform
|
|
31
|
+
const holderShareBps = BigInt(state.traderRewardsShareBps);
|
|
32
|
+
const holderRewards = (totalFee * holderShareBps) / 10000n; // holder % of TOTAL
|
|
33
|
+
const creatorFee = totalFee - adminFee - holderRewards; // remainder to creator
|
|
34
|
+
const netCost = solIn - totalFee;
|
|
35
|
+
// Amplified constant product formula (matches program)
|
|
36
|
+
const ampBps = BigInt(state.ampBps);
|
|
37
|
+
const vTokenEff = (state.vToken * ampBps) / 10000n;
|
|
38
|
+
const vSolEff = (state.vSol * ampBps) / 10000n;
|
|
39
|
+
const k = vTokenEff * vSolEff;
|
|
40
|
+
const denominator = vSolEff + netCost;
|
|
41
|
+
const kDiv = k / denominator;
|
|
42
|
+
const deltaTokensEff = vTokenEff - kDiv;
|
|
43
|
+
// Convert effective tokens back to base units
|
|
44
|
+
const tokensOut = (deltaTokensEff * 10000n) / ampBps;
|
|
45
|
+
// Calculate new effective reserves for price impact
|
|
46
|
+
const newVSolEff = vSolEff + netCost;
|
|
47
|
+
const newVTokenEff = kDiv;
|
|
37
48
|
// Price impact
|
|
38
|
-
const priceBeforeLamports =
|
|
39
|
-
const priceAfterLamports =
|
|
49
|
+
const priceBeforeLamports = vTokenEff > 0n ? (vSolEff * LAMPORTS_PER_SOL) / vTokenEff : 0n;
|
|
50
|
+
const priceAfterLamports = newVTokenEff > 0n ? (newVSolEff * LAMPORTS_PER_SOL) / newVTokenEff : 0n;
|
|
40
51
|
const priceImpactBps = priceBeforeLamports > 0n
|
|
41
52
|
? Number(((priceAfterLamports - priceBeforeLamports) * 10000n) / priceBeforeLamports)
|
|
42
53
|
: 0;
|
|
@@ -52,36 +63,45 @@ export async function getBuyQuote(connection, tokenMint, solIn, programId) {
|
|
|
52
63
|
}
|
|
53
64
|
/**
|
|
54
65
|
* Calculate sell quote for bonding curve
|
|
66
|
+
* Uses amplified constant product formula matching the program
|
|
55
67
|
*/
|
|
56
68
|
export async function getSellQuote(connection, tokenMint, tokensIn, programId) {
|
|
57
69
|
const state = await getBondingCurveState(connection, tokenMint, programId);
|
|
58
70
|
if (!state || state.paused)
|
|
59
71
|
return null;
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
72
|
+
// Amplified constant product formula (matches program)
|
|
73
|
+
// SOL out (gross) = vSOL_eff - k/(vTOKEN_eff + delta_eff)
|
|
74
|
+
const ampBps = BigInt(state.ampBps);
|
|
75
|
+
const vTokenEff = (state.vToken * ampBps) / 10000n;
|
|
76
|
+
const vSolEff = (state.vSol * ampBps) / 10000n;
|
|
77
|
+
const k = vTokenEff * vSolEff;
|
|
78
|
+
const denominator = vTokenEff + tokensIn; // tokensIn is the delta
|
|
79
|
+
const kDiv = k / denominator;
|
|
80
|
+
const solOutGrossEff = vSolEff - kDiv;
|
|
65
81
|
const feeBps = BigInt(state.feeBps);
|
|
66
|
-
const totalFee = (
|
|
67
|
-
// Fee
|
|
68
|
-
const adminFee =
|
|
69
|
-
const
|
|
70
|
-
const holderRewards = totalFee
|
|
71
|
-
const
|
|
82
|
+
const totalFee = (solOutGrossEff * feeBps) / 10000n;
|
|
83
|
+
// Fee split matches program: Platform 50%, Holders 25-40%, Creator 10-25% (of TOTAL fee)
|
|
84
|
+
const adminFee = totalFee / 2n; // 50% to platform
|
|
85
|
+
const holderShareBps = BigInt(state.traderRewardsShareBps);
|
|
86
|
+
const holderRewards = (totalFee * holderShareBps) / 10000n; // holder % of TOTAL
|
|
87
|
+
const creatorFee = totalFee - adminFee - holderRewards; // remainder to creator
|
|
88
|
+
const solOutNetEff = solOutGrossEff - totalFee;
|
|
89
|
+
// Calculate new effective reserves for price impact
|
|
90
|
+
const newVTokenEff = denominator;
|
|
91
|
+
const newVSolEff = kDiv;
|
|
72
92
|
// Price impact
|
|
73
|
-
const priceBeforeLamports =
|
|
74
|
-
const priceAfterLamports =
|
|
93
|
+
const priceBeforeLamports = vTokenEff > 0n ? (vSolEff * LAMPORTS_PER_SOL) / vTokenEff : 0n;
|
|
94
|
+
const priceAfterLamports = newVTokenEff > 0n ? (newVSolEff * LAMPORTS_PER_SOL) / newVTokenEff : 0n;
|
|
75
95
|
const priceImpactBps = priceBeforeLamports > 0n
|
|
76
96
|
? Number(((priceBeforeLamports - priceAfterLamports) * 10000n) / priceBeforeLamports)
|
|
77
97
|
: 0;
|
|
78
98
|
return {
|
|
79
99
|
tokensIn,
|
|
80
|
-
solOut,
|
|
100
|
+
solOut: solOutNetEff,
|
|
81
101
|
adminFee,
|
|
82
102
|
creatorFee,
|
|
83
103
|
holderRewards,
|
|
84
|
-
pricePerToken: tokensIn > 0n ? (
|
|
104
|
+
pricePerToken: tokensIn > 0n ? (solOutNetEff * TOKEN_DECIMALS_MULTIPLIER) / tokensIn : 0n,
|
|
85
105
|
priceImpactBps,
|
|
86
106
|
};
|
|
87
107
|
}
|
|
@@ -143,6 +163,7 @@ export async function buildBuyOnCurveInstruction(connection, params, programId)
|
|
|
143
163
|
* Build sell_on_curve instruction
|
|
144
164
|
*
|
|
145
165
|
* IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
|
|
166
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
146
167
|
*/
|
|
147
168
|
export async function buildSellOnCurveInstruction(connection, params, programId) {
|
|
148
169
|
const { tokenMint, seller, tokenAmount } = params;
|
|
@@ -158,6 +179,7 @@ export async function buildSellOnCurveInstruction(connection, params, programId)
|
|
|
158
179
|
const bondingAuthority = getBondingAuthorityPda(bondingCurve, programId);
|
|
159
180
|
const solEscrow = getSolEscrowPda(bondingCurve, programId);
|
|
160
181
|
const sellerAta = getAssociatedTokenAddressSync(tokenMint, seller);
|
|
182
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, seller, programId);
|
|
161
183
|
const sellIx = new TransactionInstruction({
|
|
162
184
|
programId,
|
|
163
185
|
keys: [
|
|
@@ -173,6 +195,8 @@ export async function buildSellOnCurveInstruction(connection, params, programId)
|
|
|
173
195
|
{ pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
|
|
174
196
|
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
175
197
|
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
198
|
+
// Holder reward account in remaining_accounts for auto-payout
|
|
199
|
+
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
176
200
|
],
|
|
177
201
|
data: Buffer.concat([DISCRIMINATORS.sell_on_curve, writeU64LE(tokenAmount)]),
|
|
178
202
|
});
|
|
@@ -180,6 +204,7 @@ export async function buildSellOnCurveInstruction(connection, params, programId)
|
|
|
180
204
|
}
|
|
181
205
|
/**
|
|
182
206
|
* Build sell_max_on_curve instruction (sell entire balance)
|
|
207
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
183
208
|
*/
|
|
184
209
|
export async function buildSellMaxOnCurveInstruction(connection, params, programId) {
|
|
185
210
|
const { tokenMint, seller } = params;
|
|
@@ -195,6 +220,7 @@ export async function buildSellMaxOnCurveInstruction(connection, params, program
|
|
|
195
220
|
const bondingAuthority = getBondingAuthorityPda(bondingCurve, programId);
|
|
196
221
|
const solEscrow = getSolEscrowPda(bondingCurve, programId);
|
|
197
222
|
const sellerAta = getAssociatedTokenAddressSync(tokenMint, seller);
|
|
223
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, seller, programId);
|
|
198
224
|
const sellMaxIx = new TransactionInstruction({
|
|
199
225
|
programId,
|
|
200
226
|
keys: [
|
|
@@ -210,6 +236,8 @@ export async function buildSellMaxOnCurveInstruction(connection, params, program
|
|
|
210
236
|
{ pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
|
|
211
237
|
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
212
238
|
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
239
|
+
// Holder reward account in remaining_accounts for auto-payout
|
|
240
|
+
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
213
241
|
],
|
|
214
242
|
data: DISCRIMINATORS.sell_max_on_curve,
|
|
215
243
|
});
|
package/dist/curve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAyB,aAAa,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EACN,gBAAgB,EAChB,6BAA6B,EAC7B,uCAAuC,EACvC,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AASrD,6CAA6C;AAE7C,SAAS,UAAU,CAAC,CAAS;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC;AACV,CAAC;AAED,iDAAiD;AAEjD
|
|
1
|
+
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
|
package/dist/pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAiBzB,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,EACV,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+B3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgC3B;AAID;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAyDnC;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAiEnC;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA6DnC"}
|
package/dist/pool.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { SystemProgram, TransactionInstruction, } from "@solana/web3.js";
|
|
6
6
|
import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, createAssociatedTokenAccountInstruction, createCloseAccountInstruction, getAccount, } from "@solana/spl-token";
|
|
7
7
|
import { DISCRIMINATORS, NATIVE_MINT } from "./constants.js";
|
|
8
|
-
import { getPoolPda, getPoolAuthorityPda,
|
|
8
|
+
import { getPoolPda, getPoolAuthorityPda, getHolderRewardPda, } from "./pda.js";
|
|
9
9
|
import { getPoolState, getPoolBalances } from "./accounts.js";
|
|
10
10
|
// ============= Buffer Helpers =============
|
|
11
11
|
function writeU64LE(n) {
|
|
@@ -85,15 +85,17 @@ export async function getSwapTokenToSolQuote(connection, tokenMint, tokensIn, pr
|
|
|
85
85
|
*/
|
|
86
86
|
export async function buildSwapSolToTokenInstruction(connection, params, programId) {
|
|
87
87
|
const { tokenMint, user, lamportsIn, minimumAmountOut } = params;
|
|
88
|
-
// Fetch pool state to get fee recipients (enforced on-chain)
|
|
88
|
+
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
89
89
|
const state = await getPoolState(connection, tokenMint, programId);
|
|
90
90
|
if (!state) {
|
|
91
91
|
throw new Error("Pool not found for this token");
|
|
92
92
|
}
|
|
93
|
+
// Determine which vault is WSOL and which is the token based on stored mints
|
|
94
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
95
|
+
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
96
|
+
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
93
97
|
const pool = getPoolPda(tokenMint, programId);
|
|
94
98
|
const authority = getPoolAuthorityPda(pool, programId);
|
|
95
|
-
const wsolVault = getPoolWsolVaultPda(pool, programId);
|
|
96
|
-
const tokenVault = getPoolTokenVaultPda(pool, tokenMint, programId);
|
|
97
99
|
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
98
100
|
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
|
99
101
|
const instructions = [];
|
|
@@ -138,15 +140,17 @@ export async function buildSwapSolToTokenInstruction(connection, params, program
|
|
|
138
140
|
*/
|
|
139
141
|
export async function buildSwapTokenToSolInstruction(connection, params, programId) {
|
|
140
142
|
const { tokenMint, user, amountIn, minimumLamportsOut } = params;
|
|
141
|
-
// Fetch pool state to get fee recipients (enforced on-chain)
|
|
143
|
+
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
142
144
|
const state = await getPoolState(connection, tokenMint, programId);
|
|
143
145
|
if (!state) {
|
|
144
146
|
throw new Error("Pool not found for this token");
|
|
145
147
|
}
|
|
148
|
+
// Determine which vault is WSOL and which is the token based on stored mints
|
|
149
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
150
|
+
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
151
|
+
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
146
152
|
const pool = getPoolPda(tokenMint, programId);
|
|
147
153
|
const authority = getPoolAuthorityPda(pool, programId);
|
|
148
|
-
const wsolVault = getPoolWsolVaultPda(pool, programId);
|
|
149
|
-
const tokenVault = getPoolTokenVaultPda(pool, tokenMint, programId);
|
|
150
154
|
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
151
155
|
const userWsolAta = getAssociatedTokenAddressSync(NATIVE_MINT, user);
|
|
152
156
|
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
|
@@ -193,15 +197,17 @@ export async function buildSwapTokenToSolInstruction(connection, params, program
|
|
|
193
197
|
*/
|
|
194
198
|
export async function buildSwapTokenToSolMaxInstruction(connection, params, programId) {
|
|
195
199
|
const { tokenMint, user } = params;
|
|
196
|
-
// Fetch pool state to get fee recipients (enforced on-chain)
|
|
200
|
+
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
197
201
|
const state = await getPoolState(connection, tokenMint, programId);
|
|
198
202
|
if (!state) {
|
|
199
203
|
throw new Error("Pool not found for this token");
|
|
200
204
|
}
|
|
205
|
+
// Determine which vault is WSOL and which is the token based on stored mints
|
|
206
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
207
|
+
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
208
|
+
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
201
209
|
const pool = getPoolPda(tokenMint, programId);
|
|
202
210
|
const authority = getPoolAuthorityPda(pool, programId);
|
|
203
|
-
const wsolVault = getPoolWsolVaultPda(pool, programId);
|
|
204
|
-
const tokenVault = getPoolTokenVaultPda(pool, tokenMint, programId);
|
|
205
211
|
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
206
212
|
const userWsolAta = getAssociatedTokenAddressSync(NATIVE_MINT, user);
|
|
207
213
|
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
package/dist/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,aAAa,EACb,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAEhB,6BAA6B,EAC7B,uCAAuC,EAEvC,6BAA6B,EAC7B,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,aAAa,EACb,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAEhB,6BAA6B,EAC7B,uCAAuC,EAEvC,6BAA6B,EAC7B,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQ9D,6CAA6C;AAE7C,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iDAAiD;AAEjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,SAAoB,EACpB,KAAa,EACb,SAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IACtC,MAAM,WAAW,GAAG,KAAK,GAAG,GAAG,CAAC;IAEhC,8BAA8B;IAC9B,MAAM,CAAC,GAAG,UAAU,GAAG,YAAY,CAAC;IACpC,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C,MAAM,eAAe,GAAG,CAAC,GAAG,aAAa,CAAC;IAC1C,MAAM,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC;IAEjD,eAAe;IACf,MAAM,WAAW,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAU,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,UAAU,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,QAAU,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,cAAc,GAAG,WAAW,GAAG,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,SAAS;QACpB,GAAG;QACH,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;QAC7D,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,SAAoB,EACpB,QAAgB,EAChB,SAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAE9C,8BAA8B;IAC9B,MAAM,CAAC,GAAG,UAAU,GAAG,YAAY,CAAC;IACpC,MAAM,eAAe,GAAG,YAAY,GAAG,QAAQ,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,GAAG,eAAe,CAAC;IAC1C,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,CAAC;IAEnD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAChD,MAAM,MAAM,GAAG,eAAe,GAAG,GAAG,CAAC;IAErC,eAAe;IACf,MAAM,WAAW,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAU,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,UAAU,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,QAAU,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,cAAc,GAAG,WAAW,GAAG,EAAE;QACrC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,MAAM;QACjB,GAAG;QACH,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC5D,cAAc;KACf,CAAC;AACJ,CAAC;AAED,mDAAmD;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,UAAsB,EACtB,MAA4B,EAC5B,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAEjE,iFAAiF;IACjF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAE1E,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3E,MAAM,YAAY,GAA6B,EAAE,CAAC;IAElD,qDAAqD;IACrD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,IAAI,CACf,uCAAuC,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,CAC7E,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;QACxC,SAAS;QACT,IAAI,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACnD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACxD,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3D,2CAA2C;YAC3C,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACtE,wBAAwB;YACxB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAClE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YAChE,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxE;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,cAAc,CAAC,iBAAiB;YAChC,UAAU,CAAC,UAAU,CAAC;YACtB,UAAU,CAAC,gBAAgB,CAAC;SAC7B,CAAC;KACH,CAAC,CAAC;IAEH,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,UAAsB,EACtB,MAA4B,EAC5B,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IAEjE,iFAAiF;IACjF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAE1E,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3E,MAAM,YAAY,GAA6B,EAAE,CAAC;IAElD,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,IAAI,CACf,uCAAuC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;QACxC,SAAS;QACT,IAAI,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACnD,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACxD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3D,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC1D,2CAA2C;YAC3C,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACtE,wBAAwB;YACxB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAClE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YAChE,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxE;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,cAAc,CAAC,iBAAiB;YAChC,UAAU,CAAC,QAAQ,CAAC;YACpB,UAAU,CAAC,kBAAkB,CAAC;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1B,sCAAsC;IACtC,YAAY,CAAC,IAAI,CACf,6BAA6B,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CACvD,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,UAAsB,EACtB,MAA+B,EAC/B,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEnC,iFAAiF;IACjF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAE1E,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3E,MAAM,YAAY,GAA6B,EAAE,CAAC;IAElD,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,CAAC,IAAI,CACf,uCAAuC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC;QAC3C,SAAS;QACT,IAAI,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACnD,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACxD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzD,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3D,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC1D,2CAA2C;YAC3C,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YACtE,wBAAwB;YACxB,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAClE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;YAChE,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxE;QACD,IAAI,EAAE,cAAc,CAAC,qBAAqB;KAC3C,CAAC,CAAC;IAEH,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE7B,sCAAsC;IACtC,YAAY,CAAC,IAAI,CACf,6BAA6B,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CACvD,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
|