@heliofi/launchpad-common 1.5.8 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/src/domain/constants/ProtocolVersion.d.ts +2 -1
  2. package/dist/src/domain/constants/ProtocolVersion.js +1 -0
  3. package/dist/src/domain/constants/ProtocolVersion.js.map +1 -1
  4. package/dist/src/domain/constants/chainId.d.ts +2 -0
  5. package/dist/src/domain/constants/chainId.js +27 -1
  6. package/dist/src/domain/constants/chainId.js.map +1 -1
  7. package/dist/src/domain/constants/curveType.d.ts +3 -1
  8. package/dist/src/domain/constants/curveType.js +2 -0
  9. package/dist/src/domain/constants/curveType.js.map +1 -1
  10. package/dist/src/domain/constants/url-patterns.d.ts +2 -2
  11. package/dist/src/domain/constants/url-patterns.js +2 -2
  12. package/dist/src/domain/constants/url-patterns.js.map +1 -1
  13. package/dist/src/domain/curves/AbstractCurve.d.ts +2 -1
  14. package/dist/src/domain/curves/AbstractCurve.js.map +1 -1
  15. package/dist/src/domain/curves/ConstantProductCurve.d.ts +20 -0
  16. package/dist/src/domain/curves/ConstantProductCurve.js +120 -0
  17. package/dist/src/domain/curves/ConstantProductCurve.js.map +1 -0
  18. package/dist/src/domain/curves/ConstantProductCurveV1.d.ts +3 -20
  19. package/dist/src/domain/curves/ConstantProductCurveV1.js +11 -122
  20. package/dist/src/domain/curves/ConstantProductCurveV1.js.map +1 -1
  21. package/dist/src/domain/curves/ConstantProductCurveV2.d.ts +6 -0
  22. package/dist/src/domain/curves/ConstantProductCurveV2.js +32 -0
  23. package/dist/src/domain/curves/ConstantProductCurveV2.js.map +1 -0
  24. package/dist/src/domain/curves/FlatCurveV1.d.ts +14 -0
  25. package/dist/src/domain/curves/FlatCurveV1.js +60 -0
  26. package/dist/src/domain/curves/FlatCurveV1.js.map +1 -0
  27. package/dist/src/domain/curves/PumpCurveV1.d.ts +4 -0
  28. package/dist/src/domain/curves/PumpCurveV1.js +4 -0
  29. package/dist/src/domain/curves/PumpCurveV1.js.map +1 -1
  30. package/dist/src/domain/curves/index.d.ts +3 -0
  31. package/dist/src/domain/curves/index.js +3 -0
  32. package/dist/src/domain/curves/index.js.map +1 -1
  33. package/dist/src/domain/curves/tests/FlatCurveV1.spec.d.ts +1 -0
  34. package/dist/src/domain/curves/tests/FlatCurveV1.spec.js +130 -0
  35. package/dist/src/domain/curves/tests/FlatCurveV1.spec.js.map +1 -0
  36. package/dist/src/domain/curves/types.d.ts +3 -1
  37. package/dist/src/domain/curves/types.js +6 -0
  38. package/dist/src/domain/curves/types.js.map +1 -1
  39. package/dist/src/domain/model/curve/dtos/CreateCurve.dto.d.ts +2 -0
  40. package/dist/src/domain/model/curve/dtos/CreateCurve.dto.js +9 -0
  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 +2 -0
  43. package/dist/src/domain/model/curve/entities/Curve.entity.js.map +1 -1
  44. package/dist/src/domain/model/fun/constants.d.ts +42 -0
  45. package/dist/src/domain/model/fun/constants.js +53 -0
  46. package/dist/src/domain/model/fun/constants.js.map +1 -0
  47. package/dist/src/domain/model/fun/dtos/GetFunTokensList.dto.d.ts +10 -0
  48. package/dist/src/domain/model/fun/dtos/GetFunTokensList.dto.js +60 -0
  49. package/dist/src/domain/model/fun/dtos/GetFunTokensList.dto.js.map +1 -0
  50. package/dist/src/domain/model/fun/dtos/index.d.ts +1 -0
  51. package/dist/src/domain/model/fun/dtos/index.js +18 -0
  52. package/dist/src/domain/model/fun/dtos/index.js.map +1 -0
  53. package/dist/src/domain/model/fun/entities/FunTokensList.entity.d.ts +17 -0
  54. package/dist/src/domain/model/fun/entities/FunTokensList.entity.js +8 -0
  55. package/dist/src/domain/model/fun/entities/FunTokensList.entity.js.map +1 -0
  56. package/dist/src/domain/model/fun/entities/index.d.ts +1 -0
  57. package/dist/src/domain/model/fun/entities/index.js +18 -0
  58. package/dist/src/domain/model/fun/entities/index.js.map +1 -0
  59. package/dist/src/domain/model/fun/index.d.ts +3 -0
  60. package/dist/src/domain/model/fun/index.js +20 -0
  61. package/dist/src/domain/model/fun/index.js.map +1 -0
  62. package/dist/src/domain/model/index.d.ts +3 -0
  63. package/dist/src/domain/model/index.js +3 -0
  64. package/dist/src/domain/model/index.js.map +1 -1
  65. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.d.ts +4 -1
  66. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.js +15 -0
  67. package/dist/src/domain/model/mint/create/dtos/CreateMint.dto.js.map +1 -1
  68. package/dist/src/domain/model/mint/create/dtos/CreateMintWithMetadata.dto.d.ts +5 -3
  69. package/dist/src/domain/model/mint/create/dtos/CreateMintWithMetadata.dto.js +17 -7
  70. package/dist/src/domain/model/mint/create/dtos/CreateMintWithMetadata.dto.js.map +1 -1
  71. package/dist/src/domain/model/query/index.d.ts +1 -0
  72. package/dist/src/domain/model/{cloudflare → query}/index.js +1 -1
  73. package/dist/src/domain/model/query/index.js.map +1 -0
  74. package/dist/src/domain/model/query/paginated-query.dto.d.ts +4 -0
  75. package/dist/src/domain/model/{token-pair/dtos/TokenPairMetrics.dto.js → query/paginated-query.dto.js} +11 -12
  76. package/dist/src/domain/model/query/paginated-query.dto.js.map +1 -0
  77. package/dist/src/domain/model/token-pair/dtos/CreateTokenPair.dto.d.ts +1 -1
  78. package/dist/src/domain/model/token-pair/dtos/CreateTokenPair.dto.js +1 -1
  79. package/dist/src/domain/model/token-pair/dtos/CreateTokenPair.dto.js.map +1 -1
  80. package/dist/src/domain/model/token-pair/entities/TokenPair.entity.d.ts +1 -1
  81. package/dist/src/domain/model/token-pair/entities/TokenPairWithMetadata.entity.d.ts +20 -0
  82. package/dist/src/domain/model/token-pair/entities/TokenPairWithMetadata.entity.js +8 -0
  83. package/dist/src/domain/model/token-pair/entities/TokenPairWithMetadata.entity.js.map +1 -0
  84. package/dist/src/domain/model/token-pair/entities/index.d.ts +1 -0
  85. package/dist/src/domain/model/token-pair/entities/index.js +1 -0
  86. package/dist/src/domain/model/token-pair/entities/index.js.map +1 -1
  87. package/dist/src/domain/model/trading-data/entities/TradingTableData.d.ts +2 -1
  88. package/dist/src/domain/model/trading-data/entities/TradingTableData.js.map +1 -1
  89. package/dist/src/domain/model/trading-data/entities/TradingTokenSummaryData.d.ts +7 -0
  90. package/dist/src/domain/model/trading-data/entities/TradingTokenSummaryData.js +8 -0
  91. package/dist/src/domain/model/trading-data/entities/TradingTokenSummaryData.js.map +1 -0
  92. package/dist/src/domain/model/trading-data/entities/index.d.ts +1 -0
  93. package/dist/src/domain/model/trading-data/entities/index.js +1 -0
  94. package/dist/src/domain/model/trading-data/entities/index.js.map +1 -1
  95. package/dist/src/domain/services/TimeService.d.ts +1 -0
  96. package/dist/src/domain/services/TimeService.js +20 -0
  97. package/dist/src/domain/services/TimeService.js.map +1 -1
  98. package/dist/src/domain/services/TimeService.spec.js +24 -0
  99. package/dist/src/domain/services/TimeService.spec.js.map +1 -1
  100. package/dist/src/index.d.ts +1 -0
  101. package/dist/src/index.js +1 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/src/utils/curves.d.ts +3 -0
  104. package/dist/src/utils/curves.js +27 -0
  105. package/dist/src/utils/curves.js.map +1 -0
  106. package/dist/src/utils/index.d.ts +2 -0
  107. package/dist/src/utils/index.js +19 -0
  108. package/dist/src/utils/index.js.map +1 -0
  109. package/dist/src/utils/numbers.d.ts +3 -0
  110. package/dist/src/utils/numbers.js +17 -0
  111. package/dist/src/utils/numbers.js.map +1 -0
  112. package/dist/tsconfig.tsbuildinfo +1 -1
  113. package/package.json +3 -2
  114. package/dist/src/domain/constants/configPartner.d.ts +0 -4
  115. package/dist/src/domain/constants/configPartner.js +0 -9
  116. package/dist/src/domain/constants/configPartner.js.map +0 -1
  117. package/dist/src/domain/model/cloudflare/CloudflareTypes.d.ts +0 -32
  118. package/dist/src/domain/model/cloudflare/CloudflareTypes.js +0 -73
  119. package/dist/src/domain/model/cloudflare/CloudflareTypes.js.map +0 -1
  120. package/dist/src/domain/model/cloudflare/index.d.ts +0 -1
  121. package/dist/src/domain/model/cloudflare/index.js.map +0 -1
  122. package/dist/src/domain/model/mint/create/dtos/CreateMintWithSocials.dto.d.ts +0 -10
  123. package/dist/src/domain/model/mint/create/dtos/CreateMintWithSocials.dto.js +0 -52
  124. package/dist/src/domain/model/mint/create/dtos/CreateMintWithSocials.dto.js.map +0 -1
  125. package/dist/src/domain/model/token-pair/dtos/LaunchTokenPair.dto.d.ts +0 -10
  126. package/dist/src/domain/model/token-pair/dtos/LaunchTokenPair.dto.js +0 -52
  127. package/dist/src/domain/model/token-pair/dtos/LaunchTokenPair.dto.js.map +0 -1
  128. package/dist/src/domain/model/token-pair/dtos/TokenPairMarketData.dto.d.ts +0 -5
  129. package/dist/src/domain/model/token-pair/dtos/TokenPairMarketData.dto.js +0 -26
  130. package/dist/src/domain/model/token-pair/dtos/TokenPairMarketData.dto.js.map +0 -1
  131. package/dist/src/domain/model/token-pair/dtos/TokenPairMetrics.dto.d.ts +0 -5
  132. package/dist/src/domain/model/token-pair/dtos/TokenPairMetrics.dto.js.map +0 -1
  133. package/dist/src/domain/model/token-pair/entities/LaunchTokenPair.entity.d.ts +0 -9
  134. package/dist/src/domain/model/token-pair/entities/LaunchTokenPair.entity.js +0 -8
  135. package/dist/src/domain/model/token-pair/entities/LaunchTokenPair.entity.js.map +0 -1
  136. package/dist/src/domain/model/token-pair/entities/TokenPairMetrics.entity.d.ts +0 -6
  137. package/dist/src/domain/model/token-pair/entities/TokenPairMetrics.entity.js +0 -8
  138. package/dist/src/domain/model/token-pair/entities/TokenPairMetrics.entity.js.map +0 -1
  139. package/dist/src/domain/model/trading-data/dtos/GetTableDataByMintAddressDto.d.ts +0 -4
  140. package/dist/src/domain/model/trading-data/dtos/GetTableDataByMintAddressDto.js +0 -27
  141. package/dist/src/domain/model/trading-data/dtos/GetTableDataByMintAddressDto.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  export declare enum ProtocolVersion {
2
2
  V1 = "V1",
3
3
  V2 = "V2",
4
- V3 = "V3"
4
+ V3 = "V3",
5
+ V4 = "V4"
5
6
  }
