@w3lib/solana-batch-call 0.3.0 → 0.5.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.
Files changed (198) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +304 -3
  3. package/dist/address.d.ts +2 -0
  4. package/dist/address.d.ts.map +1 -1
  5. package/dist/address.js +8 -0
  6. package/dist/address.js.map +1 -1
  7. package/dist/approvals.d.ts +129 -0
  8. package/dist/approvals.d.ts.map +1 -0
  9. package/dist/approvals.js +221 -0
  10. package/dist/approvals.js.map +1 -0
  11. package/dist/fees.d.ts +89 -0
  12. package/dist/fees.d.ts.map +1 -0
  13. package/dist/fees.js +166 -0
  14. package/dist/fees.js.map +1 -0
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/layout.d.ts +2 -0
  20. package/dist/layout.d.ts.map +1 -1
  21. package/dist/layout.js +2 -2
  22. package/dist/layout.js.map +1 -1
  23. package/dist/liquidity/amm.d.ts +7 -0
  24. package/dist/liquidity/amm.d.ts.map +1 -0
  25. package/dist/liquidity/amm.js +307 -0
  26. package/dist/liquidity/amm.js.map +1 -0
  27. package/dist/liquidity/clmm.d.ts +18 -0
  28. package/dist/liquidity/clmm.d.ts.map +1 -0
  29. package/dist/liquidity/clmm.js +85 -0
  30. package/dist/liquidity/clmm.js.map +1 -0
  31. package/dist/liquidity/common.d.ts +94 -0
  32. package/dist/liquidity/common.d.ts.map +1 -0
  33. package/dist/liquidity/common.js +228 -0
  34. package/dist/liquidity/common.js.map +1 -0
  35. package/dist/liquidity/index.d.ts +34 -0
  36. package/dist/liquidity/index.d.ts.map +1 -0
  37. package/dist/liquidity/index.js +157 -0
  38. package/dist/liquidity/index.js.map +1 -0
  39. package/dist/liquidity/orca.d.ts +6 -0
  40. package/dist/liquidity/orca.d.ts.map +1 -0
  41. package/dist/liquidity/orca.js +303 -0
  42. package/dist/liquidity/orca.js.map +1 -0
  43. package/dist/liquidity/raydiumClmm.d.ts +6 -0
  44. package/dist/liquidity/raydiumClmm.d.ts.map +1 -0
  45. package/dist/liquidity/raydiumClmm.js +307 -0
  46. package/dist/liquidity/raydiumClmm.js.map +1 -0
  47. package/dist/liquidity/types.d.ts +150 -0
  48. package/dist/liquidity/types.d.ts.map +1 -0
  49. package/dist/liquidity/types.js +2 -0
  50. package/dist/liquidity/types.js.map +1 -0
  51. package/dist/lp.d.ts +53 -15
  52. package/dist/lp.d.ts.map +1 -1
  53. package/dist/lp.js +15 -38
  54. package/dist/lp.js.map +1 -1
  55. package/dist/lpMath.d.ts +45 -0
  56. package/dist/lpMath.d.ts.map +1 -1
  57. package/dist/lpMath.js +189 -0
  58. package/dist/lpMath.js.map +1 -1
  59. package/dist/names.d.ts +68 -0
  60. package/dist/names.d.ts.map +1 -0
  61. package/dist/names.js +257 -0
  62. package/dist/names.js.map +1 -0
  63. package/dist/pools.d.ts +9 -0
  64. package/dist/pools.d.ts.map +1 -0
  65. package/dist/pools.js +45 -0
  66. package/dist/pools.js.map +1 -0
  67. package/dist/portfolio.d.ts +64 -0
  68. package/dist/portfolio.d.ts.map +1 -0
  69. package/dist/portfolio.js +57 -0
  70. package/dist/portfolio.js.map +1 -0
  71. package/dist/price.d.ts +90 -0
  72. package/dist/price.d.ts.map +1 -0
  73. package/dist/price.js +287 -0
  74. package/dist/price.js.map +1 -0
  75. package/dist/risk.d.ts +84 -0
  76. package/dist/risk.d.ts.map +1 -0
  77. package/dist/risk.js +211 -0
  78. package/dist/risk.js.map +1 -0
  79. package/dist/rpc.d.ts +2 -0
  80. package/dist/rpc.d.ts.map +1 -1
  81. package/dist/rpc.js +33 -9
  82. package/dist/rpc.js.map +1 -1
  83. package/dist/subpaths/approvals.d.ts +29 -0
  84. package/dist/subpaths/approvals.d.ts.map +1 -0
  85. package/dist/subpaths/approvals.js +30 -0
  86. package/dist/subpaths/approvals.js.map +1 -0
  87. package/dist/subpaths/fees.d.ts +23 -0
  88. package/dist/subpaths/fees.d.ts.map +1 -0
  89. package/dist/subpaths/fees.js +25 -0
  90. package/dist/subpaths/fees.js.map +1 -0
  91. package/dist/subpaths/liquidity.d.ts +23 -0
  92. package/dist/subpaths/liquidity.d.ts.map +1 -0
  93. package/dist/subpaths/liquidity.js +19 -0
  94. package/dist/subpaths/liquidity.js.map +1 -0
  95. package/dist/subpaths/lp.d.ts +1 -1
  96. package/dist/subpaths/lp.d.ts.map +1 -1
  97. package/dist/subpaths/lp.js +1 -1
  98. package/dist/subpaths/lp.js.map +1 -1
  99. package/dist/subpaths/names.d.ts +37 -0
  100. package/dist/subpaths/names.d.ts.map +1 -0
  101. package/dist/subpaths/names.js +27 -0
  102. package/dist/subpaths/names.js.map +1 -0
  103. package/dist/subpaths/price.d.ts +40 -0
  104. package/dist/subpaths/price.d.ts.map +1 -0
  105. package/dist/subpaths/price.js +43 -0
  106. package/dist/subpaths/price.js.map +1 -0
  107. package/dist/subpaths/risk.d.ts +28 -0
  108. package/dist/subpaths/risk.d.ts.map +1 -0
  109. package/dist/subpaths/risk.js +30 -0
  110. package/dist/subpaths/risk.js.map +1 -0
  111. package/dist/subpaths/swap.d.ts +22 -0
  112. package/dist/subpaths/swap.d.ts.map +1 -0
  113. package/dist/subpaths/swap.js +21 -0
  114. package/dist/subpaths/swap.js.map +1 -0
  115. package/dist/subpaths/write.d.ts +1 -1
  116. package/dist/subpaths/write.d.ts.map +1 -1
  117. package/dist/subpaths/write.js +1 -1
  118. package/dist/subpaths/write.js.map +1 -1
  119. package/dist/swap/amm.d.ts +20 -0
  120. package/dist/swap/amm.d.ts.map +1 -0
  121. package/dist/swap/amm.js +77 -0
  122. package/dist/swap/amm.js.map +1 -0
  123. package/dist/swap/clmmMath.d.ts +24 -0
  124. package/dist/swap/clmmMath.d.ts.map +1 -0
  125. package/dist/swap/clmmMath.js +82 -0
  126. package/dist/swap/clmmMath.js.map +1 -0
  127. package/dist/swap/common.d.ts +68 -0
  128. package/dist/swap/common.d.ts.map +1 -0
  129. package/dist/swap/common.js +65 -0
  130. package/dist/swap/common.js.map +1 -0
  131. package/dist/swap/cpmm.d.ts +28 -0
  132. package/dist/swap/cpmm.d.ts.map +1 -0
  133. package/dist/swap/cpmm.js +113 -0
  134. package/dist/swap/cpmm.js.map +1 -0
  135. package/dist/swap/index.d.ts +145 -0
  136. package/dist/swap/index.d.ts.map +1 -0
  137. package/dist/swap/index.js +349 -0
  138. package/dist/swap/index.js.map +1 -0
  139. package/dist/swap/orca.d.ts +50 -0
  140. package/dist/swap/orca.d.ts.map +1 -0
  141. package/dist/swap/orca.js +382 -0
  142. package/dist/swap/orca.js.map +1 -0
  143. package/dist/swap/raydiumClmm.d.ts +62 -0
  144. package/dist/swap/raydiumClmm.d.ts.map +1 -0
  145. package/dist/swap/raydiumClmm.js +447 -0
  146. package/dist/swap/raydiumClmm.js.map +1 -0
  147. package/dist/tradeCheck.d.ts +45 -0
  148. package/dist/tradeCheck.d.ts.map +1 -0
  149. package/dist/tradeCheck.js +131 -0
  150. package/dist/tradeCheck.js.map +1 -0
  151. package/dist/write/instructions.d.ts +7 -0
  152. package/dist/write/instructions.d.ts.map +1 -1
  153. package/dist/write/instructions.js +24 -1
  154. package/dist/write/instructions.js.map +1 -1
  155. package/dist/write/transaction.d.ts +23 -0
  156. package/dist/write/transaction.d.ts.map +1 -1
  157. package/dist/write/transaction.js +50 -0
  158. package/dist/write/transaction.js.map +1 -1
  159. package/package.json +41 -2
  160. package/src/address.ts +9 -0
  161. package/src/approvals.ts +358 -0
  162. package/src/fees.ts +259 -0
  163. package/src/index.ts +1 -1
  164. package/src/layout.ts +2 -2
  165. package/src/liquidity/amm.ts +353 -0
  166. package/src/liquidity/clmm.ts +108 -0
  167. package/src/liquidity/common.ts +285 -0
  168. package/src/liquidity/index.ts +177 -0
  169. package/src/liquidity/orca.ts +344 -0
  170. package/src/liquidity/raydiumClmm.ts +348 -0
  171. package/src/liquidity/types.ts +158 -0
  172. package/src/lp.ts +17 -52
  173. package/src/lpMath.ts +215 -0
  174. package/src/names.ts +329 -0
  175. package/src/pools.ts +43 -0
  176. package/src/portfolio.ts +124 -0
  177. package/src/price.ts +366 -0
  178. package/src/risk.ts +243 -0
  179. package/src/rpc.ts +36 -9
  180. package/src/subpaths/approvals.ts +47 -0
  181. package/src/subpaths/fees.ts +41 -0
  182. package/src/subpaths/liquidity.ts +45 -0
  183. package/src/subpaths/lp.ts +9 -0
  184. package/src/subpaths/names.ts +45 -0
  185. package/src/subpaths/price.ts +62 -0
  186. package/src/subpaths/risk.ts +36 -0
  187. package/src/subpaths/swap.ts +41 -0
  188. package/src/subpaths/write.ts +2 -0
  189. package/src/swap/amm.ts +88 -0
  190. package/src/swap/clmmMath.ts +96 -0
  191. package/src/swap/common.ts +113 -0
  192. package/src/swap/cpmm.ts +132 -0
  193. package/src/swap/index.ts +467 -0
  194. package/src/swap/orca.ts +397 -0
  195. package/src/swap/raydiumClmm.ts +464 -0
  196. package/src/tradeCheck.ts +166 -0
  197. package/src/write/instructions.ts +26 -1
  198. package/src/write/transaction.ts +62 -0
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Ctx } from './common.js';
2
+ import type { SolanaIncreaseLiquidityParams, SolanaLiquidityPlan, SolanaNewPositionParams, SolanaRemoveLiquidityParams } from './types.js';
3
+ type AmmProtocol = 'raydium-amm' | 'raydium-cpmm';
4
+ export declare function ammAdd(ctx: Ctx, protocol: AmmProtocol, params: SolanaIncreaseLiquidityParams | SolanaNewPositionParams): Promise<SolanaLiquidityPlan>;
5
+ export declare function ammRemove(ctx: Ctx, protocol: AmmProtocol, params: SolanaRemoveLiquidityParams): Promise<SolanaLiquidityPlan>;
6
+ export {};
7
+ //# sourceMappingURL=amm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amm.d.ts","sourceRoot":"","sources":["../../src/liquidity/amm.ts"],"names":[],"mappings":"AAeA,OAAO,EAkBL,KAAK,GAAG,EAET,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAE1I,KAAK,WAAW,GAAG,aAAa,GAAG,cAAc,CAAA;AAqGjD,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,6BAA6B,GAAG,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkH3J;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiGlI"}
@@ -0,0 +1,307 @@
1
+ import { createProgramAddress, decodeAddress, getAssociatedTokenAddress } from '../address.js';
2
+ import { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';
3
+ import { parseTokenAccount } from '../layout.js';
4
+ import { RAYDIUM_AMM_AUTHORITY, RAYDIUM_AMM_PROGRAM_ID, RAYDIUM_CPMM_AUTHORITY, RAYDIUM_CPMM_PROGRAM_ID, SOLANA_LP_PROTOCOLS, parseAmmPool, } from '../lp.js';
5
+ import { ceilDiv } from '../lpMath.js';
6
+ import { Bytes, MEMO_PROGRAM_ID, Writer, anchorIx, makePlan, minus, mintMeta, mustAccounts, nativeSide, parseAmount, plus, prepareTokenAccounts, r, refPool, removeAmount, tokenInfo, w, } from './common.js';
7
+ async function readPool(ctx, protocol, address) {
8
+ const [account] = await mustAccounts(ctx, [address], () => 'Pool');
9
+ const state = parseAmmPool(account);
10
+ if (!state || state.protocol !== protocol) {
11
+ throw new Error(`Not a ${SOLANA_LP_PROTOCOLS[protocol].name} pool: ${address}`);
12
+ }
13
+ const [m0, m1, v0, v1] = await mustAccounts(ctx, [state.mint0, state.mint1, state.vault0, state.vault1], (i) => (i < 2 ? 'Token mint' : 'Pool vault'));
14
+ const sub = (a, b) => (a > b ? a - b : 0n);
15
+ return {
16
+ state,
17
+ data: account.data,
18
+ mints: [mintMeta(state.mint0, m0), mintMeta(state.mint1, m1)],
19
+ reserve0: sub(parseTokenAccount(v0.data).amount, state.reserved0),
20
+ reserve1: sub(parseTokenAccount(v1.data).amount, state.reserved1),
21
+ };
22
+ }
23
+ /** AMM v4 存入:按固定的一边(baseSide 0 = token0)收取,另一边 = 固定数量 × 储备比例(向上取整),LP = 固定数量 × 总量 / 储备 */
24
+ function ammDeposit(pool, given0, given1) {
25
+ const { reserve0, reserve1 } = pool;
26
+ const supply = pool.state.lpSupply;
27
+ const by0 = (a0) => ({ side: 0, amount0: a0, amount1: ceilDiv(a0 * reserve1, reserve0), lp: (a0 * supply) / reserve0 });
28
+ const by1 = (a1) => ({ side: 1, amount0: ceilDiv(a1 * reserve0, reserve1), amount1: a1, lp: (a1 * supply) / reserve1 });
29
+ if (given0 !== undefined && given1 !== undefined) {
30
+ const a = by0(given0);
31
+ // 两边都给:按不超出另一边的那一边固定
32
+ return a.amount1 <= given1 ? a : by1(given1);
33
+ }
34
+ return given0 !== undefined ? by0(given0) : by1(given1);
35
+ }
36
+ /** CPMM 存入:按要拿到的 LP 收取两边(向上取整);给一边时 LP = 数量 × 总量 / 储备(向下取整,用掉的不超过给的) */
37
+ function cpmmDeposit(pool, given0, given1) {
38
+ const { reserve0, reserve1 } = pool;
39
+ const supply = pool.state.lpSupply;
40
+ const lp0 = given0 === undefined ? null : (given0 * supply) / reserve0;
41
+ const lp1 = given1 === undefined ? null : (given1 * supply) / reserve1;
42
+ // side:决定 LP 数量的那一边(两边都给时是较少的一边)
43
+ const side = lp0 === null ? 1 : lp1 === null ? 0 : lp0 <= lp1 ? 0 : 1;
44
+ const lp = side === 0 ? lp0 : lp1;
45
+ return { side, lp, amount0: ceilDiv(lp * reserve0, supply), amount1: ceilDiv(lp * reserve1, supply) };
46
+ }
47
+ function info(pool, token0, token1, protocol) {
48
+ return {
49
+ protocol,
50
+ protocolName: SOLANA_LP_PROTOCOLS[protocol].name,
51
+ type: 'amm',
52
+ pool: pool.state.address,
53
+ token0,
54
+ token1,
55
+ positionMint: null,
56
+ position: null,
57
+ lpMint: pool.state.lpMint,
58
+ tickLower: null,
59
+ tickUpper: null,
60
+ tick: null,
61
+ price: null,
62
+ priceLower: null,
63
+ priceUpper: null,
64
+ };
65
+ }
66
+ /** AMM v4 池子里 OpenBook 相关的账户:open_orders 496、market 528、market_program 560、target_orders 592 */
67
+ function ammKeys(pool) {
68
+ const b = new Bytes(pool.data);
69
+ return { openOrders: b.key(496), market: b.key(528), marketProgram: b.key(560), targetOrders: b.key(592) };
70
+ }
71
+ /** OpenBook 市场账户(MarketStateV3,含 5 字节前缀):vault_signer_nonce 45、base_vault 117、quote_vault 165、event_queue 253、bids 285、asks 317 */
72
+ async function readMarket(ctx, market, program) {
73
+ const [account] = await mustAccounts(ctx, [market], () => 'OpenBook market of the AMM v4 pool');
74
+ const data = account.data;
75
+ if (data.length < 388) {
76
+ throw new Error(`Unexpected OpenBook market account: ${market}`);
77
+ }
78
+ const b = new Bytes(data);
79
+ const nonce = new Uint8Array(8);
80
+ new DataView(nonce.buffer).setBigUint64(0, b.u64(45), true);
81
+ return {
82
+ baseVault: b.key(117),
83
+ quoteVault: b.key(165),
84
+ eventQueue: b.key(253),
85
+ bids: b.key(285),
86
+ asks: b.key(317),
87
+ authority: createProgramAddress([decodeAddress(market), nonce], program),
88
+ };
89
+ }
90
+ export async function ammAdd(ctx, protocol, params) {
91
+ const address = 'position' in params ? refPool(params.position) : params.pool;
92
+ if (!('position' in params) && (params.fullRange || params.priceLower !== undefined || params.priceUpper !== undefined || params.tickLower !== undefined || params.tickUpper !== undefined)) {
93
+ throw new Error(`${SOLANA_LP_PROTOCOLS[protocol].name} has no price range: pass only the amounts`);
94
+ }
95
+ const pool = await readPool(ctx, protocol, address);
96
+ const { state, mints } = pool;
97
+ if (state.lpSupply === 0n || pool.reserve0 === 0n || pool.reserve1 === 0n) {
98
+ throw new Error(`Pool ${address} is empty`);
99
+ }
100
+ const [token0, token1] = (await tokenInfo(ctx, mints));
101
+ const given0 = parseAmount(params.amount0, params.amount0Formatted, mints[0].decimals, 'amount0');
102
+ const given1 = parseAmount(params.amount1, params.amount1Formatted, mints[1].decimals, 'amount1');
103
+ if (given0 === undefined && given1 === undefined) {
104
+ throw new Error('Pass the amount of at least one token');
105
+ }
106
+ const lpMeta = { mint: state.lpMint, program: TOKEN_PROGRAM_ID, decimals: 0 };
107
+ let lp;
108
+ let amount0;
109
+ let amount1;
110
+ let max0;
111
+ let max1;
112
+ /** 决定数量的那一边(AMM v4 是固定收取的一边) */
113
+ let side = 0;
114
+ let ix;
115
+ if (protocol === 'raydium-cpmm') {
116
+ ;
117
+ ({ lp, amount0, amount1, side } = cpmmDeposit(pool, given0, given1));
118
+ [max0, max1] = [plus(amount0, ctx.slippage), plus(amount1, ctx.slippage)];
119
+ }
120
+ else {
121
+ const d = ammDeposit(pool, given0, given1);
122
+ ({ lp, amount0, amount1, side } = d);
123
+ [max0, max1] = side === 0 ? [amount0, plus(amount1, ctx.slippage)] : [plus(amount0, ctx.slippage), amount1];
124
+ }
125
+ // 两边都给时,另一边的上限不超过给的数量(决定数量的那一边保留滑点余量,否则价格稍有不利就失败)
126
+ if (side === 0 && given1 !== undefined && max1 > given1)
127
+ max1 = given1;
128
+ if (side === 1 && given0 !== undefined && max0 > given0)
129
+ max0 = given0;
130
+ if (lp === 0n || amount0 === 0n || amount1 === 0n) {
131
+ throw new Error('Amount too small: no LP tokens would be minted');
132
+ }
133
+ const tokens = await prepareTokenAccounts(ctx, [...mints, lpMeta], [max0, max1, null]);
134
+ const [user0, user1, userLp] = tokens.accounts;
135
+ if (protocol === 'raydium-cpmm') {
136
+ ix = {
137
+ programId: RAYDIUM_CPMM_PROGRAM_ID,
138
+ keys: [
139
+ r(ctx.owner, true),
140
+ r(RAYDIUM_CPMM_AUTHORITY),
141
+ w(state.address),
142
+ w(userLp),
143
+ w(user0),
144
+ w(user1),
145
+ w(state.vault0),
146
+ w(state.vault1),
147
+ r(TOKEN_PROGRAM_ID),
148
+ r(TOKEN_2022_PROGRAM_ID),
149
+ r(state.mint0),
150
+ r(state.mint1),
151
+ w(state.lpMint),
152
+ ],
153
+ data: new Writer().bytes(anchorIx('deposit')).u64(lp).u64(max0).u64(max1).build(),
154
+ };
155
+ }
156
+ else {
157
+ const keys = ammKeys(pool);
158
+ const market = await readMarket(ctx, keys.market, keys.marketProgram);
159
+ ix = {
160
+ programId: RAYDIUM_AMM_PROGRAM_ID,
161
+ keys: [
162
+ r(TOKEN_PROGRAM_ID),
163
+ w(state.address),
164
+ r(RAYDIUM_AMM_AUTHORITY),
165
+ r(keys.openOrders),
166
+ w(keys.targetOrders),
167
+ w(state.lpMint),
168
+ w(state.vault0),
169
+ w(state.vault1),
170
+ r(keys.market),
171
+ w(user0),
172
+ w(user1),
173
+ w(userLp),
174
+ r(ctx.owner, true),
175
+ r(market.eventQueue),
176
+ ],
177
+ // deposit:max_coin、max_pc、base_side(0 = 固定 coin)、other_amount_min(另一边至少收取多少)
178
+ data: new Writer()
179
+ .u8(3)
180
+ .u64(max0)
181
+ .u64(max1)
182
+ .u64(BigInt(side))
183
+ .u64(side === 0 ? minus(amount1, ctx.slippage) : minus(amount0, ctx.slippage))
184
+ .build(),
185
+ };
186
+ }
187
+ return makePlan(ctx, {
188
+ action: 'add',
189
+ ...info(pool, token0, token1, protocol),
190
+ liquidity: lp.toString(),
191
+ amount0: amount0.toString(),
192
+ amount1: amount1.toString(),
193
+ amount0Max: max0.toString(),
194
+ amount1Max: max1.toString(),
195
+ amount0Min: null,
196
+ amount1Min: null,
197
+ fees0: '0',
198
+ fees1: '0',
199
+ rewardMints: [],
200
+ native: nativeSide(tokens.nativeIndex),
201
+ steps: [
202
+ { kind: 'setup', instructions: tokens.setup },
203
+ { kind: 'add', instructions: [...tokens.wrap, ix, ...tokens.cleanup] },
204
+ ],
205
+ signers: [],
206
+ });
207
+ }
208
+ export async function ammRemove(ctx, protocol, params) {
209
+ const address = refPool(params.position);
210
+ const pool = await readPool(ctx, protocol, address);
211
+ const { state, mints } = pool;
212
+ const lpAccount = getAssociatedTokenAddress(ctx.owner, state.lpMint, TOKEN_PROGRAM_ID);
213
+ const [held] = await ctx.client.accounts([lpAccount], { signal: ctx.signal });
214
+ const balance = held ? parseTokenAccount(held.data).amount : 0n;
215
+ if (balance === 0n) {
216
+ throw new Error(`${ctx.owner} holds no LP tokens of ${address} (in its associated token account)`);
217
+ }
218
+ const lp = removeAmount(balance, params.percent, params.liquidity);
219
+ const [token0, token1] = (await tokenInfo(ctx, mints));
220
+ // 与程序一致:份额 × 储备,向下取整
221
+ const amount0 = (lp * pool.reserve0) / state.lpSupply;
222
+ const amount1 = (lp * pool.reserve1) / state.lpSupply;
223
+ if (amount0 === 0n && amount1 === 0n) {
224
+ throw new Error('Amount too small: nothing would be withdrawn');
225
+ }
226
+ const min0 = minus(amount0, ctx.slippage);
227
+ const min1 = minus(amount1, ctx.slippage);
228
+ const tokens = await prepareTokenAccounts(ctx, mints, [null, null]);
229
+ const [user0, user1] = tokens.accounts;
230
+ let ix;
231
+ if (protocol === 'raydium-cpmm') {
232
+ ix = {
233
+ programId: RAYDIUM_CPMM_PROGRAM_ID,
234
+ keys: [
235
+ r(ctx.owner, true),
236
+ r(RAYDIUM_CPMM_AUTHORITY),
237
+ w(state.address),
238
+ w(lpAccount),
239
+ w(user0),
240
+ w(user1),
241
+ w(state.vault0),
242
+ w(state.vault1),
243
+ r(TOKEN_PROGRAM_ID),
244
+ r(TOKEN_2022_PROGRAM_ID),
245
+ r(state.mint0),
246
+ r(state.mint1),
247
+ w(state.lpMint),
248
+ r(MEMO_PROGRAM_ID),
249
+ ],
250
+ data: new Writer().bytes(anchorIx('withdraw')).u64(lp).u64(min0).u64(min1).build(),
251
+ };
252
+ }
253
+ else {
254
+ const keys = ammKeys(pool);
255
+ const market = await readMarket(ctx, keys.market, keys.marketProgram);
256
+ ix = {
257
+ programId: RAYDIUM_AMM_PROGRAM_ID,
258
+ keys: [
259
+ r(TOKEN_PROGRAM_ID),
260
+ w(state.address),
261
+ r(RAYDIUM_AMM_AUTHORITY),
262
+ w(keys.openOrders),
263
+ w(keys.targetOrders),
264
+ w(state.lpMint),
265
+ w(state.vault0),
266
+ w(state.vault1),
267
+ // 原来的 withdraw_queue / temp_lp 账户,程序已不再使用,按官方 SDK 传池子地址占位
268
+ w(state.address),
269
+ w(state.address),
270
+ r(keys.marketProgram),
271
+ w(keys.market),
272
+ w(market.baseVault),
273
+ w(market.quoteVault),
274
+ r(market.authority),
275
+ w(lpAccount),
276
+ w(user0),
277
+ w(user1),
278
+ r(ctx.owner, true),
279
+ w(market.eventQueue),
280
+ w(market.bids),
281
+ w(market.asks),
282
+ ],
283
+ data: new Writer().u8(4).u64(lp).u64(min0).u64(min1).build(),
284
+ };
285
+ }
286
+ return makePlan(ctx, {
287
+ action: 'remove',
288
+ ...info(pool, token0, token1, protocol),
289
+ liquidity: lp.toString(),
290
+ amount0: amount0.toString(),
291
+ amount1: amount1.toString(),
292
+ amount0Max: null,
293
+ amount1Max: null,
294
+ amount0Min: min0.toString(),
295
+ amount1Min: min1.toString(),
296
+ fees0: '0',
297
+ fees1: '0',
298
+ rewardMints: [],
299
+ native: nativeSide(tokens.nativeIndex),
300
+ steps: [
301
+ { kind: 'setup', instructions: tokens.setup },
302
+ { kind: 'remove', instructions: [...tokens.wrap, ix, ...tokens.cleanup] },
303
+ ],
304
+ signers: [],
305
+ });
306
+ }
307
+ //# sourceMappingURL=amm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amm.js","sourceRoot":"","sources":["../../src/liquidity/amm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type SolanaLpClmmPosition, type SolanaLpToken } from '../lp.js';
2
+ import { type ClmmProgram } from '../lpMath.js';
3
+ import type { Ctx } from './common.js';
4
+ import type { SolanaNewPositionParams } from './types.js';
5
+ /** 新建仓位的 tick 区间:fullRange / tickLower + tickUpper / priceLower + priceUpper(token1 / token0)三选一 */
6
+ export declare function resolveRange(program: ClmmProgram, params: SolanaNewPositionParams, token0: SolanaLpToken, token1: SolanaLpToken, tickSpacing: number): [number, number];
7
+ /** 按输入的数量算添加的流动性;价格在区间外时只需要一种代币,给错了另一种会报错 */
8
+ export declare function liquidityFor(program: ClmmProgram, tick: number, sqrtPrice: bigint, tickLower: number, tickUpper: number, amount0: bigint | undefined, amount1: bigint | undefined, token0: SolanaLpToken, token1: SolanaLpToken): bigint;
9
+ /** 计划里的价格字段(token1 / token0,按精度换算,只用于展示) */
10
+ export declare function priceInfo(tick: number, sqrtPrice: bigint, token0: SolanaLpToken, token1: SolanaLpToken, tickLower: number, tickUpper: number): {
11
+ tick: number;
12
+ price: number | null;
13
+ priceLower: number | null;
14
+ priceUpper: number | null;
15
+ };
16
+ /** 已有的仓位:用查询拿到数量、手续费、价格(要求 owner 持有仓位 NFT 的关联代币账户) */
17
+ export declare function queryPosition(ctx: Ctx, protocol: 'raydium-clmm' | 'orca-whirlpool', positionMint: string): Promise<SolanaLpClmmPosition>;
18
+ //# sourceMappingURL=clmm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clmm.d.ts","sourceRoot":"","sources":["../../src/liquidity/clmm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACrF,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsCvK;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,GACpB,MAAM,CAmBR;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;EAQ5I;AAED,sDAAsD;AACtD,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,gBAAgB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAO9I"}
@@ -0,0 +1,85 @@
1
+ import { lpPositions } from '../lp.js';
2
+ import { MAX_TICK, MIN_TICK, getLiquidityForAmounts, nearestUsableTick, priceToTick, sqrtPriceAtTick, sqrtPriceToPrice, tickToPrice, } from '../lpMath.js';
3
+ /** 新建仓位的 tick 区间:fullRange / tickLower + tickUpper / priceLower + priceUpper(token1 / token0)三选一 */
4
+ export function resolveRange(program, params, token0, token1, tickSpacing) {
5
+ const byTicks = params.tickLower !== undefined || params.tickUpper !== undefined;
6
+ const byPrices = params.priceLower !== undefined || params.priceUpper !== undefined;
7
+ if (Number(!!params.fullRange) + Number(byTicks) + Number(byPrices) !== 1) {
8
+ throw new Error('Pass exactly one of fullRange, tickLower + tickUpper, or priceLower + priceUpper');
9
+ }
10
+ let lower;
11
+ let upper;
12
+ if (params.fullRange) {
13
+ lower = Math.ceil(MIN_TICK / tickSpacing) * tickSpacing;
14
+ upper = Math.floor(MAX_TICK / tickSpacing) * tickSpacing;
15
+ }
16
+ else if (byTicks) {
17
+ if (params.tickLower === undefined || params.tickUpper === undefined) {
18
+ throw new Error('Pass both tickLower and tickUpper');
19
+ }
20
+ lower = params.tickLower;
21
+ upper = params.tickUpper;
22
+ for (const tick of [lower, upper]) {
23
+ if (!Number.isInteger(tick) || tick < MIN_TICK || tick > MAX_TICK || tick % tickSpacing !== 0) {
24
+ throw new RangeError(`tick ${tick} must be an integer multiple of tickSpacing ${tickSpacing} within [${MIN_TICK}, ${MAX_TICK}]`);
25
+ }
26
+ }
27
+ }
28
+ else {
29
+ if (params.priceLower === undefined || params.priceUpper === undefined) {
30
+ throw new Error('Pass both priceLower and priceUpper');
31
+ }
32
+ if (token0.decimals === null || token1.decimals === null) {
33
+ throw new Error('Cannot read token decimals to convert prices; pass ticks instead');
34
+ }
35
+ const ticks = [params.priceLower, params.priceUpper].map((price) => {
36
+ return nearestUsableTick(priceToTick(program, price, token0.decimals, token1.decimals), tickSpacing);
37
+ });
38
+ [lower, upper] = ticks[0] <= ticks[1] ? ticks : [ticks[1], ticks[0]];
39
+ }
40
+ if (lower >= upper) {
41
+ throw new RangeError(`The price range is too narrow: tickLower ${lower} must be below tickUpper ${upper} (tickSpacing ${tickSpacing})`);
42
+ }
43
+ return [lower, upper];
44
+ }
45
+ /** 按输入的数量算添加的流动性;价格在区间外时只需要一种代币,给错了另一种会报错 */
46
+ export function liquidityFor(program, tick, sqrtPrice, tickLower, tickUpper, amount0, amount1, token0, token1) {
47
+ const name = (t) => t.symbol ?? t.mint;
48
+ if (amount0 === undefined && amount1 === undefined) {
49
+ throw new Error('Pass the amount of at least one token');
50
+ }
51
+ if (amount1 === undefined && (tick >= tickUpper || sqrtPrice >= sqrtPriceAtTick(program, tickUpper))) {
52
+ throw new Error(`The current price is above the range: the position takes only ${name(token1)} (token1); pass amount1 instead`);
53
+ }
54
+ if (amount0 === undefined && (tick < tickLower || sqrtPrice <= sqrtPriceAtTick(program, tickLower))) {
55
+ throw new Error(`The current price is below the range: the position takes only ${name(token0)} (token0); pass amount0 instead`);
56
+ }
57
+ const liquidity = getLiquidityForAmounts(tick, sqrtPrice, sqrtPriceAtTick(program, tickLower), sqrtPriceAtTick(program, tickUpper), amount0, amount1, tickLower, tickUpper);
58
+ if (liquidity === 0n) {
59
+ throw new Error('Amount too small: the liquidity rounds to 0');
60
+ }
61
+ if (liquidity >= 1n << 128n) {
62
+ throw new RangeError('Amount too large');
63
+ }
64
+ return liquidity;
65
+ }
66
+ /** 计划里的价格字段(token1 / token0,按精度换算,只用于展示) */
67
+ export function priceInfo(tick, sqrtPrice, token0, token1, tickLower, tickUpper) {
68
+ const known = token0.decimals !== null && token1.decimals !== null;
69
+ return {
70
+ tick,
71
+ price: known ? sqrtPriceToPrice(sqrtPrice, token0.decimals, token1.decimals) : null,
72
+ priceLower: known ? tickToPrice(tickLower, token0.decimals, token1.decimals) : null,
73
+ priceUpper: known ? tickToPrice(tickUpper, token0.decimals, token1.decimals) : null,
74
+ };
75
+ }
76
+ /** 已有的仓位:用查询拿到数量、手续费、价格(要求 owner 持有仓位 NFT 的关联代币账户) */
77
+ export async function queryPosition(ctx, protocol, positionMint) {
78
+ const list = await lpPositions(ctx.client, ctx.owner, { protocols: [protocol], mints: [positionMint], includeClosed: true, signal: ctx.signal });
79
+ const found = list.find((p) => p.type === 'clmm' && p.positionMint === positionMint);
80
+ if (!found) {
81
+ throw new Error(`${ctx.owner} does not hold the ${protocol} position ${positionMint} (in its associated token account)`);
82
+ }
83
+ return found;
84
+ }
85
+ //# sourceMappingURL=clmm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clmm.js","sourceRoot":"","sources":["../../src/liquidity/clmm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { SolanaClient } from '../client.js';
2
+ import { type AccountInfo } from '../layout.js';
3
+ import type { SolanaLpPosition, SolanaLpToken } from '../lp.js';
4
+ import type { Instruction } from '../write/transaction.js';
5
+ import type { SolanaLiquidityOptions, SolanaLiquidityPlan, SolanaPositionRef } from './types.js';
6
+ export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
7
+ export declare const RENT_SYSVAR_ID = "SysvarRent111111111111111111111111111111111";
8
+ export declare const DEFAULT_ADDRESS = "11111111111111111111111111111111";
9
+ export interface Ctx {
10
+ client: SolanaClient;
11
+ owner: string;
12
+ recipient: string;
13
+ slippage: number;
14
+ native: boolean;
15
+ signal: AbortSignal | undefined;
16
+ }
17
+ export declare function createCtx(client: SolanaClient, owner: string, options: SolanaLiquidityOptions): Ctx;
18
+ export { Bytes } from '../lp.js';
19
+ /** 按字段顺序写指令数据(小端) */
20
+ export declare class Writer {
21
+ #private;
22
+ bytes(values: ArrayLike<number>): this;
23
+ u8(v: number): this;
24
+ bool(v: boolean): this;
25
+ i32(v: number): this;
26
+ u64(v: bigint): this;
27
+ u128(v: bigint): this;
28
+ build(): Uint8Array;
29
+ }
30
+ /** Anchor 指令判别符:sha256("global:<名称>") 的前 8 字节 */
31
+ export declare function anchorIx(name: string): Uint8Array;
32
+ export declare const w: (pubkey: string, isSigner?: boolean) => {
33
+ pubkey: string;
34
+ isSigner: boolean;
35
+ isWritable: boolean;
36
+ };
37
+ export declare const r: (pubkey: string, isSigner?: boolean) => {
38
+ pubkey: string;
39
+ isSigner: boolean;
40
+ isWritable: boolean;
41
+ };
42
+ /** 读账户,缺失时报错 */
43
+ export declare function mustAccounts(ctx: Ctx, addresses: readonly string[], what: (i: number) => string): Promise<AccountInfo[]>;
44
+ /** 代币的 mint 信息:所属的代币程序、精度 */
45
+ export interface MintMeta {
46
+ mint: string;
47
+ program: string;
48
+ decimals: number;
49
+ }
50
+ /**
51
+ * pool:池子里的两种代币。带转账手续费的 Token-2022 代币不支持(程序按扣费前 / 后的数量检查上下限,计划里的数量会对不上,
52
+ * 手续费超过滑点时交易一定失败),构建时报错;挖矿奖励的代币不检查(只影响到账数量)
53
+ */
54
+ export declare function mintMeta(mint: string, account: AccountInfo, pool?: boolean): MintMeta;
55
+ /** 代币信息(symbol / 精度),与 getLpPositions 的格式一致 */
56
+ export declare function tokenInfo(ctx: Ctx, mints: readonly MintMeta[]): Promise<SolanaLpToken[]>;
57
+ export declare function fmt(value: bigint, token: SolanaLpToken): string | null;
58
+ /** 解析输入的数量:amount(最小单位)和 formatted 二选一,都没给时返回 undefined */
59
+ export declare function parseAmount(raw: bigint | number | string | undefined, formatted: string | undefined, decimals: number, name: string): bigint | undefined;
60
+ /** 按滑点向下取:value × (1 − slippage) */
61
+ export declare function minus(value: bigint, slippage: number): bigint;
62
+ /** 按滑点向上取:value × (1 + slippage),向上取整 */
63
+ export declare function plus(value: bigint, slippage: number): bigint;
64
+ /** 移除的数量:percent(百分数)或 liquidity,二选一,默认全部 */
65
+ export declare function removeAmount(total: bigint, percent: number | undefined, liquidity: bigint | number | string | undefined): bigint;
66
+ /** 用 SOL 的是哪一边 */
67
+ export declare const nativeSide: (index: number | null) => "token0" | "token1" | null;
68
+ /**
69
+ * owner 的代币账户(ATA):添加时要付出的、移除时要收到的。
70
+ * 不存在时创建(setup);wSOL 且 native 时:添加前把差额 SOL 包装进去,最后(原来没有的)关闭换回 SOL
71
+ */
72
+ export interface TokenAccounts {
73
+ /** 每个 mint 的 ATA */
74
+ accounts: string[];
75
+ /** 创建缺少的代币账户 */
76
+ setup: Instruction[];
77
+ /** 包装 SOL(转入 + SyncNative):放在主指令前、同一步里(主指令失败时不会留下包装好的 SOL) */
78
+ wrap: Instruction[];
79
+ cleanup: Instruction[];
80
+ /** 哪一边用 SOL(下标),没有时为 null */
81
+ nativeIndex: number | null;
82
+ }
83
+ export declare function prepareTokenAccounts(ctx: Ctx, mints: readonly MintMeta[], pay: ReadonlyArray<bigint | null>): Promise<TokenAccounts>;
84
+ /** 仓位引用里的字段 */
85
+ export declare function refMint(ref: SolanaPositionRef | SolanaLpPosition): string;
86
+ export declare function refPool(ref: SolanaPositionRef | SolanaLpPosition): string;
87
+ /** 新的仓位 NFT mint:WebCrypto 生成 Ed25519 密钥,secretKey 是 32 字节种子(PKCS#8 的最后 32 字节) */
88
+ export declare function newMintKeypair(): Promise<{
89
+ address: string;
90
+ secretKey: Uint8Array;
91
+ }>;
92
+ type PlanInput = Omit<SolanaLiquidityPlan, 'owner' | 'amount0Formatted' | 'amount1Formatted' | 'fees0Formatted' | 'fees1Formatted'>;
93
+ export declare function makePlan(ctx: Ctx, input: PlanInput): SolanaLiquidityPlan;
94
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/liquidity/common.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAiF,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9H,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEhG,eAAO,MAAM,eAAe,gDAAgD,CAAA;AAC5E,eAAO,MAAM,cAAc,gDAAgD,CAAA;AAC3E,eAAO,MAAM,eAAe,qCAAoB,CAAA;AAEhD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAChC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,GAAG,CAWnG;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,qBAAqB;AACrB,qBAAa,MAAM;;IAEjB,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAItC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAGnB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAGtB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKpB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrB,KAAK,IAAI,UAAU;CAGpB;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED,eAAO,MAAM,CAAC,GAAI,QAAQ,MAAM,EAAE,kBAAgB;;;;CAA6C,CAAA;AAC/F,eAAO,MAAM,CAAC,GAAI,QAAQ,MAAM,EAAE,kBAAgB;;;;CAA8C,CAAA;AAEhG,gBAAgB;AAChB,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAQ9H;AAED,6BAA6B;AAC7B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,UAAO,GAAG,QAAQ,CAWlF;AAED,+CAA+C;AAC/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAM9F;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAEtE;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBxJ;AAED,oCAAoC;AACpC,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,yCAAyC;AACzC,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAoBhI;AAED,kBAAkB;AAClB,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,GAAG,IAAI,+BAA6D,CAAA;AAO5G;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,oBAAoB;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,gBAAgB;IAChB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,8DAA8D;IAC9D,IAAI,EAAE,WAAW,EAAE,CAAA;IACnB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CA8B1I;AAUD,eAAe;AACf,wBAAgB,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,MAAM,CAMzE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,MAAM,CAKzE;AAED,kFAAkF;AAClF,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,CAAC,CAI1F;AAED,KAAK,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,CAAA;AAEnI,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAYxE"}