@heliofi/launchpad-common 1.1.7 → 1.2.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 (66) hide show
  1. package/dist/src/domain/constants/ProtocolVersion.d.ts +1 -2
  2. package/dist/src/domain/constants/ProtocolVersion.js +0 -1
  3. package/dist/src/domain/constants/ProtocolVersion.js.map +1 -1
  4. package/dist/src/domain/constants/blockchain.d.ts +2 -1
  5. package/dist/src/domain/constants/blockchain.js +2 -0
  6. package/dist/src/domain/constants/blockchain.js.map +1 -1
  7. package/dist/src/domain/constants/chainId.d.ts +5 -1
  8. package/dist/src/domain/constants/chainId.js +4 -0
  9. package/dist/src/domain/constants/chainId.js.map +1 -1
  10. package/dist/src/domain/constants/curveType.d.ts +1 -3
  11. package/dist/src/domain/constants/curveType.js +1 -3
  12. package/dist/src/domain/constants/curveType.js.map +1 -1
  13. package/dist/src/domain/constants/migrationDex.js +2 -0
  14. package/dist/src/domain/constants/migrationDex.js.map +1 -1
  15. package/dist/src/domain/curves/AbstractCurve.d.ts +1 -2
  16. package/dist/src/domain/curves/AbstractCurve.js.map +1 -1
  17. package/dist/src/domain/curves/BaseConstantProductCurveV1.d.ts +18 -4
  18. package/dist/src/domain/curves/BaseConstantProductCurveV1.js +101 -12
  19. package/dist/src/domain/curves/BaseConstantProductCurveV1.js.map +1 -1
  20. package/dist/src/domain/curves/ConstantProductCurveV1.d.ts +20 -3
  21. package/dist/src/domain/curves/ConstantProductCurveV1.js +122 -11
  22. package/dist/src/domain/curves/ConstantProductCurveV1.js.map +1 -1
  23. package/dist/src/domain/curves/EvmConstantProductCurveV1.d.ts +23 -0
  24. package/dist/src/domain/curves/EvmConstantProductCurveV1.js +141 -0
  25. package/dist/src/domain/curves/EvmConstantProductCurveV1.js.map +1 -0
  26. package/dist/src/domain/curves/getCurve.js +3 -3
  27. package/dist/src/domain/curves/getCurve.js.map +1 -1
  28. package/dist/src/domain/curves/index.d.ts +1 -6
  29. package/dist/src/domain/curves/index.js +1 -6
  30. package/dist/src/domain/curves/index.js.map +1 -1
  31. package/dist/src/domain/curves/tests/BaseConstantProductCurveV1.spec.js +0 -29
  32. package/dist/src/domain/curves/tests/BaseConstantProductCurveV1.spec.js.map +1 -1
  33. package/dist/src/domain/curves/tests/EvmConstantProductCurveV1.spec.d.ts +1 -0
  34. package/dist/src/domain/curves/tests/EvmConstantProductCurveV1.spec.js +56 -0
  35. package/dist/src/domain/curves/tests/EvmConstantProductCurveV1.spec.js.map +1 -0
  36. package/dist/src/domain/curves/types.d.ts +1 -3
  37. package/dist/src/domain/curves/types.js +0 -6
  38. package/dist/src/domain/curves/types.js.map +1 -1
  39. package/dist/src/domain/model/curve/dtos/CreateCurve.dto.d.ts +0 -2
  40. package/dist/src/domain/model/curve/dtos/CreateCurve.dto.js +0 -9
  41. package/dist/src/domain/model/curve/dtos/CreateCurve.dto.js.map +1 -1
  42. package/dist/src/domain/model/curve/entities/Curve.entity.d.ts +0 -2
  43. package/dist/src/domain/model/curve/entities/Curve.entity.js.map +1 -1
  44. package/dist/src/domain/model/index.d.ts +1 -0
  45. package/dist/src/domain/model/index.js +1 -0
  46. package/dist/src/domain/model/index.js.map +1 -1
  47. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.d.ts +1 -4
  48. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.js +0 -15
  49. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.js.map +1 -1
  50. package/dist/src/domain/model/mint-addresses/dtos/AddMintAddresses.dto.d.ts +5 -0
  51. package/dist/src/domain/model/mint-addresses/dtos/AddMintAddresses.dto.js +29 -0
  52. package/dist/src/domain/model/mint-addresses/dtos/AddMintAddresses.dto.js.map +1 -0
  53. package/dist/src/domain/model/mint-addresses/dtos/index.d.ts +1 -0
  54. package/dist/src/domain/model/mint-addresses/dtos/index.js +18 -0
  55. package/dist/src/domain/model/mint-addresses/dtos/index.js.map +1 -0
  56. package/dist/src/domain/model/mint-addresses/entities/AddMintAddressesResponse.entity.d.ts +3 -0
  57. package/dist/src/domain/model/mint-addresses/entities/AddMintAddressesResponse.entity.js +7 -0
  58. package/dist/src/domain/model/mint-addresses/entities/AddMintAddressesResponse.entity.js.map +1 -0
  59. package/dist/src/domain/model/mint-addresses/entities/index.d.ts +1 -0
  60. package/dist/src/domain/model/mint-addresses/entities/index.js +18 -0
  61. package/dist/src/domain/model/mint-addresses/entities/index.js.map +1 -0
  62. package/dist/src/domain/model/mint-addresses/index.d.ts +2 -0
  63. package/dist/src/domain/model/mint-addresses/index.js +19 -0
  64. package/dist/src/domain/model/mint-addresses/index.js.map +1 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +2 -2