6
7
  export declare enum EvmProtocolVersion {
7
8
  V1 = "V1",
@@ -6,6 +6,7 @@ var ProtocolVersion;
6
6
  ProtocolVersion["V1"] = "V1";
7
7
  ProtocolVersion["V2"] = "V2";
8
8
  ProtocolVersion["V3"] = "V3";
9
+ ProtocolVersion["V4"] = "V4";
9
10
  })(ProtocolVersion = exports.ProtocolVersion || (exports.ProtocolVersion = {}));
10
11
  var EvmProtocolVersion;
11
12
  (function (EvmProtocolVersion) {
@@ -1 +1 @@
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;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,+BAAS,CAAA;IACT,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,+BAAS,CAAA;AACX,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B"}
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;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,+BAAS,CAAA;IACT,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,+BAAS,CAAA;AACX,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B"}
@@ -1,3 +1,4 @@
1
+ import { BlockchainSymbol } from './blockchain';
1
2
  export declare enum ChainId {
2
3
  BASE_SEPOLIA = 84532,
3
4
  BASE = 8453,
@@ -12,3 +13,4 @@ export declare enum ChainId {
12
13
  BERA = 80094,
13
14
  BERA_BARTIO = 80084
14
15
  }
16
+ export declare function getBlockchainSymbolByChainId(chainId: ChainId): BlockchainSymbol;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChainId = void 0;
3
+ exports.getBlockchainSymbolByChainId = exports.ChainId = void 0;
4
+ const blockchain_1 = require("./blockchain");
4
5
  var ChainId;
5
6
  (function (ChainId) {
6
7
  ChainId[ChainId["BASE_SEPOLIA"] = 84532] = "BASE_SEPOLIA";
@@ -16,4 +17,29 @@ var ChainId;
16
17
  ChainId[ChainId["BERA"] = 80094] = "BERA";
17
18
  ChainId[ChainId["BERA_BARTIO"] = 80084] = "BERA_BARTIO";
18
19
  })(ChainId = exports.ChainId || (exports.ChainId = {}));
20
+ function getBlockchainSymbolByChainId(chainId) {
21
+ switch (chainId) {
22
+ case ChainId.ETHEREUM:
23
+ case ChainId.ETHEREUM_SEPOLIA:
24
+ return blockchain_1.BlockchainSymbol.ETH;
25
+ case ChainId.BASE:
26
+ case ChainId.BASE_SEPOLIA:
27
+ return blockchain_1.BlockchainSymbol.BASE;
28
+ case ChainId.UNICHAIN:
29
+ case ChainId.UNICHAIN_SEPOLIA:
30
+ return blockchain_1.BlockchainSymbol.UNICHAIN;
31
+ case ChainId.SONIC:
32
+ case ChainId.SONIC_BLAZE:
33
+ return blockchain_1.BlockchainSymbol.SONIC;
34
+ case ChainId.ABSTRACT:
35
+ case ChainId.ABSTRACT_TESTNET:
36
+ return blockchain_1.BlockchainSymbol.ABSTRACT;
37
+ case ChainId.BERA:
38
+ case ChainId.BERA_BARTIO:
39
+ return blockchain_1.BlockchainSymbol.BERA;
40
+ default:
41
+ throw new Error(`Unsupported chain ID: ${chainId}`);
42
+ }
43
+ }
44
+ exports.getBlockchainSymbolByChainId = getBlockchainSymbolByChainId;
19
45
  //# sourceMappingURL=chainId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainId.js","sourceRoot":"","sources":["../../../../src/domain/constants/chainId.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAaX;AAbD,WAAY,OAAO;IACjB,yDAAoB,CAAA;IACpB,wCAAW,CAAA;IACX,gEAAuB,CAAA;IACvB,iDAAgB,CAAA;IAChB,6CAAY,CAAA;IACZ,oEAA2B,CAAA;IAC3B,yCAAW,CAAA;IACX,uDAAmB,CAAA;IACnB,gDAAe,CAAA;IACf,iEAAwB,CAAA;IACxB,yCAAY,CAAA;IACZ,uDAAmB,CAAA;AACrB,CAAC,EAbW,OAAO,GAAP,eAAO,KAAP,eAAO,QAalB"}
1
+ {"version":3,"file":"chainId.js","sourceRoot":"","sources":["../../../../src/domain/constants/chainId.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAEhD,IAAY,OAaX;AAbD,WAAY,OAAO;IACjB,yDAAoB,CAAA;IACpB,wCAAW,CAAA;IACX,gEAAuB,CAAA;IACvB,iDAAgB,CAAA;IAChB,6CAAY,CAAA;IACZ,oEAA2B,CAAA;IAC3B,yCAAW,CAAA;IACX,uDAAmB,CAAA;IACnB,gDAAe,CAAA;IACf,iEAAwB,CAAA;IACxB,yCAAY,CAAA;IACZ,uDAAmB,CAAA;AACrB,CAAC,EAbW,OAAO,GAAP,eAAO,KAAP,eAAO,QAalB;AAED,SAAgB,4BAA4B,CAC1C,OAAgB;IAEhB,QAAQ,OAAO,EAAE;QACf,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,gBAAgB;YAC3B,OAAO,6BAAgB,CAAC,GAAG,CAAC;QAE9B,KAAK,OAAO,CAAC,IAAI,CAAC;QAClB,KAAK,OAAO,CAAC,YAAY;YACvB,OAAO,6BAAgB,CAAC,IAAI,CAAC;QAE/B,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,gBAAgB;YAC3B,OAAO,6BAAgB,CAAC,QAAQ,CAAC;QAEnC,KAAK,OAAO,CAAC,KAAK,CAAC;QACnB,KAAK,OAAO,CAAC,WAAW;YACtB,OAAO,6BAAgB,CAAC,KAAK,CAAC;QAEhC,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,gBAAgB;YAC3B,OAAO,6BAAgB,CAAC,QAAQ,CAAC;QAEnC,KAAK,OAAO,CAAC,IAAI,CAAC;QAClB,KAAK,OAAO,CAAC,WAAW;YACtB,OAAO,6BAAgB,CAAC,IAAI,CAAC;QAE/B;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;KACvD;AACH,CAAC;AA/BD,oEA+BC"}
@@ -4,5 +4,7 @@ export declare enum CurveType {
4
4
  EVM_CONSTANT_PRODUCT_V1 = "EVM_CONSTANT_PRODUCT_V1",
5
5
  PUMP_FUN_V1 = "PUMP_FUN_V1",
6
6
  SONIC_CONSTANT_PRODUCT_V1 = "SONIC_CONSTANT_PRODUCT_V1",
7
- BERA_CONSTANT_PRODUCT_V1 = "BERA_CONSTANT_PRODUCT_V1"
7
+ BERA_CONSTANT_PRODUCT_V1 = "BERA_CONSTANT_PRODUCT_V1",
8
+ CONSTANT_PRODUCT_V2 = "CONSTANT_PRODUCT_V2",
9
+ FLAT_V1 = "FLAT_V1"
8
10
  }
@@ -9,5 +9,7 @@ var CurveType;
9
9
  CurveType["PUMP_FUN_V1"] = "PUMP_FUN_V1";
10
10
  CurveType["SONIC_CONSTANT_PRODUCT_V1"] = "SONIC_CONSTANT_PRODUCT_V1";
11
11
  CurveType["BERA_CONSTANT_PRODUCT_V1"] = "BERA_CONSTANT_PRODUCT_V1";
12
+ CurveType["CONSTANT_PRODUCT_V2"] = "CONSTANT_PRODUCT_V2";
13
+ CurveType["FLAT_V1"] = "FLAT_V1";
12
14
  })(CurveType = exports.CurveType || (exports.CurveType = {}));
13
15
  //# sourceMappingURL=curveType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"curveType.js","sourceRoot":"","sources":["../../../../src/domain/constants/curveType.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,wDAA2C,CAAA;IAC3C,gEAAmD,CAAA;IACnD,wCAA2B,CAAA;IAC3B,oEAAuD,CAAA;IACvD,kEAAqD,CAAA;AACvD,CAAC,EAPW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAOpB"}
1
+ {"version":3,"file":"curveType.js","sourceRoot":"","sources":["../../../../src/domain/constants/curveType.ts"],"names":[],"mappings":";;;AAAA,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,wDAA2C,CAAA;IAC3C,gEAAmD,CAAA;IACnD,wCAA2B,CAAA;IAC3B,oEAAuD,CAAA;IACvD,kEAAqD,CAAA;IACrD,wDAA2C,CAAA;IAC3C,gCAAmB,CAAA;AACrB,CAAC,EATW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QASpB"}
@@ -1,12 +1,12 @@
1
1
  export declare const URL_PATTERNS: {
2
2
  readonly WEBSITE: "^https?:\\/\\/[a-zA-Z0-9-_.]+\\.[a-zA-Z]{2,}(?:\\/[^\\s<>]*)?$";
3
- readonly TWITTER: "^https?:\\/\\/(twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]{1,15}$";
3
+ readonly X: "^https?:\\/\\/(x\\.com|x\\.com)\\/[a-zA-Z0-9_]{1,15}$";
4
4
  readonly TELEGRAM: "^https?:\\/\\/t\\.me\\/[a-zA-Z0-9_]{5,32}$";
5
5
  readonly DISCORD: "^https?:\\/\\/(discord\\.gg|discord\\.com\\/invite)\\/[a-zA-Z0-9-]{2,32}$";
6
6
  };
7
7
  export declare const URL_PATTERN_MESSAGES: {
8
8
  readonly WEBSITE: "Please enter a valid website URL";
9
- readonly TWITTER: "Please enter a valid Twitter/X profile URL";
9
+ readonly X: "Please enter a valid Twitter/X profile URL";
10
10
  readonly TELEGRAM: "Please enter a valid Telegram group URL";
11
11
  readonly DISCORD: "Please enter a valid Discord invite URL";
12
12
  };
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.URL_PATTERN_MESSAGES = exports.URL_PATTERNS = void 0;
4
4
  exports.URL_PATTERNS = {
5
5
  WEBSITE: '^https?:\\/\\/[a-zA-Z0-9-_.]+\\.[a-zA-Z]{2,}(?:\\/[^\\s<>]*)?$',
6
- TWITTER: '^https?:\\/\\/(twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]{1,15}$',
6
+ X: '^https?:\\/\\/(x\\.com|x\\.com)\\/[a-zA-Z0-9_]{1,15}$',
7
7
  TELEGRAM: '^https?:\\/\\/t\\.me\\/[a-zA-Z0-9_]{5,32}$',
8
8
  DISCORD: '^https?:\\/\\/(discord\\.gg|discord\\.com\\/invite)\\/[a-zA-Z0-9-]{2,32}$',
9
9
  };
10
10
  exports.URL_PATTERN_MESSAGES = {
11
11
  WEBSITE: 'Please enter a valid website URL',
12
- TWITTER: 'Please enter a valid Twitter/X profile URL',
12
+ X: 'Please enter a valid Twitter/X profile URL',
13
13
  TELEGRAM: 'Please enter a valid Telegram group URL',
14
14
  DISCORD: 'Please enter a valid Discord invite URL',
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"url-patterns.js","sourceRoot":"","sources":["../../../../src/domain/constants/url-patterns.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,gEAAgE;IACzE,OAAO,EAAE,6DAA6D;IACtE,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EACL,2EAA2E;CACrE,CAAC;AAEE,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,yCAAyC;IACnD,OAAO,EAAE,yCAAyC;CAC1C,CAAC"}
1
+ {"version":3,"file":"url-patterns.js","sourceRoot":"","sources":["../../../../src/domain/constants/url-patterns.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,OAAO,EAAE,gEAAgE;IACzE,CAAC,EAAE,uDAAuD;IAC1D,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EACL,2EAA2E;CACrE,CAAC;AAEE,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,kCAAkC;IAC3C,CAAC,EAAE,4CAA4C;IAC/C,QAAQ,EAAE,yCAAyC;IACnD,OAAO,EAAE,yCAAyC;CAC1C,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import BigNumber from 'bignumber.js';
2
- import { CalculationOptions, GetMarketCapOptions, GetPriceOptions } from './types';
2
+ import { CalculationOptions, CurveDefaults, GetMarketCapOptions, GetPriceOptions } from './types';
3
3
  export declare abstract class AbstractCurve {
4
+ curveDefaults: CurveDefaults;
4
5
  abstract getTokensAmountFromCollateral(options: CalculationOptions): bigint;
5
6
  abstract getCollateralAmountFromTokens(options: CalculationOptions): bigint;
6
7
  abstract getCollateralPrice(options: GetPriceOptions): BigNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractCurve.js","sourceRoot":"","sources":["../../../../src/domain/curves/AbstractCurve.ts"],"names":[],"mappings":";;;AAOA,MAAsB,aAAa;CAQlC;AARD,sCAQC"}
1
+ {"version":3,"file":"AbstractCurve.js","sourceRoot":"","sources":["../../../../src/domain/curves/AbstractCurve.ts"],"names":[],"mappings":";;;AAQA,MAAsB,aAAa;CAUlC;AAVD,sCAUC"}
@@ -0,0 +1,20 @@
1
+ import BigNumber from '../../config/bigNumber';
2
+ import { AbstractCurve } from './AbstractCurve';
3
+ import { CalculationOptions, GetMarketCapOptions, GetPriceOptions } from './types';
4
+ export declare abstract class ConstantProductCurve extends AbstractCurve {
5
+ marketCapToMinimalTokens: Map<bigint, bigint>;
6
+ protected initialVirtualCollateralReserves: bigint;
7
+ protected initialVirtualTokenReserves: bigint;
8
+ protected collateralDecimals: number;
9
+ protected constantProduct: bigint;
10
+ getTokensAmountFromCollateral(options: CalculationOptions): bigint;
11
+ getCollateralAmountFromTokens(options: CalculationOptions): bigint;
12
+ getCollateralPrice(options: GetPriceOptions): BigNumber;
13
+ getMarketCap(options: GetMarketCapOptions): bigint;
14
+ getDynamicThresholdFromMarketCap(marketCapThreshold: bigint): bigint;
15
+ private buyInToken;
16
+ private buyInCollateral;
17
+ private sellInToken;
18
+ private sellInCollateral;
19
+ private getCurrentReserves;
20
+ }
@@ -0,0 +1,120 @@
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.ConstantProductCurve = void 0;
7
+ const bigNumber_1 = __importDefault(require("../../config/bigNumber"));
8
+ const AbstractCurve_1 = require("./AbstractCurve");
9
+ const services_1 = require("../services");
10
+ class ConstantProductCurve extends AbstractCurve_1.AbstractCurve {
11
+ getTokensAmountFromCollateral(options) {
12
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
13
+ if (tradeDirection === 'BUY') {
14
+ const collateralAmount = amount - (amount * BigInt(platformFeeBps)) / 10000n;
15
+ return this.buyInCollateral(collateralAmount, curvePosition);
16
+ }
17
+ const collateralAmount = amount + (amount * BigInt(platformFeeBps)) / 10000n;
18
+ return this.sellInCollateral(collateralAmount, curvePosition);
19
+ }
20
+ getCollateralAmountFromTokens(options) {
21
+ const { amount, curvePosition, tradeDirection, platformFeeBps } = options;
22
+ if (tradeDirection === 'BUY') {
23
+ const collateralAmount = this.buyInToken(amount, curvePosition);
24
+ return (collateralAmount + (collateralAmount * BigInt(platformFeeBps)) / 10000n);
25
+ }
26
+ const collateralAmount = this.sellInToken(amount, curvePosition);
27
+ return (collateralAmount - (collateralAmount * BigInt(platformFeeBps)) / 10000n);
28
+ }
29
+ getCollateralPrice(options) {
30
+ const { curvePosition, collateralDecimals } = options;
31
+ const finalCollateralDecimals = collateralDecimals ?? this.collateralDecimals;
32
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
33
+ const baseCollateral = BigInt(10 ** finalCollateralDecimals);
34
+ const price = new bigNumber_1.default(currentVirtualCollateralReserves.toString()).div(new bigNumber_1.default(currentVirtualTokenReserves.toString()));
35
+ const inBaseUnits = price.multipliedBy(new bigNumber_1.default(baseCollateral.toString()));
36
+ return inBaseUnits;
37
+ }
38
+ getMarketCap(options) {
39
+ try {
40
+ const { curvePosition, tokenDecimals, collateralDecimals } = options;
41
+ const base = new bigNumber_1.default(10);
42
+ const baseTokens = base.pow(tokenDecimals ?? this.curveDefaults.tokenDecimals);
43
+ const curvePositionDecimal = new bigNumber_1.default(curvePosition.toString());
44
+ const price = this.getCollateralPrice({
45
+ curvePosition,
46
+ collateralDecimals,
47
+ });
48
+ const cap = price
49
+ .multipliedBy(curvePositionDecimal)
50
+ .dividedBy(baseTokens);
51
+ return BigInt(cap.integerValue(bigNumber_1.default.ROUND_FLOOR).toString());
52
+ }
53
+ catch (error) {
54
+ throw new Error(`Calculation error: ${error}`);
55
+ }
56
+ }
57
+ getDynamicThresholdFromMarketCap(marketCapThreshold) {
58
+ const baseTokens = BigInt(10 ** this.curveDefaults.tokenDecimals);
59
+ let low = 300000000n * baseTokens;
60
+ let high = 1000000000n * baseTokens;
61
+ let mid;
62
+ while (low < high) {
63
+ mid = (low + high + 1n) / 2n;
64
+ const marketCap = this.getMarketCap({ curvePosition: mid });
65
+ if (marketCap === marketCapThreshold) {
66
+ low = mid;
67
+ break;
68
+ }
69
+ else if (marketCap < marketCapThreshold) {
70
+ low = mid;
71
+ }
72
+ else {
73
+ high = mid - 1n;
74
+ }
75
+ }
76
+ while (this.getMarketCap({ curvePosition: low }) >= marketCapThreshold &&
77
+ low > 0n) {
78
+ low -= 1n;
79
+ }
80
+ return low + 1n;
81
+ }
82
+ buyInToken(tokenAmount, curvePosition) {
83
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
84
+ const newTokenReserves = currentVirtualTokenReserves - tokenAmount;
85
+ const ratio = this.constantProduct / newTokenReserves;
86
+ const lamportsToSpend = ratio - currentVirtualCollateralReserves;
87
+ return lamportsToSpend;
88
+ }
89
+ buyInCollateral(collateralAmount, curvePosition) {
90
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
91
+ const newCollateralReserves = currentVirtualCollateralReserves + collateralAmount;
92
+ const ratio = this.constantProduct / newCollateralReserves;
93
+ const tokensToBuy = currentVirtualTokenReserves - ratio;
94
+ return tokensToBuy;
95
+ }
96
+ sellInToken(tokenAmount, curvePosition) {
97
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
98
+ const newTokenReserves = currentVirtualTokenReserves + tokenAmount;
99
+ const ratio = this.constantProduct / newTokenReserves;
100
+ const lamportsToReceive = currentVirtualCollateralReserves - ratio;
101
+ return lamportsToReceive;
102
+ }
103
+ sellInCollateral(collateralAmount, curvePosition) {
104
+ const [currentVirtualTokenReserves, currentVirtualCollateralReserves] = this.getCurrentReserves(curvePosition);
105
+ const newCollateralReserves = currentVirtualCollateralReserves - collateralAmount;
106
+ const ratio = this.constantProduct / newCollateralReserves;
107
+ const tokensToSell = ratio - currentVirtualTokenReserves;
108
+ return tokensToSell;
109
+ }
110
+ getCurrentReserves(curvePosition) {
111
+ const currentVirtualTokenReserves = this.initialVirtualTokenReserves - curvePosition;
112
+ const currentVirtualCollateralReserves = (0, bigNumber_1.default)(this.constantProduct.toString()).div((0, bigNumber_1.default)(currentVirtualTokenReserves.toString()));
113
+ return [
114
+ currentVirtualTokenReserves,
115
+ services_1.AmountService.decimalToBigInt(currentVirtualCollateralReserves),
116
+ ];
117
+ }
118
+ }
119
+ exports.ConstantProductCurve = ConstantProductCurve;
120
+ //# sourceMappingURL=ConstantProductCurve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConstantProductCurve.js","sourceRoot":"","sources":["../../../../src/domain/curves/ConstantProductCurve.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,6 @@
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;
1
+ import { ConstantProductCurve } from './ConstantProductCurve';
2
+ export declare class ConstantProductCurveV1 extends ConstantProductCurve {
9
3
  dynamicThreshold: number;
10
4
  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;
5
+ constructor();
23
6
  }
@@ -1,26 +1,18 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.ConstantProductCurveV1 = void 0;
7
- const bigNumber_1 = __importDefault(require("../../config/bigNumber"));
8
- const AbstractCurve_1 = require("./AbstractCurve");
9
4
  const constants_1 = require("../constants");
10
- const services_1 = require("../services");
11
- class ConstantProductCurveV1 extends AbstractCurve_1.AbstractCurve {
5
+ const ConstantProductCurve_1 = require("./ConstantProductCurve");
6
+ class ConstantProductCurveV1 extends ConstantProductCurve_1.ConstantProductCurve {
12
7
  constructor() {
13
- super(...arguments);
8
+ super();
9
+ this.dynamicThreshold = 80;
10
+ this.maxThreshold = 82;
14
11
  this.initialVirtualTokenReserves = 1073000000000000000n;
15
12
  this.initialVirtualCollateralReserves = 30000000000n;
16
13
  this.collateralDecimals = 9;
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
- ]);
14
+ this.constantProduct =
15
+ this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
24
16
  this.curveDefaults = {
25
17
  type: constants_1.CurveType.CONSTANT_PRODUCT_V1,
26
18
  totalSupply: BigInt(1e18),
@@ -29,113 +21,10 @@ class ConstantProductCurveV1 extends AbstractCurve_1.AbstractCurve {
29
21
  maxAllocationTokenAmount: (BigInt(1e18) * BigInt(this.maxThreshold)) / 100n,
30
22
  address: '11111111111111111111111111111111',
31
23
  };
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
- ];
24
+ this.marketCapToMinimalTokens = new Map([
25
+ [345000000000n, 799820983207404442n],
26
+ [20000000000n, 336771070069821177n],
27
+ ]);
139
28
  }
140
29
  }
141
30
  exports.ConstantProductCurveV1 = ConstantProductCurveV1;
@@ -1 +1 @@
1
- {"version":3,"file":"ConstantProductCurveV1.js","sourceRoot":"","sources":["../../../../src/domain/curves/ConstantProductCurveV1.ts"],"names":[],"mappings":"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"}
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"}
@@ -0,0 +1,6 @@
1
+ import { ConstantProductCurve } from './ConstantProductCurve';
2
+ export declare class ConstantProductCurveV2 extends ConstantProductCurve {
3
+ dynamicThreshold: number;
4
+ maxThreshold: number;
5
+ constructor();
6
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConstantProductCurveV2 = void 0;
4
+ const constants_1 = require("../constants");
5
+ const ConstantProductCurve_1 = require("./ConstantProductCurve");
6
+ class ConstantProductCurveV2 extends ConstantProductCurve_1.ConstantProductCurve {
7
+ constructor() {
8
+ super();
9
+ this.dynamicThreshold = 80;
10
+ this.maxThreshold = 82;
11
+ this.initialVirtualTokenReserves = 1060000000000000000n;
12
+ this.initialVirtualCollateralReserves = 14000000000n;
13
+ this.collateralDecimals = 9;
14
+ this.constantProduct =
15
+ this.initialVirtualTokenReserves * this.initialVirtualCollateralReserves;
16
+ this.curveDefaults = {
17
+ type: constants_1.CurveType.CONSTANT_PRODUCT_V2,
18
+ totalSupply: BigInt(1e18),
19
+ tokenDecimals: 9,
20
+ minAllocationTokenAmount: (BigInt(1e18) * BigInt(this.dynamicThreshold)) / 100n,
21
+ maxAllocationTokenAmount: (BigInt(1e18) * BigInt(this.maxThreshold)) / 100n,
22
+ address: '11111111111111111111111111111111',
23
+ };
24
+ this.marketCapToMinimalTokens = new Map([
25
+ [200000000000n, 814207069725281919n],
26
+ [10000000000n, 344740929008610006n],
27
+ [20000000000n, 469667071199732347n],
28
+ ]);
29
+ }
30
+ }
31
+ exports.ConstantProductCurveV2 = ConstantProductCurveV2;
32
+ //# sourceMappingURL=ConstantProductCurveV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConstantProductCurveV2.js","sourceRoot":"","sources":["../../../../src/domain/curves/ConstantProductCurveV2.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;YAC3C,CAAC,YAAe,EAAE,mBAAwB,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF;AA/BD,wDA+BC"}
@@ -0,0 +1,14 @@
1
+ import BigNumber from '../../config/bigNumber';
2
+ import { AbstractCurve } from './AbstractCurve';
3
+ import { CalculationOptions, GetMarketCapOptions } from './types';
4
+ export declare class FlatCurveV1 extends AbstractCurve {
5
+ collateralCollected: bigint;
6
+ collateralDecimals: number;
7
+ dynamicThreshold: number;
8
+ maxThreshold: number;
9
+ constructor(collateralCollected: bigint, collateralDecimals?: number);
10
+ getTokensAmountFromCollateral(options: CalculationOptions): bigint;
11
+ getCollateralAmountFromTokens(options: CalculationOptions): bigint;
12
+ getCollateralPrice(): BigNumber;
13
+ getMarketCap(options: GetMarketCapOptions): bigint;
14
+ }
@@ -0,0 +1,60 @@
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.FlatCurveV1 = void 0;
7
+ const bigNumber_1 = __importDefault(require("../../config/bigNumber"));
8
+ const AbstractCurve_1 = require("./AbstractCurve");
9
+ const constants_1 = require("../constants");
10
+ const numbers_1 = require("../../utils/numbers");
11
+ class FlatCurveV1 extends AbstractCurve_1.AbstractCurve {
12
+ constructor(collateralCollected, collateralDecimals = 9) {
13
+ super();
14
+ this.dynamicThreshold = 49;
15
+ this.maxThreshold = 49.99;
16
+ this.collateralCollected = collateralCollected;
17
+ this.collateralDecimals = collateralDecimals;
18
+ this.curveDefaults = {
19
+ type: constants_1.CurveType.FLAT_V1,
20
+ totalSupply: BigInt(1e18),
21
+ tokenDecimals: 9,
22
+ minAllocationTokenAmount: (BigInt(1e18) * BigInt(this.dynamicThreshold)) / 100n,
23
+ maxAllocationTokenAmount: BigInt(1e18 * this.maxThreshold) / 100n,
24
+ address: '11111111111111111111111111111111',
25
+ };
26
+ }
27
+ getTokensAmountFromCollateral(options) {
28
+ const { amount, tradeDirection, platformFeeBps } = options;
29
+ const collateralAmount = tradeDirection === 'BUY'
30
+ ? amount - (amount * BigInt(platformFeeBps)) / 10000n
31
+ : amount + (amount * BigInt(platformFeeBps)) / 10000n;
32
+ return (0, numbers_1.bigNumberToBigInt)((0, numbers_1.bigIntToBigNumber)(collateralAmount).div(this.getCollateralPrice()));
33
+ }
34
+ getCollateralAmountFromTokens(options) {
35
+ const { amount, tradeDirection, platformFeeBps } = options;
36
+ const collateralAmount = (0, numbers_1.bigNumberToBigInt)((0, numbers_1.bigIntToBigNumber)(amount).multipliedBy(this.getCollateralPrice()));
37
+ return tradeDirection === 'BUY'
38
+ ? collateralAmount + (collateralAmount * BigInt(platformFeeBps)) / 10000n
39
+ : collateralAmount -
40
+ (collateralAmount * BigInt(platformFeeBps)) / 10000n;
41
+ }
42
+ getCollateralPrice() {
43
+ const collateralNormalized = (0, numbers_1.bigIntToBigNumber)(this.collateralCollected).div((0, bigNumber_1.default)(10).pow(this.collateralDecimals));
44
+ const minAllocationNormalized = (0, numbers_1.bigIntToBigNumber)(this.curveDefaults.minAllocationTokenAmount).div((0, bigNumber_1.default)(10).pow(this.curveDefaults.tokenDecimals));
45
+ return collateralNormalized.div(minAllocationNormalized);
46
+ }
47
+ getMarketCap(options) {
48
+ const { curvePosition } = options;
49
+ try {
50
+ const price = this.getCollateralPrice();
51
+ const cap = price.multipliedBy((0, numbers_1.bigIntToBigNumber)(curvePosition));
52
+ return BigInt(cap.integerValue(bigNumber_1.default.ROUND_FLOOR).toString());
53
+ }
54
+ catch (error) {
55
+ throw new Error(`Calculation error: ${error}`);
56
+ }
57
+ }
58
+ }
59
+ exports.FlatCurveV1 = FlatCurveV1;
60
+ //# sourceMappingURL=FlatCurveV1.js.map