@cubee_ee/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.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/dist/clients/AdminClient.d.ts +61 -0
  4. package/dist/clients/AdminClient.d.ts.map +1 -0
  5. package/dist/clients/AdminClient.js +196 -0
  6. package/dist/clients/AdminClient.js.map +1 -0
  7. package/dist/clients/CubeBackendClient.d.ts +67 -0
  8. package/dist/clients/CubeBackendClient.d.ts.map +1 -0
  9. package/dist/clients/CubeBackendClient.js +126 -0
  10. package/dist/clients/CubeBackendClient.js.map +1 -0
  11. package/dist/clients/CubicPoolClient.d.ts +73 -0
  12. package/dist/clients/CubicPoolClient.d.ts.map +1 -0
  13. package/dist/clients/CubicPoolClient.js +425 -0
  14. package/dist/clients/CubicPoolClient.js.map +1 -0
  15. package/dist/clients/PoolFactoryClient.d.ts +45 -0
  16. package/dist/clients/PoolFactoryClient.d.ts.map +1 -0
  17. package/dist/clients/PoolFactoryClient.js +83 -0
  18. package/dist/clients/PoolFactoryClient.js.map +1 -0
  19. package/dist/clients/RpcClient.d.ts +28 -0
  20. package/dist/clients/RpcClient.d.ts.map +1 -0
  21. package/dist/clients/RpcClient.js +58 -0
  22. package/dist/clients/RpcClient.js.map +1 -0
  23. package/dist/clients/SingleTokenDepositClient.d.ts +45 -0
  24. package/dist/clients/SingleTokenDepositClient.d.ts.map +1 -0
  25. package/dist/clients/SingleTokenDepositClient.js +63 -0
  26. package/dist/clients/SingleTokenDepositClient.js.map +1 -0
  27. package/dist/clients/index.d.ts +8 -0
  28. package/dist/clients/index.d.ts.map +1 -0
  29. package/dist/clients/index.js +24 -0
  30. package/dist/clients/index.js.map +1 -0
  31. package/dist/clients/tx-builders.d.ts +32 -0
  32. package/dist/clients/tx-builders.d.ts.map +1 -0
  33. package/dist/clients/tx-builders.js +398 -0
  34. package/dist/clients/tx-builders.js.map +1 -0
  35. package/dist/config/index.d.ts +60 -0
  36. package/dist/config/index.d.ts.map +1 -0
  37. package/dist/config/index.js +59 -0
  38. package/dist/config/index.js.map +1 -0
  39. package/dist/config/networks.d.ts +10 -0
  40. package/dist/config/networks.d.ts.map +1 -0
  41. package/dist/config/networks.js +31 -0
  42. package/dist/config/networks.js.map +1 -0
  43. package/dist/config/tokens.d.ts +19 -0
  44. package/dist/config/tokens.d.ts.map +1 -0
  45. package/dist/config/tokens.js +43 -0
  46. package/dist/config/tokens.js.map +1 -0
  47. package/dist/idl/cubic_pool.json +2497 -0
  48. package/dist/idl/index.d.ts +975 -0
  49. package/dist/idl/index.d.ts.map +1 -0
  50. package/dist/idl/index.js +18 -0
  51. package/dist/idl/index.js.map +1 -0
  52. package/dist/idl/protocol_admin.json +1816 -0
  53. package/dist/idl/single_token_liquidity.json +745 -0
  54. package/dist/index.d.ts +48 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +136 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/math/cubicMath.d.ts +40 -0
  59. package/dist/math/cubicMath.d.ts.map +1 -0
  60. package/dist/math/cubicMath.js +75 -0
  61. package/dist/math/cubicMath.js.map +1 -0
  62. package/dist/math/fixedPoint.d.ts +14 -0
  63. package/dist/math/fixedPoint.d.ts.map +1 -0
  64. package/dist/math/fixedPoint.js +46 -0
  65. package/dist/math/fixedPoint.js.map +1 -0
  66. package/dist/math/index.d.ts +7 -0
  67. package/dist/math/index.d.ts.map +1 -0
  68. package/dist/math/index.js +23 -0
  69. package/dist/math/index.js.map +1 -0
  70. package/dist/math/logExp.d.ts +15 -0
  71. package/dist/math/logExp.d.ts.map +1 -0
  72. package/dist/math/logExp.js +91 -0
  73. package/dist/math/logExp.js.map +1 -0
  74. package/dist/math/singleToken.d.ts +53 -0
  75. package/dist/math/singleToken.d.ts.map +1 -0
  76. package/dist/math/singleToken.js +185 -0
  77. package/dist/math/singleToken.js.map +1 -0
  78. package/dist/math/slippage.d.ts +24 -0
  79. package/dist/math/slippage.d.ts.map +1 -0
  80. package/dist/math/slippage.js +54 -0
  81. package/dist/math/slippage.js.map +1 -0
  82. package/dist/math/weightedMath.d.ts +18 -0
  83. package/dist/math/weightedMath.d.ts.map +1 -0
  84. package/dist/math/weightedMath.js +45 -0
  85. package/dist/math/weightedMath.js.map +1 -0
  86. package/dist/parsers/borsh.d.ts +24 -0
  87. package/dist/parsers/borsh.d.ts.map +1 -0
  88. package/dist/parsers/borsh.js +80 -0
  89. package/dist/parsers/borsh.js.map +1 -0
  90. package/dist/parsers/events.d.ts +3 -0
  91. package/dist/parsers/events.d.ts.map +1 -0
  92. package/dist/parsers/events.js +172 -0
  93. package/dist/parsers/events.js.map +1 -0
  94. package/dist/parsers/index.d.ts +5 -0
  95. package/dist/parsers/index.d.ts.map +1 -0
  96. package/dist/parsers/index.js +21 -0
  97. package/dist/parsers/index.js.map +1 -0
  98. package/dist/parsers/mintAccount.d.ts +22 -0
  99. package/dist/parsers/mintAccount.d.ts.map +1 -0
  100. package/dist/parsers/mintAccount.js +22 -0
  101. package/dist/parsers/mintAccount.js.map +1 -0
  102. package/dist/parsers/poolAccount.d.ts +32 -0
  103. package/dist/parsers/poolAccount.d.ts.map +1 -0
  104. package/dist/parsers/poolAccount.js +88 -0
  105. package/dist/parsers/poolAccount.js.map +1 -0
  106. package/dist/types/events.d.ts +82 -0
  107. package/dist/types/events.d.ts.map +1 -0
  108. package/dist/types/events.js +3 -0
  109. package/dist/types/events.js.map +1 -0
  110. package/dist/types/index.d.ts +5 -0
  111. package/dist/types/index.d.ts.map +1 -0
  112. package/dist/types/index.js +21 -0
  113. package/dist/types/index.js.map +1 -0
  114. package/dist/types/pool.d.ts +66 -0
  115. package/dist/types/pool.d.ts.map +1 -0
  116. package/dist/types/pool.js +3 -0
  117. package/dist/types/pool.js.map +1 -0
  118. package/dist/types/result.d.ts +23 -0
  119. package/dist/types/result.d.ts.map +1 -0
  120. package/dist/types/result.js +11 -0
  121. package/dist/types/result.js.map +1 -0
  122. package/dist/types/tx.d.ts +80 -0
  123. package/dist/types/tx.d.ts.map +1 -0
  124. package/dist/types/tx.js +3 -0
  125. package/dist/types/tx.js.map +1 -0
  126. package/dist/utils/errors.d.ts +8 -0
  127. package/dist/utils/errors.d.ts.map +1 -0
  128. package/dist/utils/errors.js +83 -0
  129. package/dist/utils/errors.js.map +1 -0
  130. package/dist/utils/index.d.ts +4 -0
  131. package/dist/utils/index.d.ts.map +1 -0
  132. package/dist/utils/index.js +20 -0
  133. package/dist/utils/index.js.map +1 -0
  134. package/dist/utils/pda.d.ts +8 -0
  135. package/dist/utils/pda.d.ts.map +1 -0
  136. package/dist/utils/pda.js +27 -0
  137. package/dist/utils/pda.js.map +1 -0
  138. package/dist/utils/retry.d.ts +22 -0
  139. package/dist/utils/retry.d.ts.map +1 -0
  140. package/dist/utils/retry.js +62 -0
  141. package/dist/utils/retry.js.map +1 -0
  142. package/package.json +54 -0
  143. package/src/clients/AdminClient.ts +254 -0
  144. package/src/clients/CubeBackendClient.ts +193 -0
  145. package/src/clients/CubicPoolClient.ts +492 -0
  146. package/src/clients/PoolFactoryClient.ts +102 -0
  147. package/src/clients/RpcClient.ts +78 -0
  148. package/src/clients/SingleTokenDepositClient.ts +91 -0
  149. package/src/clients/index.ts +7 -0
  150. package/src/clients/tx-builders.ts +538 -0
  151. package/src/config/index.ts +82 -0
  152. package/src/config/networks.ts +49 -0
  153. package/src/config/tokens.ts +52 -0
  154. package/src/idl/cubic_pool.json +2497 -0
  155. package/src/idl/index.ts +13 -0
  156. package/src/idl/protocol_admin.json +1816 -0
  157. package/src/idl/single_token_liquidity.json +745 -0
  158. package/src/index.ts +154 -0
  159. package/src/math/cubicMath.ts +89 -0
  160. package/src/math/fixedPoint.ts +39 -0
  161. package/src/math/index.ts +6 -0
  162. package/src/math/logExp.ts +82 -0
  163. package/src/math/singleToken.ts +250 -0
  164. package/src/math/slippage.ts +49 -0
  165. package/src/math/weightedMath.ts +48 -0
  166. package/src/parsers/borsh.ts +80 -0
  167. package/src/parsers/events.ts +172 -0
  168. package/src/parsers/index.ts +4 -0
  169. package/src/parsers/mintAccount.ts +37 -0
  170. package/src/parsers/poolAccount.ts +113 -0
  171. package/src/types/events.ts +100 -0
  172. package/src/types/index.ts +4 -0
  173. package/src/types/pool.ts +64 -0
  174. package/src/types/result.ts +45 -0
  175. package/src/types/tx.ts +87 -0
  176. package/src/utils/errors.ts +78 -0
  177. package/src/utils/index.ts +3 -0
  178. package/src/utils/pda.ts +58 -0
  179. package/src/utils/retry.ts +85 -0
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildSwapIx = buildSwapIx;
7
+ exports.buildSwapTx = buildSwapTx;
8
+ exports.buildAddLiquidityIx = buildAddLiquidityIx;
9
+ exports.buildAddLiquidityTx = buildAddLiquidityTx;
10
+ exports.buildRemoveLiquidityIx = buildRemoveLiquidityIx;
11
+ exports.buildRemoveLiquidityTx = buildRemoveLiquidityTx;
12
+ exports.buildSingleTokenDepositIx = buildSingleTokenDepositIx;
13
+ exports.buildSingleTokenDepositTx = buildSingleTokenDepositTx;
14
+ exports.buildInitializeConfigIx = buildInitializeConfigIx;
15
+ exports.buildInitializeCubicPoolIx = buildInitializeCubicPoolIx;
16
+ exports.buildDeployPoolTx = buildDeployPoolTx;
17
+ const web3_js_1 = require("@solana/web3.js");
18
+ const spl_token_1 = require("@solana/spl-token");
19
+ const bn_js_1 = __importDefault(require("bn.js"));
20
+ const pda_1 = require("../utils/pda");
21
+ /**
22
+ * Low-level transaction builders. Emit raw `TransactionInstruction`s suitable
23
+ * for combination with others (e.g. versioned transactions with ALTs) in a
24
+ * single tx. Higher-level convenience lives on `CubicPoolClient`.
25
+ */
26
+ const CUBIC_POOL_DISC = {
27
+ swap: computeDiscriminator("swap"),
28
+ addLiquidity: computeDiscriminator("add_liquidity"),
29
+ removeLiquidity: computeDiscriminator("remove_liquidity"),
30
+ initializeCubicPool: computeDiscriminator("initialize_cubic_pool"),
31
+ };
32
+ const STLD_DISC = {
33
+ depositSingleToken: computeDiscriminator("deposit_single_token"),
34
+ };
35
+ /**
36
+ * Anchor discriminator: sha256("global:<ix_name>")[0..8]. The SDK
37
+ * pre-computes only the cases it needs.
38
+ *
39
+ * Pre-computed values (confirmed against `src/idl/*.json`):
40
+ * swap → f8c69e91e17587c8
41
+ * add_liquidity → b59d59438fb63448
42
+ * remove_liquidity → 5055d14818ceb16c
43
+ * initialize_cubic_pool → d79474cf79686f83
44
+ * deposit_single_token → a688a62fc7c056a9
45
+ *
46
+ * If you change an instruction name in Rust, regenerate by reading the
47
+ * target/idl/*.json discriminator field.
48
+ */
49
+ function computeDiscriminator(ixName) {
50
+ // Fallback: Anchor exposes discriminators in the IDL. We ship the known
51
+ // ones as a static map; callers passing unknown names error clearly.
52
+ const KNOWN = {
53
+ swap: "f8c69e91e17587c8",
54
+ add_liquidity: "b59d59438fb63448",
55
+ remove_liquidity: "5055d14818ceb16c",
56
+ initialize_cubic_pool: "d79474cf79686f83",
57
+ deposit_single_token: "a688a62fc7c056a9",
58
+ initialize_config: "d07f1501c2bec446",
59
+ };
60
+ const hex = KNOWN[ixName];
61
+ if (!hex)
62
+ throw new Error(`tx-builders: unknown discriminator for "${ixName}"`);
63
+ return Buffer.from(hex, "hex");
64
+ }
65
+ function requirePositiveMinimumBpt(minimumBptAmount, ixName) {
66
+ if (!minimumBptAmount || minimumBptAmount.lte(new bn_js_1.default(0))) {
67
+ throw new Error(`${ixName}: minimumBptAmount must be positive`);
68
+ }
69
+ return minimumBptAmount;
70
+ }
71
+ // ============================================================
72
+ // Swap
73
+ // ============================================================
74
+ function buildSwapIx(cfg, pool, params) {
75
+ const inTok = pool.tokens[params.tokenInIndex];
76
+ const outTok = pool.tokens[params.tokenOutIndex];
77
+ const userTokenIn = (0, pda_1.deriveAta)(params.user, inTok.mint, inTok.tokenProgram);
78
+ const userTokenOut = (0, pda_1.deriveAta)(params.user, outTok.mint, outTok.tokenProgram);
79
+ const data = Buffer.concat([
80
+ CUBIC_POOL_DISC.swap,
81
+ encodeU64(params.amountIn),
82
+ encodeU64(params.minAmountOut),
83
+ encodeU8(params.tokenInIndex),
84
+ encodeU8(params.tokenOutIndex),
85
+ ]);
86
+ const keys = [
87
+ { pubkey: pool.address, isSigner: false, isWritable: true },
88
+ { pubkey: inTok.mint, isSigner: false, isWritable: false },
89
+ { pubkey: outTok.mint, isSigner: false, isWritable: false },
90
+ { pubkey: userTokenIn, isSigner: false, isWritable: true },
91
+ { pubkey: userTokenOut, isSigner: false, isWritable: true },
92
+ { pubkey: inTok.vault, isSigner: false, isWritable: true },
93
+ { pubkey: outTok.vault, isSigner: false, isWritable: true },
94
+ { pubkey: params.user, isSigner: true, isWritable: true },
95
+ { pubkey: inTok.tokenProgram, isSigner: false, isWritable: false },
96
+ { pubkey: outTok.tokenProgram, isSigner: false, isWritable: false },
97
+ ];
98
+ return new web3_js_1.TransactionInstruction({
99
+ programId: cfg.programs.cubicPool,
100
+ keys,
101
+ data,
102
+ });
103
+ }
104
+ function buildSwapTx(cfg, pool, params) {
105
+ return {
106
+ instructions: [
107
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 400000 }),
108
+ buildSwapIx(cfg, pool, params),
109
+ ],
110
+ suggestedCuLimit: 400000,
111
+ };
112
+ }
113
+ // ============================================================
114
+ // Add liquidity (proportional)
115
+ // ============================================================
116
+ function buildAddLiquidityIx(cfg, pool, params) {
117
+ const userBpt = (0, pda_1.deriveAta)(params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
118
+ const minBpt = requirePositiveMinimumBpt(params.minimumBptAmount, "add_liquidity");
119
+ const data = Buffer.concat([
120
+ CUBIC_POOL_DISC.addLiquidity,
121
+ encodeVecU64(params.tokenAmounts),
122
+ encodeU64(minBpt),
123
+ ]);
124
+ // remaining_accounts layout:
125
+ // [user_token_i, vault_i] × N, mint_i × N, token_program_i × N
126
+ const remaining = [];
127
+ for (let i = 0; i < pool.tokenCount; i++) {
128
+ const t = pool.tokens[i];
129
+ const userAta = (0, pda_1.deriveAta)(params.user, t.mint, t.tokenProgram);
130
+ remaining.push({ pubkey: userAta, isSigner: false, isWritable: true });
131
+ remaining.push({ pubkey: t.vault, isSigner: false, isWritable: true });
132
+ }
133
+ for (let i = 0; i < pool.tokenCount; i++) {
134
+ remaining.push({ pubkey: pool.tokens[i].mint, isSigner: false, isWritable: false });
135
+ }
136
+ for (let i = 0; i < pool.tokenCount; i++) {
137
+ remaining.push({ pubkey: pool.tokens[i].tokenProgram, isSigner: false, isWritable: false });
138
+ }
139
+ const keys = [
140
+ { pubkey: pool.address, isSigner: false, isWritable: true },
141
+ { pubkey: pool.bptMint, isSigner: false, isWritable: true },
142
+ { pubkey: userBpt, isSigner: false, isWritable: true },
143
+ { pubkey: params.user, isSigner: true, isWritable: true },
144
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
145
+ ...remaining,
146
+ ];
147
+ return new web3_js_1.TransactionInstruction({
148
+ programId: cfg.programs.cubicPool,
149
+ keys,
150
+ data,
151
+ });
152
+ }
153
+ function buildAddLiquidityTx(cfg, pool, params) {
154
+ const userBpt = (0, pda_1.deriveAta)(params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
155
+ return {
156
+ instructions: [
157
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 600000 }),
158
+ (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, userBpt, params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID),
159
+ buildAddLiquidityIx(cfg, pool, params),
160
+ ],
161
+ suggestedCuLimit: 600000,
162
+ };
163
+ }
164
+ // ============================================================
165
+ // Remove liquidity
166
+ // ============================================================
167
+ function buildRemoveLiquidityIx(cfg, pool, params) {
168
+ const userBpt = (0, pda_1.deriveAta)(params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
169
+ const mins = params.minimumTokenAmounts ?? pool.tokens.map(() => new bn_js_1.default(0));
170
+ const data = Buffer.concat([
171
+ CUBIC_POOL_DISC.removeLiquidity,
172
+ encodeU64(params.bptAmount),
173
+ encodeVecU64(mins),
174
+ ]);
175
+ // remove_liquidity remaining_accounts format:
176
+ // [vault_i, user_token_i] × N, mint_i × N, token_program_i × N
177
+ const remaining = [];
178
+ for (let i = 0; i < pool.tokenCount; i++) {
179
+ const t = pool.tokens[i];
180
+ const userAta = (0, pda_1.deriveAta)(params.user, t.mint, t.tokenProgram);
181
+ remaining.push({ pubkey: t.vault, isSigner: false, isWritable: true });
182
+ remaining.push({ pubkey: userAta, isSigner: false, isWritable: true });
183
+ }
184
+ for (let i = 0; i < pool.tokenCount; i++) {
185
+ remaining.push({ pubkey: pool.tokens[i].mint, isSigner: false, isWritable: false });
186
+ }
187
+ for (let i = 0; i < pool.tokenCount; i++) {
188
+ remaining.push({ pubkey: pool.tokens[i].tokenProgram, isSigner: false, isWritable: false });
189
+ }
190
+ const keys = [
191
+ { pubkey: pool.address, isSigner: false, isWritable: true },
192
+ { pubkey: pool.bptMint, isSigner: false, isWritable: true },
193
+ { pubkey: userBpt, isSigner: false, isWritable: true },
194
+ { pubkey: params.user, isSigner: true, isWritable: true },
195
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
196
+ ...remaining,
197
+ ];
198
+ return new web3_js_1.TransactionInstruction({
199
+ programId: cfg.programs.cubicPool,
200
+ keys,
201
+ data,
202
+ });
203
+ }
204
+ function buildRemoveLiquidityTx(cfg, pool, params) {
205
+ const ixs = [
206
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: cfg.defaults.cuLimit }),
207
+ ];
208
+ // The contract transfers every pool token to the user's ATA. Include
209
+ // idempotent creates so a proportional burn works even when the user never
210
+ // held one of the receive tokens before.
211
+ for (const t of pool.tokens) {
212
+ const userAta = (0, pda_1.deriveAta)(params.user, t.mint, t.tokenProgram);
213
+ ixs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, userAta, params.user, t.mint, t.tokenProgram));
214
+ }
215
+ ixs.push(buildRemoveLiquidityIx(cfg, pool, params));
216
+ return {
217
+ instructions: ixs,
218
+ suggestedCuLimit: cfg.defaults.cuLimit,
219
+ };
220
+ }
221
+ // ============================================================
222
+ // Single-token deposit (helper program)
223
+ // ============================================================
224
+ function buildSingleTokenDepositIx(cfg, pool, params) {
225
+ const slip = params.slippageHundredthsBps ?? cfg.defaults.slippageHundredthsBps;
226
+ const minBpt = requirePositiveMinimumBpt(params.minimumBptAmount, "deposit_single_token");
227
+ const [helper] = (0, pda_1.deriveHelperPda)(cfg.programs.singleTokenLiquidity, pool.address);
228
+ const helperBpt = (0, pda_1.deriveAta)(helper, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
229
+ const userBpt = (0, pda_1.deriveAta)(params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
230
+ const data = Buffer.concat([
231
+ STLD_DISC.depositSingleToken,
232
+ encodeU64(params.amountIn),
233
+ encodeU8(params.tokenInIndex),
234
+ encodeU32(slip),
235
+ encodeU64(minBpt),
236
+ ]);
237
+ // stld remaining_accounts: [mint_i, user_ata_i, helper_ata_i, vault_i, tp_i] × N
238
+ const remaining = [];
239
+ for (let i = 0; i < pool.tokenCount; i++) {
240
+ const t = pool.tokens[i];
241
+ const userAta = (0, pda_1.deriveAta)(params.user, t.mint, t.tokenProgram);
242
+ const helperAta = (0, pda_1.deriveAta)(helper, t.mint, t.tokenProgram);
243
+ remaining.push({ pubkey: t.mint, isSigner: false, isWritable: false });
244
+ remaining.push({ pubkey: userAta, isSigner: false, isWritable: true });
245
+ remaining.push({ pubkey: helperAta, isSigner: false, isWritable: true });
246
+ remaining.push({ pubkey: t.vault, isSigner: false, isWritable: true });
247
+ remaining.push({ pubkey: t.tokenProgram, isSigner: false, isWritable: false });
248
+ }
249
+ const keys = [
250
+ { pubkey: pool.address, isSigner: false, isWritable: true },
251
+ { pubkey: helper, isSigner: false, isWritable: false },
252
+ { pubkey: pool.bptMint, isSigner: false, isWritable: true },
253
+ { pubkey: helperBpt, isSigner: false, isWritable: true },
254
+ { pubkey: userBpt, isSigner: false, isWritable: true },
255
+ { pubkey: params.user, isSigner: true, isWritable: true },
256
+ { pubkey: cfg.programs.cubicPool, isSigner: false, isWritable: false },
257
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
258
+ ...remaining,
259
+ ];
260
+ return new web3_js_1.TransactionInstruction({
261
+ programId: cfg.programs.singleTokenLiquidity,
262
+ keys,
263
+ data,
264
+ });
265
+ }
266
+ /**
267
+ * Full single-token deposit tx: makes sure helper ATAs and the user's
268
+ * per-token ATAs exist (idempotent create instructions), creates the user's
269
+ * BPT ATA if absent, then the deposit ix itself. The helper program validates
270
+ * all user ATAs up front because it may refund dust for any pool token.
271
+ * CU limit set to 1.4M (mainnet/devnet max).
272
+ */
273
+ function buildSingleTokenDepositTx(cfg, pool, params) {
274
+ const [helper] = (0, pda_1.deriveHelperPda)(cfg.programs.singleTokenLiquidity, pool.address);
275
+ const helperBpt = (0, pda_1.deriveAta)(helper, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
276
+ const userBpt = (0, pda_1.deriveAta)(params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID);
277
+ const ixs = [
278
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: cfg.defaults.cuLimit }),
279
+ ];
280
+ // User + helper ATAs (helper has an off-curve owner). Idempotent — safe to
281
+ // include even when the accounts already exist.
282
+ for (const t of pool.tokens) {
283
+ const userAta = (0, pda_1.deriveAta)(params.user, t.mint, t.tokenProgram);
284
+ const helperAta = (0, pda_1.deriveAta)(helper, t.mint, t.tokenProgram);
285
+ ixs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, userAta, params.user, t.mint, t.tokenProgram));
286
+ ixs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, helperAta, helper, t.mint, t.tokenProgram));
287
+ }
288
+ ixs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, helperBpt, helper, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID));
289
+ ixs.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(params.user, userBpt, params.user, pool.bptMint, spl_token_1.TOKEN_PROGRAM_ID));
290
+ ixs.push(buildSingleTokenDepositIx(cfg, pool, params));
291
+ return {
292
+ instructions: ixs,
293
+ suggestedCuLimit: cfg.defaults.cuLimit,
294
+ };
295
+ }
296
+ // ============================================================
297
+ // Deploy new pool (PoolFactory)
298
+ // ============================================================
299
+ function buildInitializeConfigIx(cfg, params) {
300
+ // cubic_pool v0.6.0 initialize_config:
301
+ // - the program now enforces `protocol_admin == TreasuryPDA(protocol-admin)`
302
+ // - the Treasury PDA is passed as an account; Anchor derives it from
303
+ // seeds [b"treasury"] on the protocol-admin program ID and rejects
304
+ // anything else, so neither the caller nor the SDK can substitute
305
+ // a wallet here. The on-chain `config.protocol_admin` field will
306
+ // always be this PDA.
307
+ const [treasuryPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("treasury")], cfg.programs.protocolAdmin);
308
+ const data = Buffer.concat([
309
+ computeDiscriminator("initialize_config"),
310
+ treasuryPda.toBuffer(),
311
+ encodeU16(params.defaultProtocolFeeRate),
312
+ ]);
313
+ const keys = [
314
+ { pubkey: params.config, isSigner: true, isWritable: true },
315
+ { pubkey: treasuryPda, isSigner: false, isWritable: false },
316
+ { pubkey: params.payer, isSigner: true, isWritable: true },
317
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
318
+ ];
319
+ return new web3_js_1.TransactionInstruction({
320
+ programId: cfg.programs.cubicPool,
321
+ keys,
322
+ data,
323
+ });
324
+ }
325
+ function buildInitializeCubicPoolIx(cfg, params) {
326
+ const tokenProgram = params.bptTokenProgram ?? spl_token_1.TOKEN_PROGRAM_ID;
327
+ const [pool] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("cubic_pool"), params.configKey.toBuffer(), params.poolId.toArrayLike(Buffer, "le", 8)], cfg.programs.cubicPool);
328
+ const [bptMint] = (0, pda_1.deriveBptMint)(cfg.programs.cubicPool, pool);
329
+ const data = Buffer.concat([
330
+ CUBIC_POOL_DISC.initializeCubicPool,
331
+ encodeVecPubkey(params.tokens),
332
+ encodeVecU64(params.weightsBps.map((w) => new bn_js_1.default(w))),
333
+ encodeVecU64(params.virtualBalances),
334
+ encodeU32(params.swapFeeRate),
335
+ encodeU64(params.poolId),
336
+ ]);
337
+ const remaining = params.tokens.map((m) => ({
338
+ pubkey: m,
339
+ isSigner: false,
340
+ isWritable: false,
341
+ }));
342
+ const keys = [
343
+ { pubkey: params.configKey, isSigner: false, isWritable: false },
344
+ { pubkey: pool, isSigner: false, isWritable: true },
345
+ { pubkey: bptMint, isSigner: false, isWritable: true },
346
+ { pubkey: params.payer, isSigner: true, isWritable: true },
347
+ { pubkey: tokenProgram, isSigner: false, isWritable: false },
348
+ { pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
349
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
350
+ ...remaining,
351
+ ];
352
+ return new web3_js_1.TransactionInstruction({
353
+ programId: cfg.programs.cubicPool,
354
+ keys,
355
+ data,
356
+ });
357
+ }
358
+ function buildDeployPoolTx(cfg, params) {
359
+ return {
360
+ instructions: [
361
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 400000 }),
362
+ buildInitializeCubicPoolIx(cfg, params),
363
+ ],
364
+ suggestedCuLimit: 400000,
365
+ };
366
+ }
367
+ // ============================================================
368
+ // Borsh encoding helpers (subset used above)
369
+ // ============================================================
370
+ function encodeU8(v) {
371
+ const b = Buffer.alloc(1);
372
+ b.writeUInt8(v & 0xff, 0);
373
+ return b;
374
+ }
375
+ function encodeU16(v) {
376
+ const b = Buffer.alloc(2);
377
+ b.writeUInt16LE(v & 0xffff, 0);
378
+ return b;
379
+ }
380
+ function encodeU32(v) {
381
+ const b = Buffer.alloc(4);
382
+ b.writeUInt32LE(v >>> 0, 0);
383
+ return b;
384
+ }
385
+ function encodeU64(v) {
386
+ return v.toArrayLike(Buffer, "le", 8);
387
+ }
388
+ function encodeVecU64(vs) {
389
+ const len = Buffer.alloc(4);
390
+ len.writeUInt32LE(vs.length, 0);
391
+ return Buffer.concat([len, ...vs.map(encodeU64)]);
392
+ }
393
+ function encodeVecPubkey(pks) {
394
+ const len = Buffer.alloc(4);
395
+ len.writeUInt32LE(pks.length, 0);
396
+ return Buffer.concat([len, ...pks.map((p) => p.toBuffer())]);
397
+ }
398
+ //# sourceMappingURL=tx-builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-builders.js","sourceRoot":"","sources":["../../src/clients/tx-builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { Commitment, PublicKey } from "@solana/web3.js";
2
+ import { NetworkPrograms, Network } from "./networks";
3
+ import { TokenInfo } from "./tokens";
4
+ export * from "./networks";
5
+ export * from "./tokens";
6
+ /**
7
+ * Root SDK configuration. Passed into every Client class at construction.
8
+ * Immutable after creation — rebuild if you need to switch networks.
9
+ */
10
+ export interface CubeConfig {
11
+ network: Network;
12
+ programs: NetworkPrograms;
13
+ defaults: {
14
+ rpcEndpoint: string;
15
+ rpcCommitment: Commitment;
16
+ /** Used by helpers that prepend a ComputeBudget instruction. */
17
+ cuLimit: number;
18
+ /**
19
+ * Default slippage budget when the caller doesn't pass one. Units:
20
+ * hundredths of a basis point (matches cubic-pool's `swap_fee_rate`
21
+ * scale). 50_000 = 5%.
22
+ */
23
+ slippageHundredthsBps: number;
24
+ };
25
+ /** Optional token registry keyed by mint pubkey string. */
26
+ tokens?: Record<string, TokenInfo>;
27
+ /** Optional backend endpoint; consumed by CubeBackendClient. */
28
+ backendEndpoint?: string;
29
+ }
30
+ export interface CubeConfigOverrides {
31
+ rpcEndpoint?: string;
32
+ rpcCommitment?: Commitment;
33
+ cuLimit?: number;
34
+ slippageHundredthsBps?: number;
35
+ backendEndpoint?: string;
36
+ tokens?: Record<string, TokenInfo>;
37
+ }
38
+ /** Build a CubeConfig for the named network with optional overrides. */
39
+ export declare function getConfig(network: Network, overrides?: CubeConfigOverrides): CubeConfig;
40
+ export declare const CUBIC_POOL_SEED: Buffer<ArrayBuffer>;
41
+ export declare const BPT_MINT_SEED: Buffer<ArrayBuffer>;
42
+ export declare const STLD_HELPER_SEED: Buffer<ArrayBuffer>;
43
+ export declare const TREASURY_SEED: Buffer<ArrayBuffer>;
44
+ /** Contract-level constants mirrored from Rust. */
45
+ export declare const WEIGHT_SCALE = 10000;
46
+ export declare const MIN_WEIGHT = 100;
47
+ export declare const MAX_WEIGHT = 9900;
48
+ export declare const MIN_TOKENS = 2;
49
+ export declare const MAX_TOKENS = 10;
50
+ export declare const BPT_DECIMALS = 9;
51
+ export declare const SWAP_FEE_PRECISION = 1000000;
52
+ export declare const PROTOCOL_FEE_PRECISION = 10000;
53
+ export declare const MAX_SWAP_FEE_RATE = 100000;
54
+ export declare const MAX_PROTOCOL_FEE_RATE = 5000;
55
+ export declare const MINIMUM_INITIAL_BPT = 1000n;
56
+ export declare const SLIPPAGE_PRECISION = 1000000;
57
+ export declare const MIN_SLIPPAGE_HBPS = 10;
58
+ export type ProgramIdKind = "cubicPool" | "singleTokenLiquidity" | "protocolAdmin";
59
+ export declare function programId(cfg: CubeConfig, kind: ProgramIdKind): PublicKey;
60
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAoB,eAAe,EAAE,OAAO,EAAwB,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AAEzB;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,UAAU,CAAC;QAC1B,gEAAgE;QAChE,OAAO,EAAE,MAAM,CAAC;QAChB;;;;WAIG;QACH,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACpC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,mBAAwB,GAAG,UAAU,CAa3F;AAED,eAAO,MAAM,eAAe,qBAA4B,CAAC;AACzD,eAAO,MAAM,aAAa,qBAA0B,CAAC;AACrD,eAAO,MAAM,gBAAgB,qBAA6B,CAAC;AAC3D,eAAO,MAAM,aAAa,qBAA0B,CAAC;AAErD,mDAAmD;AACnD,eAAO,MAAM,YAAY,QAAS,CAAC;AACnC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,UAAU,OAAQ,CAAC;AAChC,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAC5C,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAC5C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,sBAAsB,GAAG,eAAe,CAAC;AAEnF,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,CAEzE"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MIN_SLIPPAGE_HBPS = exports.SLIPPAGE_PRECISION = exports.MINIMUM_INITIAL_BPT = exports.MAX_PROTOCOL_FEE_RATE = exports.MAX_SWAP_FEE_RATE = exports.PROTOCOL_FEE_PRECISION = exports.SWAP_FEE_PRECISION = exports.BPT_DECIMALS = exports.MAX_TOKENS = exports.MIN_TOKENS = exports.MAX_WEIGHT = exports.MIN_WEIGHT = exports.WEIGHT_SCALE = exports.TREASURY_SEED = exports.STLD_HELPER_SEED = exports.BPT_MINT_SEED = exports.CUBIC_POOL_SEED = void 0;
18
+ exports.getConfig = getConfig;
19
+ exports.programId = programId;
20
+ const networks_1 = require("./networks");
21
+ __exportStar(require("./networks"), exports);
22
+ __exportStar(require("./tokens"), exports);
23
+ /** Build a CubeConfig for the named network with optional overrides. */
24
+ function getConfig(network, overrides = {}) {
25
+ return {
26
+ network,
27
+ programs: networks_1.NETWORK_PROGRAMS[network],
28
+ defaults: {
29
+ rpcEndpoint: overrides.rpcEndpoint ?? networks_1.DEFAULT_RPC_ENDPOINT[network],
30
+ rpcCommitment: overrides.rpcCommitment ?? "confirmed",
31
+ cuLimit: overrides.cuLimit ?? 1400000,
32
+ slippageHundredthsBps: overrides.slippageHundredthsBps ?? 50000,
33
+ },
34
+ tokens: overrides.tokens,
35
+ backendEndpoint: overrides.backendEndpoint,
36
+ };
37
+ }
38
+ exports.CUBIC_POOL_SEED = Buffer.from("cubic_pool");
39
+ exports.BPT_MINT_SEED = Buffer.from("bpt_mint");
40
+ exports.STLD_HELPER_SEED = Buffer.from("stld_helper");
41
+ exports.TREASURY_SEED = Buffer.from("treasury");
42
+ /** Contract-level constants mirrored from Rust. */
43
+ exports.WEIGHT_SCALE = 10000; // 100 %
44
+ exports.MIN_WEIGHT = 100; // 1 %
45
+ exports.MAX_WEIGHT = 9900; // 99 %
46
+ exports.MIN_TOKENS = 2;
47
+ exports.MAX_TOKENS = 10;
48
+ exports.BPT_DECIMALS = 9;
49
+ exports.SWAP_FEE_PRECISION = 1000000; // 100 %
50
+ exports.PROTOCOL_FEE_PRECISION = 10000; // 100 %
51
+ exports.MAX_SWAP_FEE_RATE = 100000; // 10 %
52
+ exports.MAX_PROTOCOL_FEE_RATE = 5000; // 50 %
53
+ exports.MINIMUM_INITIAL_BPT = 1000n;
54
+ exports.SLIPPAGE_PRECISION = 1000000;
55
+ exports.MIN_SLIPPAGE_HBPS = 10; // 0.001 %
56
+ function programId(cfg, kind) {
57
+ return cfg.programs[kind];
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA0CA,8BAaC;AAwBD,8BAEC;AAhFD,yCAA8F;AAG9F,6CAA2B;AAC3B,2CAAyB;AAoCzB,wEAAwE;AACxE,SAAgB,SAAS,CAAC,OAAgB,EAAE,YAAiC,EAAE;IAC7E,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,2BAAgB,CAAC,OAAO,CAAC;QACnC,QAAQ,EAAE;YACR,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,+BAAoB,CAAC,OAAO,CAAC;YACnE,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,WAAW;YACrD,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,OAAS;YACvC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB,IAAI,KAAM;SACjE;QACD,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,eAAe,EAAE,SAAS,CAAC,eAAe;KAC3C,CAAC;AACJ,CAAC;AAEY,QAAA,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9C,QAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAErD,mDAAmD;AACtC,QAAA,YAAY,GAAG,KAAM,CAAC,CAAC,QAAQ;AAC/B,QAAA,UAAU,GAAG,GAAG,CAAC,CAAC,MAAM;AACxB,QAAA,UAAU,GAAG,IAAK,CAAC,CAAC,OAAO;AAC3B,QAAA,UAAU,GAAG,CAAC,CAAC;AACf,QAAA,UAAU,GAAG,EAAE,CAAC;AAChB,QAAA,YAAY,GAAG,CAAC,CAAC;AACjB,QAAA,kBAAkB,GAAG,OAAS,CAAC,CAAC,QAAQ;AACxC,QAAA,sBAAsB,GAAG,KAAM,CAAC,CAAC,QAAQ;AACzC,QAAA,iBAAiB,GAAG,MAAO,CAAC,CAAC,OAAO;AACpC,QAAA,qBAAqB,GAAG,IAAK,CAAC,CAAC,OAAO;AACtC,QAAA,mBAAmB,GAAG,KAAM,CAAC;AAC7B,QAAA,kBAAkB,GAAG,OAAS,CAAC;AAC/B,QAAA,iBAAiB,GAAG,EAAE,CAAC,CAAC,UAAU;AAI/C,SAAgB,SAAS,CAAC,GAAe,EAAE,IAAmB;IAC5D,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export type Network = "mainnet" | "devnet" | "localnet";
3
+ export interface NetworkPrograms {
4
+ cubicPool: PublicKey;
5
+ singleTokenLiquidity: PublicKey;
6
+ protocolAdmin: PublicKey;
7
+ }
8
+ export declare const NETWORK_PROGRAMS: Record<Network, NetworkPrograms>;
9
+ export declare const DEFAULT_RPC_ENDPOINT: Record<Network, string>;
10
+ //# sourceMappingURL=networks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,oBAAoB,EAAE,SAAS,CAAC;IAChC,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAgC7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAIxD,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_RPC_ENDPOINT = exports.NETWORK_PROGRAMS = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ exports.NETWORK_PROGRAMS = {
6
+ mainnet: {
7
+ cubicPool: new web3_js_1.PublicKey("8iQtGj9mcUfFUGaiCpPy89swC3s8YTC8FhVZWfgeZhwu"),
8
+ // TODO(mainnet): single_token_liquidity is NOT deployed on mainnet — this
9
+ // is the devnet program ID as a placeholder. Single-token deposit is
10
+ // disabled in the frontend. If/when stld ships on mainnet, replace this
11
+ // with the real mainnet program ID.
12
+ singleTokenLiquidity: new web3_js_1.PublicKey("7BpdUH1tzTSXLuQNo6YpjJ8Eagw8AkrS6cnkxiJdCFS2"),
13
+ protocolAdmin: new web3_js_1.PublicKey("3jiojHZbjJQ7QLMGSTjFwxVEmx4NtuRy34nLAmsJME81"),
14
+ },
15
+ devnet: {
16
+ cubicPool: new web3_js_1.PublicKey("8iQtGj9mcUfFUGaiCpPy89swC3s8YTC8FhVZWfgeZhwu"),
17
+ singleTokenLiquidity: new web3_js_1.PublicKey("7BpdUH1tzTSXLuQNo6YpjJ8Eagw8AkrS6cnkxiJdCFS2"),
18
+ protocolAdmin: new web3_js_1.PublicKey("3jiojHZbjJQ7QLMGSTjFwxVEmx4NtuRy34nLAmsJME81"),
19
+ },
20
+ localnet: {
21
+ cubicPool: new web3_js_1.PublicKey("8iQtGj9mcUfFUGaiCpPy89swC3s8YTC8FhVZWfgeZhwu"),
22
+ singleTokenLiquidity: new web3_js_1.PublicKey("7BpdUH1tzTSXLuQNo6YpjJ8Eagw8AkrS6cnkxiJdCFS2"),
23
+ protocolAdmin: new web3_js_1.PublicKey("3jiojHZbjJQ7QLMGSTjFwxVEmx4NtuRy34nLAmsJME81"),
24
+ },
25
+ };
26
+ exports.DEFAULT_RPC_ENDPOINT = {
27
+ mainnet: "https://api.mainnet-beta.solana.com",
28
+ devnet: "https://api.devnet.solana.com",
29
+ localnet: "http://127.0.0.1:8899",
30
+ };
31
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/config/networks.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAU/B,QAAA,gBAAgB,GAAqC;IAChE,OAAO,EAAE;QACP,SAAS,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;QACxE,0EAA0E;QAC1E,qEAAqE;QACrE,wEAAwE;QACxE,oCAAoC;QACpC,oBAAoB,EAAE,IAAI,mBAAS,CACjC,8CAA8C,CAC/C;QACD,aAAa,EAAE,IAAI,mBAAS,CAC1B,8CAA8C,CAC/C;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;QACxE,oBAAoB,EAAE,IAAI,mBAAS,CACjC,8CAA8C,CAC/C;QACD,aAAa,EAAE,IAAI,mBAAS,CAC1B,8CAA8C,CAC/C;KACF;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,IAAI,mBAAS,CAAC,8CAA8C,CAAC;QACxE,oBAAoB,EAAE,IAAI,mBAAS,CACjC,8CAA8C,CAC/C;QACD,aAAa,EAAE,IAAI,mBAAS,CAC1B,8CAA8C,CAC/C;KACF;CACF,CAAC;AAEW,QAAA,oBAAoB,GAA4B;IAC3D,OAAO,EAAE,qCAAqC;IAC9C,MAAM,EAAE,+BAA+B;IACvC,QAAQ,EAAE,uBAAuB;CAClC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ /** Metadata describing a token. Populated by backend or local registry. */
3
+ export interface TokenInfo {
4
+ mint: PublicKey;
5
+ symbol: string;
6
+ name: string;
7
+ decimals: number;
8
+ logoUri?: string;
9
+ coingeckoId?: string;
10
+ }
11
+ /**
12
+ * Local fallback registry of well-known tokens. The backend registry takes
13
+ * precedence; this is used when the backend is unreachable.
14
+ */
15
+ export declare const KNOWN_TOKENS: Record<string, Omit<TokenInfo, "mint"> & {
16
+ mint: string;
17
+ }>;
18
+ export declare function resolveKnownToken(mint: string): TokenInfo | undefined;
19
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CA0BnF,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAOrE"}