@@ -1,6 +1,5 @@
1
1
  export declare enum ProtocolVersion {
2
2
  V1 = "V1",
3
3
  V2 = "V2",
4
- V3 = "V3",
5
- V4 = "V4"
4
+ V3 = "V3"
6
5
  }
@@ -6,6 +6,5 @@ var ProtocolVersion;
6
6
  ProtocolVersion["V1"] = "V1";
7
7
  ProtocolVersion["V2"] = "V2";
8
8
  ProtocolVersion["V3"] = "V3";
9
- ProtocolVersion["V4"] = "V4";
10
9
  })(ProtocolVersion = exports.ProtocolVersion || (exports.ProtocolVersion = {}));
11
10
  //# sourceMappingURL=ProtocolVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolVersion.js","sourceRoot":"","sources":["../../../../src/domain/constants/ProtocolVersion.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,4BAAS,CAAA;IACT,4BAAS,CAAA;IACT,4BAAS,CAAA;IACT,4BAAS,CAAA;AACX,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B"}
1
+ {"version":3,"file":"ProtocolVersion.js","sourceRoot":"","sources":["../../../../src/domain/constants/ProtocolVersion.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,4BAAS,CAAA;IACT,4BAAS,CAAA;IACT,4BAAS,CAAA;AACX,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B"}
@@ -3,7 +3,8 @@ export declare enum BlockchainSymbol {
3
3
  ETH = "ETH",
4
4
  POLYGON = "POLYGON",
5
5
  BITCOIN = "BITCOIN",
6
- BASE = "BASE"
6
+ BASE = "BASE",
7
+ UNICHAIN = "UNICHAIN"
7
8
  }
8
9
  export declare enum BlockchainEngineType {
9
10
  EVM = "EVM",
@@ -8,6 +8,7 @@ var BlockchainSymbol;
8
8
  BlockchainSymbol["POLYGON"] = "POLYGON";
9
9
  BlockchainSymbol["BITCOIN"] = "BITCOIN";
10
10
  BlockchainSymbol["BASE"] = "BASE";
11
+ BlockchainSymbol["UNICHAIN"] = "UNICHAIN";
11
12
  })(BlockchainSymbol = exports.BlockchainSymbol || (exports.BlockchainSymbol = {}));
12
13
  var BlockchainEngineType;
