@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,48 @@
1
+ /**
2
+ * @cube/sdk — client library for the Cubic Pool AMM on Solana.
3
+ *
4
+ * Entry point barrel. Most consumers will want to import from this root:
5
+ *
6
+ * ```ts
7
+ * import { CubicPoolClient, CubeBackendClient, getConfig } from "@cube/sdk";
8
+ *
9
+ * const cfg = getConfig("mainnet", { backendEndpoint: "https://api.cube.fi" });
10
+ * const pool = new CubicPoolClient({ config: cfg, poolAddress, rpc: { endpoint: cfg.defaults.rpcEndpoint } });
11
+ * const info = await pool.sync();
12
+ * if (info.ok) console.log(info.data.tokens.map(t => t.metadata?.symbol));
13
+ * ```
14
+ */
15
+ export * from "./config";
16
+ export * from "./types";
17
+ export * from "./utils";
18
+ export * from "./math";
19
+ export * from "./parsers";
20
+ export * from "./clients";
21
+ export * from "./idl";
22
+ export { getConfig, programId, CUBIC_POOL_SEED, BPT_MINT_SEED, STLD_HELPER_SEED, TREASURY_SEED, WEIGHT_SCALE, MIN_WEIGHT, MAX_WEIGHT, MIN_TOKENS, MAX_TOKENS, BPT_DECIMALS, SWAP_FEE_PRECISION, PROTOCOL_FEE_PRECISION, MAX_SWAP_FEE_RATE, MAX_PROTOCOL_FEE_RATE, MINIMUM_INITIAL_BPT, SLIPPAGE_PRECISION, MIN_SLIPPAGE_HBPS, } from "./config";
23
+ export { NETWORK_PROGRAMS, DEFAULT_RPC_ENDPOINT } from "./config/networks";
24
+ export { KNOWN_TOKENS, resolveKnownToken } from "./config/tokens";
25
+ export { ok, err } from "./types/result";
26
+ export { ONE, mulDown, mulUp, divDown, divUp, complement, weightToFp, } from "./math/fixedPoint";
27
+ export { lnFp, expFp, powFp } from "./math/logExp";
28
+ export { calcOutGivenIn, calcBptOutGivenExactTokensIn, calcTokensOutGivenBptIn, calcSpotOut, } from "./math/cubicMath";
29
+ export { validateWeights, calcSpotPrice } from "./math/weightedMath";
30
+ export { capDepositAmountsToLpRatio, computeAllocations, computeTwoTokenOptimalAllocations, } from "./math/singleToken";
31
+ export { applySlippage, applySwapFee, lpBalances, priceImpactHbps } from "./math/slippage";
32
+ export { RpcClient } from "./clients/RpcClient";
33
+ export { CubeBackendClient } from "./clients/CubeBackendClient";
34
+ export { CubicPoolClient } from "./clients/CubicPoolClient";
35
+ export { SingleTokenDepositClient } from "./clients/SingleTokenDepositClient";
36
+ export { PoolFactoryClient } from "./clients/PoolFactoryClient";
37
+ export { AdminClient } from "./clients/AdminClient";
38
+ export { buildSwapIx, buildSwapTx, buildAddLiquidityIx, buildAddLiquidityTx, buildRemoveLiquidityIx, buildRemoveLiquidityTx, buildSingleTokenDepositIx, buildSingleTokenDepositTx, buildInitializeConfigIx, buildInitializeCubicPoolIx, buildDeployPoolTx, } from "./clients/tx-builders";
39
+ export { decodePoolAccount, POOL_DISCRIMINATOR_LEN } from "./parsers/poolAccount";
40
+ export { decodeMintAccount } from "./parsers/mintAccount";
41
+ export { parseCubicPoolEvents } from "./parsers/events";
42
+ export { BorshReader } from "./parsers/borsh";
43
+ export type { CubeConfig, CubeConfigOverrides, ProgramIdKind, Network, NetworkPrograms, TokenInfo, } from "./config";
44
+ export type { SdkResult, SdkError, SdkErrorCode, PoolTokenInfo, PoolInfo, PoolSummary, SwapParams, SwapQuote, AddLiquidityParams, RemoveLiquidityParams, SingleTokenDepositParams, SingleTokenDepositQuote, BuiltTx, DeployPoolParams, CubicPoolEvent, PoolInitializedEvent, SwapEvent, LiquidityAddedEvent, LiquidityRemovedEvent, ProtocolFeesCollectedEvent, PoolEnabledUpdatedEvent, SwapsEnabledUpdatedEvent, SingleTokenDepositEvent, UnknownEvent, } from "./types";
45
+ export type { AllocationResult, } from "./math/singleToken";
46
+ export type { RawPoolAccount, RawMintAccount, } from "./parsers";
47
+ export type { RpcClientParams, CubeBackendClientParams, StatsKind, StatsWindow, StatsSeriesPoint, StatsSeries, PriceMap, CubicPoolClientParams, SingleTokenDepositClientParams, PoolFactoryClientParams, InitializeConfigParams, } from "./clients";
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) 2026 Endgame AMM DEX Foundation.
4
+ // See LICENSE at the repository root.
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.CubeBackendClient = exports.RpcClient = exports.priceImpactHbps = exports.lpBalances = exports.applySwapFee = exports.applySlippage = exports.computeTwoTokenOptimalAllocations = exports.computeAllocations = exports.capDepositAmountsToLpRatio = exports.calcSpotPrice = exports.validateWeights = exports.calcSpotOut = exports.calcTokensOutGivenBptIn = exports.calcBptOutGivenExactTokensIn = exports.calcOutGivenIn = exports.powFp = exports.expFp = exports.lnFp = exports.weightToFp = exports.complement = exports.divUp = exports.divDown = exports.mulUp = exports.mulDown = exports.ONE = exports.err = exports.ok = exports.resolveKnownToken = exports.KNOWN_TOKENS = exports.DEFAULT_RPC_ENDPOINT = exports.NETWORK_PROGRAMS = 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 = exports.programId = exports.getConfig = void 0;
21
+ exports.BorshReader = exports.parseCubicPoolEvents = exports.decodeMintAccount = exports.POOL_DISCRIMINATOR_LEN = exports.decodePoolAccount = exports.buildDeployPoolTx = exports.buildInitializeCubicPoolIx = exports.buildInitializeConfigIx = exports.buildSingleTokenDepositTx = exports.buildSingleTokenDepositIx = exports.buildRemoveLiquidityTx = exports.buildRemoveLiquidityIx = exports.buildAddLiquidityTx = exports.buildAddLiquidityIx = exports.buildSwapTx = exports.buildSwapIx = exports.AdminClient = exports.PoolFactoryClient = exports.SingleTokenDepositClient = exports.CubicPoolClient = void 0;
22
+ /**
23
+ * @cube/sdk — client library for the Cubic Pool AMM on Solana.
24
+ *
25
+ * Entry point barrel. Most consumers will want to import from this root:
26
+ *
27
+ * ```ts
28
+ * import { CubicPoolClient, CubeBackendClient, getConfig } from "@cube/sdk";
29
+ *
30
+ * const cfg = getConfig("mainnet", { backendEndpoint: "https://api.cube.fi" });
31
+ * const pool = new CubicPoolClient({ config: cfg, poolAddress, rpc: { endpoint: cfg.defaults.rpcEndpoint } });
32
+ * const info = await pool.sync();
33
+ * if (info.ok) console.log(info.data.tokens.map(t => t.metadata?.symbol));
34
+ * ```
35
+ */
36
+ __exportStar(require("./config"), exports);
37
+ __exportStar(require("./types"), exports);
38
+ __exportStar(require("./utils"), exports);
39
+ __exportStar(require("./math"), exports);
40
+ __exportStar(require("./parsers"), exports);
41
+ __exportStar(require("./clients"), exports);
42
+ __exportStar(require("./idl"), exports);
43
+ // Explicit runtime re-exports keep CommonJS output statically discoverable for
44
+ // Vite/Rollup consumers that import named exports from the package root.
45
+ var config_1 = require("./config");
46
+ Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_1.getConfig; } });
47
+ Object.defineProperty(exports, "programId", { enumerable: true, get: function () { return config_1.programId; } });
48
+ Object.defineProperty(exports, "CUBIC_POOL_SEED", { enumerable: true, get: function () { return config_1.CUBIC_POOL_SEED; } });
49
+ Object.defineProperty(exports, "BPT_MINT_SEED", { enumerable: true, get: function () { return config_1.BPT_MINT_SEED; } });
50
+ Object.defineProperty(exports, "STLD_HELPER_SEED", { enumerable: true, get: function () { return config_1.STLD_HELPER_SEED; } });
51
+ Object.defineProperty(exports, "TREASURY_SEED", { enumerable: true, get: function () { return config_1.TREASURY_SEED; } });
52
+ Object.defineProperty(exports, "WEIGHT_SCALE", { enumerable: true, get: function () { return config_1.WEIGHT_SCALE; } });
53
+ Object.defineProperty(exports, "MIN_WEIGHT", { enumerable: true, get: function () { return config_1.MIN_WEIGHT; } });
54
+ Object.defineProperty(exports, "MAX_WEIGHT", { enumerable: true, get: function () { return config_1.MAX_WEIGHT; } });
55
+ Object.defineProperty(exports, "MIN_TOKENS", { enumerable: true, get: function () { return config_1.MIN_TOKENS; } });
56
+ Object.defineProperty(exports, "MAX_TOKENS", { enumerable: true, get: function () { return config_1.MAX_TOKENS; } });
57
+ Object.defineProperty(exports, "BPT_DECIMALS", { enumerable: true, get: function () { return config_1.BPT_DECIMALS; } });
58
+ Object.defineProperty(exports, "SWAP_FEE_PRECISION", { enumerable: true, get: function () { return config_1.SWAP_FEE_PRECISION; } });
59
+ Object.defineProperty(exports, "PROTOCOL_FEE_PRECISION", { enumerable: true, get: function () { return config_1.PROTOCOL_FEE_PRECISION; } });
60
+ Object.defineProperty(exports, "MAX_SWAP_FEE_RATE", { enumerable: true, get: function () { return config_1.MAX_SWAP_FEE_RATE; } });
61
+ Object.defineProperty(exports, "MAX_PROTOCOL_FEE_RATE", { enumerable: true, get: function () { return config_1.MAX_PROTOCOL_FEE_RATE; } });
62
+ Object.defineProperty(exports, "MINIMUM_INITIAL_BPT", { enumerable: true, get: function () { return config_1.MINIMUM_INITIAL_BPT; } });
63
+ Object.defineProperty(exports, "SLIPPAGE_PRECISION", { enumerable: true, get: function () { return config_1.SLIPPAGE_PRECISION; } });
64
+ Object.defineProperty(exports, "MIN_SLIPPAGE_HBPS", { enumerable: true, get: function () { return config_1.MIN_SLIPPAGE_HBPS; } });
65
+ var networks_1 = require("./config/networks");
66
+ Object.defineProperty(exports, "NETWORK_PROGRAMS", { enumerable: true, get: function () { return networks_1.NETWORK_PROGRAMS; } });
67
+ Object.defineProperty(exports, "DEFAULT_RPC_ENDPOINT", { enumerable: true, get: function () { return networks_1.DEFAULT_RPC_ENDPOINT; } });
68
+ var tokens_1 = require("./config/tokens");
69
+ Object.defineProperty(exports, "KNOWN_TOKENS", { enumerable: true, get: function () { return tokens_1.KNOWN_TOKENS; } });
70
+ Object.defineProperty(exports, "resolveKnownToken", { enumerable: true, get: function () { return tokens_1.resolveKnownToken; } });
71
+ var result_1 = require("./types/result");
72
+ Object.defineProperty(exports, "ok", { enumerable: true, get: function () { return result_1.ok; } });
73
+ Object.defineProperty(exports, "err", { enumerable: true, get: function () { return result_1.err; } });
74
+ var fixedPoint_1 = require("./math/fixedPoint");
75
+ Object.defineProperty(exports, "ONE", { enumerable: true, get: function () { return fixedPoint_1.ONE; } });
76
+ Object.defineProperty(exports, "mulDown", { enumerable: true, get: function () { return fixedPoint_1.mulDown; } });
77
+ Object.defineProperty(exports, "mulUp", { enumerable: true, get: function () { return fixedPoint_1.mulUp; } });
78
+ Object.defineProperty(exports, "divDown", { enumerable: true, get: function () { return fixedPoint_1.divDown; } });
79
+ Object.defineProperty(exports, "divUp", { enumerable: true, get: function () { return fixedPoint_1.divUp; } });
80
+ Object.defineProperty(exports, "complement", { enumerable: true, get: function () { return fixedPoint_1.complement; } });
81
+ Object.defineProperty(exports, "weightToFp", { enumerable: true, get: function () { return fixedPoint_1.weightToFp; } });
82
+ var logExp_1 = require("./math/logExp");
83
+ Object.defineProperty(exports, "lnFp", { enumerable: true, get: function () { return logExp_1.lnFp; } });
84
+ Object.defineProperty(exports, "expFp", { enumerable: true, get: function () { return logExp_1.expFp; } });
85
+ Object.defineProperty(exports, "powFp", { enumerable: true, get: function () { return logExp_1.powFp; } });
86
+ var cubicMath_1 = require("./math/cubicMath");
87
+ Object.defineProperty(exports, "calcOutGivenIn", { enumerable: true, get: function () { return cubicMath_1.calcOutGivenIn; } });
88
+ Object.defineProperty(exports, "calcBptOutGivenExactTokensIn", { enumerable: true, get: function () { return cubicMath_1.calcBptOutGivenExactTokensIn; } });
89
+ Object.defineProperty(exports, "calcTokensOutGivenBptIn", { enumerable: true, get: function () { return cubicMath_1.calcTokensOutGivenBptIn; } });
90
+ Object.defineProperty(exports, "calcSpotOut", { enumerable: true, get: function () { return cubicMath_1.calcSpotOut; } });
91
+ var weightedMath_1 = require("./math/weightedMath");
92
+ Object.defineProperty(exports, "validateWeights", { enumerable: true, get: function () { return weightedMath_1.validateWeights; } });
93
+ Object.defineProperty(exports, "calcSpotPrice", { enumerable: true, get: function () { return weightedMath_1.calcSpotPrice; } });
94
+ var singleToken_1 = require("./math/singleToken");
95
+ Object.defineProperty(exports, "capDepositAmountsToLpRatio", { enumerable: true, get: function () { return singleToken_1.capDepositAmountsToLpRatio; } });
96
+ Object.defineProperty(exports, "computeAllocations", { enumerable: true, get: function () { return singleToken_1.computeAllocations; } });
97
+ Object.defineProperty(exports, "computeTwoTokenOptimalAllocations", { enumerable: true, get: function () { return singleToken_1.computeTwoTokenOptimalAllocations; } });
98
+ var slippage_1 = require("./math/slippage");
99
+ Object.defineProperty(exports, "applySlippage", { enumerable: true, get: function () { return slippage_1.applySlippage; } });
100
+ Object.defineProperty(exports, "applySwapFee", { enumerable: true, get: function () { return slippage_1.applySwapFee; } });
101
+ Object.defineProperty(exports, "lpBalances", { enumerable: true, get: function () { return slippage_1.lpBalances; } });
102
+ Object.defineProperty(exports, "priceImpactHbps", { enumerable: true, get: function () { return slippage_1.priceImpactHbps; } });
103
+ var RpcClient_1 = require("./clients/RpcClient");
104
+ Object.defineProperty(exports, "RpcClient", { enumerable: true, get: function () { return RpcClient_1.RpcClient; } });
105
+ var CubeBackendClient_1 = require("./clients/CubeBackendClient");
106
+ Object.defineProperty(exports, "CubeBackendClient", { enumerable: true, get: function () { return CubeBackendClient_1.CubeBackendClient; } });
107
+ var CubicPoolClient_1 = require("./clients/CubicPoolClient");
108
+ Object.defineProperty(exports, "CubicPoolClient", { enumerable: true, get: function () { return CubicPoolClient_1.CubicPoolClient; } });
109
+ var SingleTokenDepositClient_1 = require("./clients/SingleTokenDepositClient");
110
+ Object.defineProperty(exports, "SingleTokenDepositClient", { enumerable: true, get: function () { return SingleTokenDepositClient_1.SingleTokenDepositClient; } });
111
+ var PoolFactoryClient_1 = require("./clients/PoolFactoryClient");
112
+ Object.defineProperty(exports, "PoolFactoryClient", { enumerable: true, get: function () { return PoolFactoryClient_1.PoolFactoryClient; } });
113
+ var AdminClient_1 = require("./clients/AdminClient");
114
+ Object.defineProperty(exports, "AdminClient", { enumerable: true, get: function () { return AdminClient_1.AdminClient; } });
115
+ var tx_builders_1 = require("./clients/tx-builders");
116
+ Object.defineProperty(exports, "buildSwapIx", { enumerable: true, get: function () { return tx_builders_1.buildSwapIx; } });
117
+ Object.defineProperty(exports, "buildSwapTx", { enumerable: true, get: function () { return tx_builders_1.buildSwapTx; } });
118
+ Object.defineProperty(exports, "buildAddLiquidityIx", { enumerable: true, get: function () { return tx_builders_1.buildAddLiquidityIx; } });
119
+ Object.defineProperty(exports, "buildAddLiquidityTx", { enumerable: true, get: function () { return tx_builders_1.buildAddLiquidityTx; } });
120
+ Object.defineProperty(exports, "buildRemoveLiquidityIx", { enumerable: true, get: function () { return tx_builders_1.buildRemoveLiquidityIx; } });
121
+ Object.defineProperty(exports, "buildRemoveLiquidityTx", { enumerable: true, get: function () { return tx_builders_1.buildRemoveLiquidityTx; } });
122
+ Object.defineProperty(exports, "buildSingleTokenDepositIx", { enumerable: true, get: function () { return tx_builders_1.buildSingleTokenDepositIx; } });
123
+ Object.defineProperty(exports, "buildSingleTokenDepositTx", { enumerable: true, get: function () { return tx_builders_1.buildSingleTokenDepositTx; } });
124
+ Object.defineProperty(exports, "buildInitializeConfigIx", { enumerable: true, get: function () { return tx_builders_1.buildInitializeConfigIx; } });
125
+ Object.defineProperty(exports, "buildInitializeCubicPoolIx", { enumerable: true, get: function () { return tx_builders_1.buildInitializeCubicPoolIx; } });
126
+ Object.defineProperty(exports, "buildDeployPoolTx", { enumerable: true, get: function () { return tx_builders_1.buildDeployPoolTx; } });
127
+ var poolAccount_1 = require("./parsers/poolAccount");
128
+ Object.defineProperty(exports, "decodePoolAccount", { enumerable: true, get: function () { return poolAccount_1.decodePoolAccount; } });
129
+ Object.defineProperty(exports, "POOL_DISCRIMINATOR_LEN", { enumerable: true, get: function () { return poolAccount_1.POOL_DISCRIMINATOR_LEN; } });
130
+ var mintAccount_1 = require("./parsers/mintAccount");
131
+ Object.defineProperty(exports, "decodeMintAccount", { enumerable: true, get: function () { return mintAccount_1.decodeMintAccount; } });
132
+ var events_1 = require("./parsers/events");
133
+ Object.defineProperty(exports, "parseCubicPoolEvents", { enumerable: true, get: function () { return events_1.parseCubicPoolEvents; } });
134
+ var borsh_1 = require("./parsers/borsh");
135
+ Object.defineProperty(exports, "BorshReader", { enumerable: true, get: function () { return borsh_1.BorshReader; } });
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Port of `CubicMath::calc_out_given_in` from
3
+ * `contracts/programs/cubic-pool/src/math/cubic_math.rs`.
4
+ *
5
+ * Formula: aO = bO * (1 - (bI / (bI + aI))^(wI / wO))
6
+ *
7
+ * Inputs are u64 raw amounts (bigint here to avoid overflow). Decimals
8
+ * cancel in the ratio bI/(bI+aI), so no scaling needed.
9
+ */
10
+ export declare function calcOutGivenIn(params: {
11
+ virtualBalanceIn: bigint;
12
+ weightInBps: bigint;
13
+ virtualBalanceOut: bigint;
14
+ weightOutBps: bigint;
15
+ amountIn: bigint;
16
+ actualBalanceOut: bigint;
17
+ }): bigint;
18
+ /**
19
+ * Port of `CubicMath::calc_bpt_out_given_exact_tokens_in`.
20
+ * Proportional join: `bpt = total_supply * min(amount_i / actual_balance_i)`
21
+ * across tokens with `actual_balance_i > 0`.
22
+ */
23
+ export declare function calcBptOutGivenExactTokensIn(actualBalances: bigint[], amountsIn: bigint[], bptTotalSupply: bigint): bigint;
24
+ /**
25
+ * Port of `CubicMath::calc_tokens_out_given_bpt_in`. Proportional exit.
26
+ */
27
+ export declare function calcTokensOutGivenBptIn(actualBalances: bigint[], bptAmount: bigint, bptTotalSupply: bigint): bigint[];
28
+ /**
29
+ * Spot amount-out: aO = aI * (bO * wI) / (bI * wO). Always ≥
30
+ * `calcOutGivenIn` for the same inputs (curve slippage drags the real
31
+ * value below spot). Useful for UI "price impact" calculations.
32
+ */
33
+ export declare function calcSpotOut(params: {
34
+ virtualBalanceIn: bigint;
35
+ weightInBps: bigint;
36
+ virtualBalanceOut: bigint;
37
+ weightOutBps: bigint;
38
+ amountIn: bigint;
39
+ }): bigint;
40
+ //# sourceMappingURL=cubicMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubicMath.d.ts","sourceRoot":"","sources":["../../src/math/cubicMath.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAgBT;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,cAAc,EAAE,MAAM,GACrB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,MAAM,EAAE,CAIV;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAIT"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcOutGivenIn = calcOutGivenIn;
4
+ exports.calcBptOutGivenExactTokensIn = calcBptOutGivenExactTokensIn;
5
+ exports.calcTokensOutGivenBptIn = calcTokensOutGivenBptIn;
6
+ exports.calcSpotOut = calcSpotOut;
7
+ const fixedPoint_1 = require("./fixedPoint");
8
+ const logExp_1 = require("./logExp");
9
+ /**
10
+ * Port of `CubicMath::calc_out_given_in` from
11
+ * `contracts/programs/cubic-pool/src/math/cubic_math.rs`.
12
+ *
13
+ * Formula: aO = bO * (1 - (bI / (bI + aI))^(wI / wO))
14
+ *
15
+ * Inputs are u64 raw amounts (bigint here to avoid overflow). Decimals
16
+ * cancel in the ratio bI/(bI+aI), so no scaling needed.
17
+ */
18
+ function calcOutGivenIn(params) {
19
+ const { virtualBalanceIn, weightInBps, virtualBalanceOut, weightOutBps, amountIn, actualBalanceOut } = params;
20
+ const denom = virtualBalanceIn + amountIn;
21
+ const base = (0, fixedPoint_1.divUp)(virtualBalanceIn, denom);
22
+ const exp = (0, fixedPoint_1.divDown)((0, fixedPoint_1.weightToFp)(weightInBps), (0, fixedPoint_1.weightToFp)(weightOutBps));
23
+ let power = (0, logExp_1.powFp)(base, exp);
24
+ // Match Rust's +1 bias + clamp to ONE.
25
+ power = power + 1n;
26
+ if (power > fixedPoint_1.ONE)
27
+ power = fixedPoint_1.ONE;
28
+ const comp = (0, fixedPoint_1.complement)(power);
29
+ const out = (0, fixedPoint_1.mulDown)(virtualBalanceOut, comp);
30
+ if (out > actualBalanceOut) {
31
+ throw new Error("cubicMath: amount out exceeds actual balance");
32
+ }
33
+ return out;
34
+ }
35
+ /**
36
+ * Port of `CubicMath::calc_bpt_out_given_exact_tokens_in`.
37
+ * Proportional join: `bpt = total_supply * min(amount_i / actual_balance_i)`
38
+ * across tokens with `actual_balance_i > 0`.
39
+ */
40
+ function calcBptOutGivenExactTokensIn(actualBalances, amountsIn, bptTotalSupply) {
41
+ if (actualBalances.length !== amountsIn.length) {
42
+ throw new Error("cubicMath: balances/amounts length mismatch");
43
+ }
44
+ let ratioMin = null;
45
+ for (let i = 0; i < actualBalances.length; i++) {
46
+ if (actualBalances[i] === 0n)
47
+ continue;
48
+ const ratio = (0, fixedPoint_1.divDown)(amountsIn[i], actualBalances[i]);
49
+ ratioMin = ratioMin === null || ratio < ratioMin ? ratio : ratioMin;
50
+ }
51
+ if (ratioMin === null)
52
+ throw new Error("cubicMath: no live tokens");
53
+ return (bptTotalSupply * ratioMin) / fixedPoint_1.ONE;
54
+ }
55
+ /**
56
+ * Port of `CubicMath::calc_tokens_out_given_bpt_in`. Proportional exit.
57
+ */
58
+ function calcTokensOutGivenBptIn(actualBalances, bptAmount, bptTotalSupply) {
59
+ if (bptTotalSupply === 0n)
60
+ throw new Error("cubicMath: zero total supply");
61
+ const ratio = (0, fixedPoint_1.divDown)(bptAmount, bptTotalSupply);
62
+ return actualBalances.map((bal) => (0, fixedPoint_1.mulDown)(bal, ratio));
63
+ }
64
+ /**
65
+ * Spot amount-out: aO = aI * (bO * wI) / (bI * wO). Always ≥
66
+ * `calcOutGivenIn` for the same inputs (curve slippage drags the real
67
+ * value below spot). Useful for UI "price impact" calculations.
68
+ */
69
+ function calcSpotOut(params) {
70
+ const { virtualBalanceIn, weightInBps, virtualBalanceOut, weightOutBps, amountIn } = params;
71
+ if (virtualBalanceIn === 0n || weightOutBps === 0n)
72
+ return 0n;
73
+ return (amountIn * virtualBalanceOut * weightInBps) / (virtualBalanceIn * weightOutBps);
74
+ }
75
+ //# sourceMappingURL=cubicMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubicMath.js","sourceRoot":"","sources":["../../src/math/cubicMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Fixed-point arithmetic with 1e18 precision. Port of
3
+ * `contracts/programs/cubic-pool/src/math/fixed_point.rs`. All functions
4
+ * operate on bigint to match the Rust u128/i128 semantics exactly.
5
+ */
6
+ export declare const ONE = 1000000000000000000n;
7
+ export declare function mulDown(a: bigint, b: bigint): bigint;
8
+ export declare function mulUp(a: bigint, b: bigint): bigint;
9
+ export declare function divDown(a: bigint, b: bigint): bigint;
10
+ export declare function divUp(a: bigint, b: bigint): bigint;
11
+ export declare function complement(x: bigint): bigint;
12
+ /** Convert bps → 1e18 fixed point. 5000 bps → 5e17. */
13
+ export declare function weightToFp(weightBps: bigint | number): bigint;
14
+ //# sourceMappingURL=fixedPoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixedPoint.d.ts","sourceRoot":"","sources":["../../src/math/fixedPoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,GAAG,uBAA6B,CAAC;AAE9C,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAG7D"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Fixed-point arithmetic with 1e18 precision. Port of
4
+ * `contracts/programs/cubic-pool/src/math/fixed_point.rs`. All functions
5
+ * operate on bigint to match the Rust u128/i128 semantics exactly.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ONE = void 0;
9
+ exports.mulDown = mulDown;
10
+ exports.mulUp = mulUp;
11
+ exports.divDown = divDown;
12
+ exports.divUp = divUp;
13
+ exports.complement = complement;
14
+ exports.weightToFp = weightToFp;
15
+ exports.ONE = 1000000000000000000n; // 1e18
16
+ function mulDown(a, b) {
17
+ const product = a * b;
18
+ return product / exports.ONE;
19
+ }
20
+ function mulUp(a, b) {
21
+ const product = a * b;
22
+ if (product === 0n)
23
+ return 0n;
24
+ return (product - 1n) / exports.ONE + 1n;
25
+ }
26
+ function divDown(a, b) {
27
+ if (b === 0n)
28
+ throw new Error("fixedPoint.divDown: divide by zero");
29
+ return (a * exports.ONE) / b;
30
+ }
31
+ function divUp(a, b) {
32
+ if (b === 0n)
33
+ throw new Error("fixedPoint.divUp: divide by zero");
34
+ if (a === 0n)
35
+ return 0n;
36
+ return (a * exports.ONE - 1n) / b + 1n;
37
+ }
38
+ function complement(x) {
39
+ return x < exports.ONE ? exports.ONE - x : 0n;
40
+ }
41
+ /** Convert bps → 1e18 fixed point. 5000 bps → 5e17. */
42
+ function weightToFp(weightBps) {
43
+ const w = typeof weightBps === "number" ? BigInt(weightBps) : weightBps;
44
+ return (w * exports.ONE) / 10000n;
45
+ }
46
+ //# sourceMappingURL=fixedPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixedPoint.js","sourceRoot":"","sources":["../../src/math/fixedPoint.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,0BAGC;AAED,sBAIC;AAED,0BAGC;AAED,sBAIC;AAED,gCAEC;AAGD,gCAGC;AAhCY,QAAA,GAAG,GAAG,oBAA0B,CAAC,CAAC,OAAO;AAEtD,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,OAAO,GAAG,WAAG,CAAC;AACvB,CAAC;AAED,SAAgB,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,WAAG,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACpE,OAAO,CAAC,CAAC,GAAG,WAAG,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,CAAC,GAAG,WAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACjC,CAAC;AAED,SAAgB,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC,GAAG,WAAG,CAAC,CAAC,CAAC,WAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,uDAAuD;AACvD,SAAgB,UAAU,CAAC,SAA0B;IACnD,MAAM,CAAC,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,OAAO,CAAC,CAAC,GAAG,WAAG,CAAC,GAAG,MAAO,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./fixedPoint";
2
+ export * from "./logExp";
3
+ export * from "./cubicMath";
4
+ export * from "./weightedMath";
5
+ export * from "./singleToken";
6
+ export * from "./slippage";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,23 @@
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
+ __exportStar(require("./fixedPoint"), exports);
18
+ __exportStar(require("./logExp"), exports);
19
+ __exportStar(require("./cubicMath"), exports);
20
+ __exportStar(require("./weightedMath"), exports);
21
+ __exportStar(require("./singleToken"), exports);
22
+ __exportStar(require("./slippage"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fixed-point ln/exp/pow over 1e18 precision. Port of
3
+ * `contracts/programs/cubic-pool/src/math/log_exp_math.rs` via bigint —
4
+ * results match the Rust version modulo identical rounding.
5
+ *
6
+ * Intended for off-chain quoting; on-chain calls go through cubic-pool's
7
+ * own implementation.
8
+ */
9
+ /** Natural logarithm. Accepts x > 0 in 1e18 fp, returns signed i128 in 1e18 fp. */
10
+ export declare function lnFp(x: bigint): bigint;
11
+ /** e^x. Accepts signed i128 1e18 fp, returns u128 1e18 fp. */
12
+ export declare function expFp(x: bigint): bigint;
13
+ /** Fixed-point pow: x^y where both are 1e18 fp. */
14
+ export declare function powFp(base: bigint, exponent: bigint): bigint;
15
+ //# sourceMappingURL=logExp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logExp.d.ts","sourceRoot":"","sources":["../../src/math/logExp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,mFAAmF;AACnF,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQtC;AA0BD,8DAA8D;AAC9D,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAsBvC;AAED,mDAAmD;AACnD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO5D"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Fixed-point ln/exp/pow over 1e18 precision. Port of
4
+ * `contracts/programs/cubic-pool/src/math/log_exp_math.rs` via bigint —
5
+ * results match the Rust version modulo identical rounding.
6
+ *
7
+ * Intended for off-chain quoting; on-chain calls go through cubic-pool's
8
+ * own implementation.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.lnFp = lnFp;
12
+ exports.expFp = expFp;
13
+ exports.powFp = powFp;
14
+ const ONE = 1000000000000000000n;
15
+ const TWO = 2n * ONE;
16
+ const LN2 = 693147180559945309n; // ln(2) * 1e18
17
+ /** Natural logarithm. Accepts x > 0 in 1e18 fp, returns signed i128 in 1e18 fp. */
18
+ function lnFp(x) {
19
+ if (x <= 0n)
20
+ throw new Error("logExp.ln: x must be positive");
21
+ if (x === ONE)
22
+ return 0n;
23
+ if (x < ONE) {
24
+ const inv = (ONE * ONE + x - 1n) / x;
25
+ return -lnPos(inv);
26
+ }
27
+ return lnPos(x);
28
+ }
29
+ function lnPos(x) {
30
+ let val = x;
31
+ let acc = 0n;
32
+ while (val >= TWO) {
33
+ acc += LN2;
34
+ val /= 2n;
35
+ }
36
+ const y = val - ONE;
37
+ if (y === 0n)
38
+ return acc;
39
+ // Taylor series: ln(1+y) = y - y^2/2 + y^3/3 - ...
40
+ let term = y;
41
+ let sum = y;
42
+ let sign = -1n;
43
+ for (let k = 2n; k <= 30n; k++) {
44
+ term = (term * y) / ONE;
45
+ const tk = term / k;
46
+ sum = sign < 0n ? sum - tk : sum + tk;
47
+ sign = -sign;
48
+ if (tk === 0n)
49
+ break;
50
+ }
51
+ return acc + sum;
52
+ }
53
+ /** e^x. Accepts signed i128 1e18 fp, returns u128 1e18 fp. */
54
+ function expFp(x) {
55
+ if (x === 0n)
56
+ return ONE;
57
+ if (x < 0n) {
58
+ const pos = expFp(-x);
59
+ return (ONE * ONE) / pos;
60
+ }
61
+ let ux = x;
62
+ let k = 0n;
63
+ while (ux >= LN2) {
64
+ ux -= LN2;
65
+ k += 1n;
66
+ }
67
+ // Taylor series: e^r = 1 + r + r^2/2! + ...
68
+ let sum = ONE;
69
+ let term = ONE;
70
+ for (let i = 1n; i <= 30n; i++) {
71
+ term = (term * ux) / ONE;
72
+ term = term / i;
73
+ sum += term;
74
+ if (term === 0n)
75
+ break;
76
+ }
77
+ return sum << BigInt(k);
78
+ }
79
+ /** Fixed-point pow: x^y where both are 1e18 fp. */
80
+ function powFp(base, exponent) {
81
+ if (exponent === 0n)
82
+ return ONE;
83
+ if (base === ONE)
84
+ return ONE;
85
+ if (base === 0n)
86
+ return 0n;
87
+ const l = lnFp(base);
88
+ const prod = (exponent * (l < 0n ? -l : l)) / ONE;
89
+ return l < 0n ? expFp(-prod) : expFp(prod);
90
+ }
91
+ //# sourceMappingURL=logExp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logExp.js","sourceRoot":"","sources":["../../src/math/logExp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface AllocationResult {
2
+ /** Per-token integer amount allocations; sum = amountIn. */
3
+ allocations: bigint[];
4
+ /** Scaled W values, for inspection/debugging. */
5
+ wScaled: bigint[];
6
+ /** Sum of wScaled. */
7
+ sumW: bigint;
8
+ }
9
+ /**
10
+ * Port of stld `compute_allocations` from
11
+ * `contracts/programs/single-token-liquidity/src/math.rs`.
12
+ *
13
+ * W_i = weight_i * factBalance_i / virtBalance_i (dimensionless concentration).
14
+ * share_i = W_i / ΣW. amount_alloc[i] = amountIn * share_i.
15
+ *
16
+ * Integer truncation of per-token amounts routes the remainder to the
17
+ * input-token slot so Σ allocations == amountIn exactly.
18
+ */
19
+ export declare function computeAllocations(params: {
20
+ actualBalances: bigint[];
21
+ virtualBalances: bigint[];
22
+ weightsBps: number[];
23
+ amountIn: bigint;
24
+ tokenInIndex: number;
25
+ }): AllocationResult;
26
+ export declare function computeTwoTokenOptimalAllocations(params: {
27
+ actualBalances: [bigint, bigint];
28
+ virtualBalances: [bigint, bigint];
29
+ protocolFeesOwed: [bigint, bigint];
30
+ weightsBps: [number, number];
31
+ amountIn: bigint;
32
+ tokenInIndex: 0 | 1;
33
+ swapFeeRate: number;
34
+ protocolFeeRate: number;
35
+ }): AllocationResult;
36
+ /**
37
+ * Mirror of stld `cap_deposit_amounts_to_lp_ratio`.
38
+ *
39
+ * `add_liquidity` mints BPT from the minimum ratio against LP-accessible
40
+ * balances (`actual - protocolFeesOwed`). Any helper-held amount above that
41
+ * common ratio would be donated, so the helper deposits the capped basket and
42
+ * refunds the rest.
43
+ */
44
+ export declare function capDepositAmountsToLpRatio(params: {
45
+ helperBalances: bigint[];
46
+ actualBalances: bigint[];
47
+ protocolFeesOwed: bigint[];
48
+ }): {
49
+ depositAmounts: bigint[];
50
+ refundAmounts: bigint[];
51
+ lpBalancesForAdd: bigint[];
52
+ };
53
+ //# sourceMappingURL=singleToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleToken.d.ts","sourceRoot":"","sources":["../../src/math/singleToken.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,gBAAgB,CA2BnB;AAwFD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,gBAAgB,CAwCnB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,GAAG;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAyCpF"}