13
14
  (function (BlockchainEngineType) {
@@ -22,6 +23,7 @@ exports.blockchainEngineMap = new Map([
22
23
  [BlockchainSymbol.BASE, BlockchainEngineType.EVM],
23
24
  [BlockchainSymbol.BITCOIN, BlockchainEngineType.BTC],
24
25
  [BlockchainSymbol.BASE, BlockchainEngineType.EVM],
26
+ [BlockchainSymbol.UNICHAIN, BlockchainEngineType.EVM],
25
27
  ]);
26
28
  function getDefaultBlockChainName() {
27
29
  return BlockchainSymbol.SOL;
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../../../src/domain/constants/blockchain.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,+BAAW,CAAA;IACX,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,iCAAa,CAAA;AACf,CAAC,EANW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAM3B;AAED,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,mCAAW,CAAA;IACX,mCAAW,CAAA;IACX,mCAAW,CAAA;AACb,CAAC,EAJW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAI/B;AAEY,QAAA,mBAAmB,GAAG,IAAI,GAAG,CAGxC;IACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;IAChD,CAAC,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;IAChD,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACpD,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACjD,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACpD,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC;CAClD,CAAC,CAAC;AAEH,SAAgB,wBAAwB;IACtC,OAAO,gBAAgB,CAAC,GAAG,CAAC;AAC9B,CAAC;AAFD,4DAEC"}
1
+ {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../../../src/domain/constants/blockchain.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,+BAAW,CAAA;IACX,+BAAW,CAAA;IACX,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,iCAAa,CAAA;IACb,yCAAqB,CAAA;AACvB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B;AAED,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,mCAAW,CAAA;IACX,mCAAW,CAAA;IACX,mCAAW,CAAA;AACb,CAAC,EAJW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAI/B;AAEY,QAAA,mBAAmB,GAAG,IAAI,GAAG,CAGxC;IACA,CAAC,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;IAChD,CAAC,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;IAChD,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACpD,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACjD,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACpD,CAAC,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,CAAC;IACjD,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,GAAG,CAAC;CACtD,CAAC,CAAC;AAEH,SAAgB,wBAAwB;IACtC,OAAO,gBAAgB,CAAC,GAAG,CAAC;AAC9B,CAAC;AAFD,4DAEC"}
@@ -1,4 +1,8 @@
1
1
  export declare enum ChainId {
2
2
  BASE_SEPOLIA = 84532,
3
- BASE = 8453
3
+ BASE = 8453,
4
+ UNICHAIN_SEPOLIA = 1301,
5
+ UNICHAIN = 10000,
6
+ ETHEREUM = 1,
7
+ ETHEREUM_SEPOLIA = 11155111
4
8
  }
@@ -5,5 +5,9 @@ var ChainId;
5
5
  (function (ChainId) {
6
6
  ChainId[ChainId["BASE_SEPOLIA"] = 84532] = "BASE_SEPOLIA";
7
7
  ChainId[ChainId["BASE"] = 8453] = "BASE";
8
+ ChainId[ChainId["UNICHAIN_SEPOLIA"] = 1301] = "UNICHAIN_SEPOLIA";
9
+ ChainId[ChainId["UNICHAIN"] = 10000] = "UNICHAIN";
10
+ ChainId[ChainId["ETHEREUM"] = 1] = "ETHEREUM";
11
+ ChainId[ChainId["ETHEREUM_SEPOLIA"] = 11155111] = "ETHEREUM_SEPOLIA";
8
12
  })(ChainId = exports.ChainId || (exports.ChainId = {}));
9
13
  //# sourceMappingURL=chainId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainId.js","sourceRoot":"","sources":["../../../../src/domain/constants/chainId.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,yDAAoB,CAAA;IACpB,wCAAW,CAAA;AACb,CAAC,EAHW,OAAO,GAAP,eAAO,KAAP,eAAO,QAGlB"}
1
+ {"version":3,"file":"chainId.js","sourceRoot":"","sources":["../../../../src/domain/constants/chainId.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAOX;AAPD,WAAY,OAAO;IACjB,yDAAoB,CAAA;IACpB,wCAAW,CAAA;IACX,gEAAuB,CAAA;IACvB,iDAAgB,CAAA;IAChB,6CAAY,CAAA;IACZ,oEAA2B,CAAA;AAC7B,CAAC,EAPW,OAAO,GAAP,eAAO,KAAP,eAAO,QAOlB"}
@@ -1,7 +1,5 @@
1
1
  export declare enum CurveType {
2
2
  LINEAR_V1 = "LINEAR_V1",
3
3
  CONSTANT_PRODUCT_V1 = "CONSTANT_PRODUCT_V1",
4
- BASE_CONSTANT_PRODUCT_V1 = "BASE_CONSTANT_PRODUCT_V1",
5
- CONSTANT_PRODUCT_V2 = "CONSTANT_PRODUCT_V2",
6
- FLAT_V1 = "FLAT_V1"
4
+ EVM_CONSTANT_PRODUCT_V1 = "EVM_CONSTANT_PRODUCT_V1"
7
5
  }
@@ -5,8 +5,6 @@ var CurveType;
5
5
  (function (CurveType) {
6
6
  CurveType["LINEAR_V1"] = "LINEAR_V1";
7
7
  CurveType["CONSTANT_PRODUCT_V1"] = "CONSTANT_PRODUCT_V1";
8
- CurveType["BASE_CONSTANT_PRODUCT_V1"] = "BASE_CONSTANT_PRODUCT_V1";
9
- CurveType["CONSTANT_PRODUCT_V2"] = "CONSTANT_PRODUCT_V2";
10
- CurveType["FLAT_V1"] = "FLAT_V1";
8
+ CurveType["EVM_CONSTANT_PRODUCT_V1"] = "EVM_CONSTANT_PRODUCT_V1";
11
9
  })(CurveType = exports.CurveType || (exports.CurveType = {}));
12
10
  //# sourceMappingURL=curveType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"curveType.js","sourceRoot":"","sources":["../../../../src/domain/constants/curveType.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,wDAA2C,CAAA;IAC3C,kEAAqD,CAAA;IACrD,wDAA2C,CAAA;IAC3C,gCAAmB,CAAA;AACrB,CAAC,EANW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAMpB"}
1
+ {"version":3,"file":"curveType.js","sourceRoot":"","sources":["../../../../src/domain/constants/curveType.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,wDAA2C,CAAA;IAC3C,gEAAmD,CAAA;AACrD,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB"}
@@ -14,6 +14,8 @@ const getDefaultMigrationDex = (symbol) => {
14
14
  return MigrationDex.RAYDIUM;
15
15
  case blockchain_1.BlockchainSymbol.BASE:
16
16
  return MigrationDex.UNISWAP;
17
+ case blockchain_1.BlockchainSymbol.UNICHAIN:
18
+ return MigrationDex.UNISWAP;
17
19
  default:
18
20
  throw new Error(`Symbol ${symbol} is not supported`);
19
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrationDex.js","sourceRoot":"","sources":["../../../../src/domain/constants/migrationDex.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAEM,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAgB,EAAE;IACrE,QAAQ,MAAM,EAAE;QACd,KAAK,6BAAgB,CAAC,GAAG;YACvB,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,KAAK,6BAAgB,CAAC,IAAI;YACxB,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B;YACE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,mBAAmB,CAAC,CAAC;KACxD;AACH,CAAC,CAAC;AATW,QAAA,sBAAsB,0BASjC"}
1
+ {"version":3,"file":"migrationDex.js","sourceRoot":"","sources":["../../../../src/domain/constants/migrationDex.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAEM,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAgB,EAAE;IACrE,QAAQ,MAAM,EAAE;QACd,KAAK,6BAAgB,CAAC,GAAG;YACvB,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,KAAK,6BAAgB,CAAC,IAAI;YACxB,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,KAAK,6BAAgB,CAAC,QAAQ;YAC5B,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B;YACE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,mBAAmB,CAAC,CAAC;KACxD;AACH,CAAC,CAAC;AAXW,QAAA,sBAAsB,0BAWjC"}
@@ -1,7 +1,6 @@
1
1
  import BigNumber from 'bignumber.js';
2
- import { CalculationOptions, CurveDefaults, GetMarketCapOptions, GetPriceOptions } from './types';
2
+ import { CalculationOptions, GetMarketCapOptions, GetPriceOptions } from './types';
3
3
  export declare abstract class AbstractCurve {
4
- curveDefaults: CurveDefaults;
5
4
  abstract getTokensAmountFromCollateral(options: CalculationOptions): bigint;
6
5
  abstract getCollateralAmountFromTokens(options: CalculationOptions): bigint;
7
6
  abstract getCollateralPrice(options: GetPriceOptions): BigNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractCurve.js","sourceRoot":"","sources":["../../../../src/domain/curves/AbstractCurve.ts"],"names":[],"mappings":";;;AAQA,MAAsB,aAAa;CAUlC;AAVD,sCAUC"}
1
+ {"version":3,"file":"AbstractCurve.js","sourceRoot":"","sources":["../../../../src/domain/curves/AbstractCurve.ts"],"names":[],"mappings":";;;AAOA,MAAsB,aAAa;CAQlC;AARD,sCAQC"}
@@ -1,9 +1,23 @@
1
- import { ConstantProductCurve } from './ConstantProductCurve';
2
- import { GetMarketCapOptions } from './types';
3
- export declare class BaseConstantProductCurveV1 extends ConstantProductCurve {
1
+ import BigNumber from '../../config/bigNumber';
2
+ import { AbstractCurve } from './AbstractCurve';
3
+ import { CalculationOptions, CurveDefaults, GetMarketCapOptions, GetPriceOptions } from './types';
4
+ export declare class BaseConstantProductCurveV1 extends AbstractCurve {
5
+ initialVirtualTokenReserves: bigint;
6
+ initialVirtualCollateralReserves: bigint;
7
+ collateralDecimals: number;
8
+ constantProduct: bigint;
4
9
  dynamicThreshold: number;
5
10
  maxThreshold: number;
6
11
  marketCapToMinimalTokens: Map<bigint, bigint>;
7
- constructor();
12
+ readonly curveDefaults: CurveDefaults;
13
+ getTokensAmountFromCollateral(options: CalculationOptions): bigint;
14
+ getCollateralAmountFromTokens(options: CalculationOptions): bigint;
15
+ getCollateralPrice(options: GetPriceOptions): BigNumber;
8
16
  getMarketCap(options: GetMarketCapOptions): bigint;
17
+ getDynamicThresholdFromMarketCap(marketCapThreshold: bigint): bigint;
18
+ private buyInToken;
19
+ private buyInCollateral;
20
+ private sellInToken;
21
+ private sellInCollateral;
22
+ private getCurrentReserves;
9
23
  }
@@ -5,22 +5,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BaseConstantProductCurveV1 = void 0;
7
7
  const bigNumber_1 = __importDefault(require("../../config/bigNumber"));
8
+ const AbstractCurve_1 = require("./AbstractCurve");
8
9
  const constants_1 = require("../constants");
9
- const ConstantProductCurve_1 = require("./ConstantProductCurve");
10
- class BaseConstantProductCurveV1 extends ConstantProductCurve_1.ConstantProductCurve {
10
+ const services_1 = require("../services");
11
+ class BaseConstantProductCurveV1 extends AbstractCurve_1.AbstractCurve {
11
12
  constructor() {
12
- super();
13
+ super(...arguments);
14
+ this.initialVirtualTokenReserves = BigInt(1.06 * 1e27);
15
+ this.initialVirtualCollateralReserves = BigInt(1.6 * 1e18);
16
+ this.collateralDecimals = 18;
17
+ this.constantProduct = this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
13
18
  this.dynamicThreshold = 80;
14
19
  this.maxThreshold = 82;
15
20
  this.marketCapToMinimalTokens = new Map([
16
- [BigInt(2.5 * 1e18), 236349588721039974800000000n],
17
- [BigInt(25 * 1e18), 799538870462404697804703491n],
21
+ [BigInt(30 * 1e18), BigInt(80 * 1e18)],
18
22
  ]);
19
- this.initialVirtualTokenReserves = BigInt(1.06 * 1e27);
20
- this.initialVirtualCollateralReserves = BigInt(1.6 * 1e18);
21
- this.collateralDecimals = 18;
22
- this.constantProduct =
23
- this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
24
23
  this.curveDefaults = {
25
24
  type: constants_1.CurveType.BASE_CONSTANT_PRODUCT_V1,
26
25
  totalSupply: BigInt(1e27),
@@ -30,23 +29,113 @@ class BaseConstantProductCurveV1 extends ConstantProductCurve_1.ConstantProductC
30
29
  address: '0x0000000000000000000000000000000000000000',
31
30
  };
32
31
  }
32
+ getTokensAmountFromCollateral(options) {
33
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
34
+ if (tradeDirection === 'BUY') {
35
+ const collateralAmount = amount - (amount * BigInt(platformFeeBps)) / 10000n;
36
+ return this.buyInCollateral(collateralAmount, curvePosition);
37
+ }
38
+ const collateralAmount = amount + (amount * BigInt(platformFeeBps)) / 10000n;
39
+ return this.sellInCollateral(collateralAmount, curvePosition);
40
+ }
41
+ getCollateralAmountFromTokens(options) {
42
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
43
+ if (tradeDirection === 'BUY') {
44
+ const collateralAmount = this.buyInToken(amount, curvePosition);
45
+ return (collateralAmount + (collateralAmount * BigInt(platformFeeBps)) / 10000n);
46
+ }
47
+ const collateralAmount = this.sellInToken(amount, curvePosition);
48
+ return (collateralAmount - (collateralAmount * BigInt(platformFeeBps)) / 10000n);
49
+ }
50
+ getCollateralPrice(options) {
51
+ const { curvePosition, collateralDecimals } = options;
52
+ const finalCollateralDecimals = collateralDecimals ?? this.collateralDecimals;
53
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
54
+ const baseCollateral = BigInt(10 ** finalCollateralDecimals);
55
+ const price = new bigNumber_1.default(currentVirtualCollateralReserves.toString()).div(new bigNumber_1.default(currentVirtualTokenReserves.toString()));
56
+ const inBaseUnits = price.multipliedBy(new bigNumber_1.default(baseCollateral.toString()));
57
+ return inBaseUnits;
58
+ }
33
59
  getMarketCap(options) {
34
60
  try {
35
61
  const { curvePosition, tokenDecimals, collateralDecimals } = options;
36
62
  const base = new bigNumber_1.default(10);
37
63
  const baseTokens = base.pow(tokenDecimals ?? this.curveDefaults.tokenDecimals);
64
+ const curvePositionDecimal = new bigNumber_1.default(curvePosition.toString());
38
65
  const price = this.getCollateralPrice({
39
66
  curvePosition,
40
67
  collateralDecimals,
41
68
  });
42
- const totalSupplyDecimal = new bigNumber_1.default(this.curveDefaults.totalSupply.toString());
43
- const cap = price.multipliedBy(totalSupplyDecimal).dividedBy(baseTokens);
69
+ const cap = price
70
+ .multipliedBy(curvePositionDecimal)
71
+ .dividedBy(baseTokens);
44
72
  return BigInt(cap.integerValue(bigNumber_1.default.ROUND_FLOOR).toString());
45
73
  }
46
74
  catch (error) {
47
75
  throw new Error(`Calculation error: ${error}`);
48
76
  }
49
77
  }
78
+ getDynamicThresholdFromMarketCap(marketCapThreshold) {
79
+ const baseTokens = BigInt(10 ** this.curveDefaults.tokenDecimals);
80
+ let low = 300000000n * baseTokens;
81
+ let high = 1000000000n * baseTokens;
82
+ let mid;
83
+ while (low < high) {
84
+ mid = (low + high + 1n) / 2n;
85
+ const marketCap = this.getMarketCap({ curvePosition: mid });
86
+ if (marketCap === marketCapThreshold) {
87
+ low = mid;
88
+ break;
89
+ }
90
+ else if (marketCap < marketCapThreshold) {
91
+ low = mid;
92
+ }
93
+ else {
94
+ high = mid - 1n;
95
+ }
96
+ }
97
+ while (this.getMarketCap({ curvePosition: low }) >= marketCapThreshold &&
98
+ low > 0n) {
99
+ low -= 1n;
100
+ }
101
+ return low + 1n;
102
+ }
103
+ buyInToken(tokenAmount, curvePosition) {
104
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
105
+ const newTokenReserves = currentVirtualTokenReserves - tokenAmount;
106
+ const ratio = this.constantProduct / newTokenReserves;
107
+ const lamportsToSpend = ratio - currentVirtualCollateralReserves;
108
+ return lamportsToSpend;
109
+ }
110
+ buyInCollateral(collateralAmount, curvePosition) {
111
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
112
+ const newCollateralReserves = currentVirtualCollateralReserves + collateralAmount;
113
+ const ratio = this.constantProduct / newCollateralReserves;
114
+ const tokensToBuy = currentVirtualTokenReserves - ratio;
115
+ return tokensToBuy;
116
+ }
117
+ sellInToken(tokenAmount, curvePosition) {
118
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
119
+ const newTokenReserves = currentVirtualTokenReserves + tokenAmount;
120
+ const ratio = this.constantProduct / newTokenReserves;
121
+ const lamportsToReceive = currentVirtualCollateralReserves - ratio;
122
+ return lamportsToReceive;
123
+ }
124
+ sellInCollateral(collateralAmount, curvePosition) {
125
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
126
+ const newCollateralReserves = currentVirtualCollateralReserves - collateralAmount;
127
+ const ratio = this.constantProduct / newCollateralReserves;
128
+ const tokensToSell = ratio - currentVirtualTokenReserves;
129
+ return tokensToSell;
130
+ }
131
+ getCurrentReserves(curvePosition) {
132
+ const currentVirtualTokenReserves = this.initialVirtualTokenReserves - curvePosition;
133
+ const currentVirtualCollateralReserves = (0, bigNumber_1.default)(this.constantProduct.toString()).div((0, bigNumber_1.default)(currentVirtualTokenReserves.toString()));
134
+ return [
135
+ currentVirtualTokenReserves,
136
+ services_1.AmountService.decimalToBigInt(currentVirtualCollateralReserves),
137
+ ];
138
+ }
50
139
  }
51
140
  exports.BaseConstantProductCurveV1 = BaseConstantProductCurveV1;
52
141
  //# sourceMappingURL=BaseConstantProductCurveV1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseConstantProductCurveV1.js","sourceRoot":"","sources":["../../../../src/domain/curves/BaseConstantProductCurveV1.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,4CAAyC;AACzC,iEAA8D;AAG9D,MAAa,0BAA2B,SAAQ,2CAAoB;IAUlE;QACE,KAAK,EAAE,CAAC;QAVV,qBAAgB,GAAG,EAAE,CAAC;QAEtB,iBAAY,GAAG,EAAE,CAAC;QAElB,6BAAwB,GAAwB,IAAI,GAAG,CAAC;YACtD,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,4BAAoC,CAAC;YAC1D,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,4BAAoC,CAAC;SAC1D,CAAC,CAAC;QAKD,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gCAAgC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,gCAAgC,CAAC;QAE3E,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,qBAAS,CAAC,wBAAwB;YACxC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC;YACzB,aAAa,EAAE,EAAE;YACjB,wBAAwB,EACtB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI;YACvD,wBAAwB,EACtB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI;YACnD,OAAO,EAAE,4CAA4C;SAC7C,CAAC;IACb,CAAC;IAED,YAAY,CAAC,OAA4B;QACvC,IAAI;YACF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;YACrE,MAAM,IAAI,GAAG,IAAI,mBAAS,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAClD,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACpC,aAAa;gBACb,kBAAkB;aACnB,CAAC,CAAC;YAEH,MAAM,kBAAkB,GAAG,IAAI,mBAAS,CACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAC1C,CAAC;YACF,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAEzE,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;SAChD;IACH,CAAC;CACF;AAtDD,gEAsDC"}
1
+ {"version":3,"file":"BaseConstantProductCurveV1.js","sourceRoot":"","sources":["../../../../src/domain/curves/BaseConstantProductCurveV1.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,23 @@
1
- import { ConstantProductCurve } from './ConstantProductCurve';
2
- export declare class ConstantProductCurveV1 extends ConstantProductCurve {
1
+ import BigNumber from '../../config/bigNumber';
2
+ import { AbstractCurve } from './AbstractCurve';
3
+ import { CalculationOptions, CurveDefaults, GetMarketCapOptions, GetPriceOptions } from './types';
4
+ export declare class ConstantProductCurveV1 extends AbstractCurve {
5
+ initialVirtualTokenReserves: bigint;
6
+ initialVirtualCollateralReserves: bigint;
7
+ collateralDecimals: number;
8
+ constantProduct: bigint;
3
9
  dynamicThreshold: number;
4
10
  maxThreshold: number;
5
- constructor();
11
+ marketCapToMinimalTokens: Map<bigint, bigint>;
12
+ readonly curveDefaults: CurveDefaults;
13
+ getTokensAmountFromCollateral(options: CalculationOptions): bigint;
14
+ getCollateralAmountFromTokens(options: CalculationOptions): bigint;
15
+ getCollateralPrice(options: GetPriceOptions): BigNumber;
16
+ getMarketCap(options: GetMarketCapOptions): bigint;
17
+ getDynamicThresholdFromMarketCap(marketCapThreshold: bigint): bigint;
18
+ private buyInToken;
19
+ private buyInCollateral;
20
+ private sellInToken;
21
+ private sellInCollateral;
22
+ private getCurrentReserves;
6
23
  }
@@ -1,18 +1,26 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ConstantProductCurveV1 = void 0;
7
+ const bigNumber_1 = __importDefault(require("../../config/bigNumber"));
8
+ const AbstractCurve_1 = require("./AbstractCurve");
4
9
  const constants_1 = require("../constants");
5
- const ConstantProductCurve_1 = require("./ConstantProductCurve");
6
- class ConstantProductCurveV1 extends ConstantProductCurve_1.ConstantProductCurve {
10
+ const services_1 = require("../services");
11
+ class ConstantProductCurveV1 extends AbstractCurve_1.AbstractCurve {
7
12
  constructor() {
8
- super();
9
- this.dynamicThreshold = 80;
10
- this.maxThreshold = 82;
13
+ super(...arguments);
11
14
  this.initialVirtualTokenReserves = 1073000000000000000n;
12
15
  this.initialVirtualCollateralReserves = 30000000000n;
13
16
  this.collateralDecimals = 9;
14
- this.constantProduct =
15
- this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
17
+ this.constantProduct = this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
18
+ this.dynamicThreshold = 80;
19
+ this.maxThreshold = 82;
20
+ this.marketCapToMinimalTokens = new Map([
21
+ [345000000000n, 799820983207404442n],
22
+ [20000000000n, 336771070069821177n],
23
+ ]);
16
24
  this.curveDefaults = {
17
25
  type: constants_1.CurveType.CONSTANT_PRODUCT_V1,
18
26
  totalSupply: BigInt(1e18),
@@ -21,10 +29,113 @@ class ConstantProductCurveV1 extends ConstantProductCurve_1.ConstantProductCurve
21
29
  maxAllocationTokenAmount: (BigInt(1e18) * BigInt(this.maxThreshold)) / 100n,
22
30
  address: '11111111111111111111111111111111',
23
31
  };
24
- this.marketCapToMinimalTokens = new Map([
25
- [345000000000n, 799820983207404442n],
26
- [20000000000n, 336771070069821177n],
27
- ]);
32
+ }
33
+ getTokensAmountFromCollateral(options) {
34
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
35
+ if (tradeDirection === 'BUY') {
36
+ const collateralAmount = amount - (amount * BigInt(platformFeeBps)) / 10000n;
37
+ return this.buyInCollateral(collateralAmount, curvePosition);
38
+ }
39
+ const collateralAmount = amount + (amount * BigInt(platformFeeBps)) / 10000n;
40
+ return this.sellInCollateral(collateralAmount, curvePosition);
41
+ }
42
+ getCollateralAmountFromTokens(options) {
43
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
44
+ if (tradeDirection === 'BUY') {
45
+ const collateralAmount = this.buyInToken(amount, curvePosition);
46
+ return (collateralAmount + (collateralAmount * BigInt(platformFeeBps)) / 10000n);
47
+ }
48
+ const collateralAmount = this.sellInToken(amount, curvePosition);
49
+ return (collateralAmount - (collateralAmount * BigInt(platformFeeBps)) / 10000n);
50
+ }
51
+ getCollateralPrice(options) {
52
+ const { curvePosition, collateralDecimals } = options;
53
+ const finalCollateralDecimals = collateralDecimals ?? this.collateralDecimals;
54
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
55
+ const baseCollateral = BigInt(10 ** finalCollateralDecimals);
56
+ const price = new bigNumber_1.default(currentVirtualCollateralReserves.toString()).div(new bigNumber_1.default(currentVirtualTokenReserves.toString()));
57
+ const inBaseUnits = price.multipliedBy(new bigNumber_1.default(baseCollateral.toString()));
58
+ return inBaseUnits;
59
+ }
60
+ getMarketCap(options) {
61
+ try {
62
+ const { curvePosition, tokenDecimals, collateralDecimals } = options;
63
+ const base = new bigNumber_1.default(10);
64
+ const baseTokens = base.pow(tokenDecimals ?? this.curveDefaults.tokenDecimals);
65
+ const curvePositionDecimal = new bigNumber_1.default(curvePosition.toString());
66
+ const price = this.getCollateralPrice({
67
+ curvePosition,
68
+ collateralDecimals,
69
+ });
70
+ const cap = price
71
+ .multipliedBy(curvePositionDecimal)
72
+ .dividedBy(baseTokens);
73
+ return BigInt(cap.integerValue(bigNumber_1.default.ROUND_FLOOR).toString());
74
+ }
75
+ catch (error) {
76
+ throw new Error(`Calculation error: ${error}`);
77
+ }
78
+ }
79
+ getDynamicThresholdFromMarketCap(marketCapThreshold) {
80
+ const baseTokens = BigInt(10 ** this.curveDefaults.tokenDecimals);
81
+ let low = 300000000n * baseTokens;
82
+ let high = 1000000000n * baseTokens;
83
+ let mid;
84
+ while (low < high) {
85
+ mid = (low + high + 1n) / 2n;
86
+ const marketCap = this.getMarketCap({ curvePosition: mid });
87
+ if (marketCap === marketCapThreshold) {
88
+ low = mid;
89
+ break;
90
+ }
91
+ else if (marketCap < marketCapThreshold) {
92
+ low = mid;
93
+ }
94
+ else {
95
+ high = mid - 1n;
96
+ }
97
+ }
98
+ while (this.getMarketCap({ curvePosition: low }) >= marketCapThreshold &&
99
+ low > 0n) {
100
+ low -= 1n;
101
+ }
102
+ return low + 1n;
103
+ }
104
+ buyInToken(tokenAmount, curvePosition) {
105
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
106
+ const newTokenReserves = currentVirtualTokenReserves - tokenAmount;
107
+ const ratio = this.constantProduct / newTokenReserves;
108
+ const lamportsToSpend = ratio - currentVirtualCollateralReserves;
109
+ return lamportsToSpend;
110
+ }
111
+ buyInCollateral(collateralAmount, curvePosition) {
112
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
113
+ const newCollateralReserves = currentVirtualCollateralReserves + collateralAmount;
114
+ const ratio = this.constantProduct / newCollateralReserves;
115
+ const tokensToBuy = currentVirtualTokenReserves - ratio;
116
+ return tokensToBuy;
117
+ }
118
+ sellInToken(tokenAmount, curvePosition) {
119
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
120
+ const newTokenReserves = currentVirtualTokenReserves + tokenAmount;
121
+ const ratio = this.constantProduct / newTokenReserves;
122
+ const lamportsToReceive = currentVirtualCollateralReserves - ratio;
123
+ return lamportsToReceive;
124
+ }
125
+ sellInCollateral(collateralAmount, curvePosition) {
126
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
127
+ const newCollateralReserves = currentVirtualCollateralReserves - collateralAmount;
128
+ const ratio = this.constantProduct / newCollateralReserves;
129
+ const tokensToSell = ratio - currentVirtualTokenReserves;
130
+ return tokensToSell;
131
+ }
132
+ getCurrentReserves(curvePosition) {
133
+ const currentVirtualTokenReserves = this.initialVirtualTokenReserves - curvePosition;
134
+ const currentVirtualCollateralReserves = (0, bigNumber_1.default)(this.constantProduct.toString()).div((0, bigNumber_1.default)(currentVirtualTokenReserves.toString()));
135
+ return [
136
+ currentVirtualTokenReserves,
137
+ services_1.AmountService.decimalToBigInt(currentVirtualCollateralReserves),
138
+ ];
28
139
  }
29
140
  }
30
141
  exports.ConstantProductCurveV1 = ConstantProductCurveV1;
@@ -1 +1 @@
1
- {"version":3,"file":"ConstantProductCurveV1.js","sourceRoot":"","sources":["../../../../src/domain/curves/ConstantProductCurveV1.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AACzC,iEAA8D;AAE9D,MAAa,sBAAuB,SAAQ,2CAAoB;IAK9D;QACE,KAAK,EAAE,CAAC;QALV,qBAAgB,GAAG,EAAE,CAAC;QAEtB,iBAAY,GAAG,EAAE,CAAC;QAKhB,IAAI,CAAC,2BAA2B,GAAG,oBAA0B,CAAC;QAC9D,IAAI,CAAC,gCAAgC,GAAG,YAAe,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,gCAAgC,CAAC;QAE3E,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,qBAAS,CAAC,mBAAmB;YACnC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC;YACzB,aAAa,EAAE,CAAC;YAChB,wBAAwB,EACtB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI;YACvD,wBAAwB,EACtB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI;YACnD,OAAO,EAAE,kCAAkC;SACnC,CAAC;QAEX,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,CAAC;YACtC,CAAC,aAAgB,EAAE,mBAAwB,CAAC;YAC5C,CAAC,YAAe,EAAE,mBAAwB,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF;AA9BD,wDA8BC"}
1
+ {"version":3,"file":"ConstantProductCurveV1.js","sourceRoot":"","sources":["../../../../src/domain/curves/ConstantProductCurveV1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import BigNumber from '../../config/bigNumber';
2
+ import { AbstractCurve } from './AbstractCurve';
3
+ import { CalculationOptions, CurveDefaults, GetMarketCapOptions, GetPriceOptions } from './types';
4
+ export declare class EvmConstantProductCurveV1 extends AbstractCurve {
5
+ initialVirtualTokenReserves: bigint;
6
+ initialVirtualCollateralReserves: bigint;
7
+ collateralDecimals: number;
8
+ constantProduct: bigint;
9
+ dynamicThreshold: number;
10
+ maxThreshold: number;
11
+ marketCapToMinimalTokens: Map<bigint, bigint>;
12
+ readonly curveDefaults: CurveDefaults;
13
+ getTokensAmountFromCollateral(options: CalculationOptions): bigint;
14
+ getCollateralAmountFromTokens(options: CalculationOptions): bigint;
15
+ getCollateralPrice(options: GetPriceOptions): BigNumber;
16
+ getMarketCap(options: GetMarketCapOptions): bigint;
17
+ getDynamicThresholdFromMarketCap(marketCapThreshold: bigint): bigint;
18
+ private buyInToken;
19
+ private buyInCollateral;
20
+ private sellInToken;
21
+ private sellInCollateral;
22
+ private getCurrentReserves;
23
+ }