@gala-chain/launchpad 1.0.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 (200) hide show
  1. package/.dev-env +7 -0
  2. package/.dockerignore +9 -0
  3. package/.eslintignore +4 -0
  4. package/.eslintrc.json +37 -0
  5. package/.github/workflows/publish-on-tag.yml +72 -0
  6. package/.github/workflows/test-on-push.yml +32 -0
  7. package/.nvmrc +1 -0
  8. package/.prettierignore +4 -0
  9. package/.prettierrc +12 -0
  10. package/Dockerfile +31 -0
  11. package/LICENSE +201 -0
  12. package/README.md +2 -0
  13. package/api-config.json +16 -0
  14. package/e2e/__snapshots__/api.spec.ts.snap +2482 -0
  15. package/e2e/api-config.json +17 -0
  16. package/e2e/api.spec.ts +48 -0
  17. package/e2e/jest.config.js +42 -0
  18. package/e2e/tsconfig.json +10 -0
  19. package/jest.config.ts +27 -0
  20. package/lib/jest.config.d.ts +13 -0
  21. package/lib/jest.config.d.ts.map +1 -0
  22. package/lib/jest.config.js +28 -0
  23. package/lib/jest.config.js.map +1 -0
  24. package/lib/package.json +54 -0
  25. package/lib/src/api/index.d.ts +4 -0
  26. package/lib/src/api/index.d.ts.map +1 -0
  27. package/lib/src/api/index.js +21 -0
  28. package/lib/src/api/index.js.map +1 -0
  29. package/lib/src/api/types/LaunchpadDtos.d.ts +102 -0
  30. package/lib/src/api/types/LaunchpadDtos.d.ts.map +1 -0
  31. package/lib/src/api/types/LaunchpadDtos.js +410 -0
  32. package/lib/src/api/types/LaunchpadDtos.js.map +1 -0
  33. package/lib/src/api/types/LaunchpadFeeConfig.d.ts +9 -0
  34. package/lib/src/api/types/LaunchpadFeeConfig.d.ts.map +1 -0
  35. package/lib/src/api/types/LaunchpadFeeConfig.js +56 -0
  36. package/lib/src/api/types/LaunchpadFeeConfig.js.map +1 -0
  37. package/lib/src/api/types/LaunchpadFinalizeAllocation.d.ts +10 -0
  38. package/lib/src/api/types/LaunchpadFinalizeAllocation.d.ts.map +1 -0
  39. package/lib/src/api/types/LaunchpadFinalizeAllocation.js +70 -0
  40. package/lib/src/api/types/LaunchpadFinalizeAllocation.js.map +1 -0
  41. package/lib/src/api/types/LaunchpadSale.d.ts +35 -0
  42. package/lib/src/api/types/LaunchpadSale.d.ts.map +1 -0
  43. package/lib/src/api/types/LaunchpadSale.js +195 -0
  44. package/lib/src/api/types/LaunchpadSale.js.map +1 -0
  45. package/lib/src/api/types/index.d.ts +5 -0
  46. package/lib/src/api/types/index.d.ts.map +1 -0
  47. package/lib/src/api/types/index.js +22 -0
  48. package/lib/src/api/types/index.js.map +1 -0
  49. package/lib/src/api/utils/error.d.ts +20 -0
  50. package/lib/src/api/utils/error.d.ts.map +1 -0
  51. package/lib/src/api/utils/error.js +35 -0
  52. package/lib/src/api/utils/error.js.map +1 -0
  53. package/lib/src/api/utils/index.d.ts +2 -0
  54. package/lib/src/api/utils/index.d.ts.map +1 -0
  55. package/lib/src/api/utils/index.js +19 -0
  56. package/lib/src/api/utils/index.js.map +1 -0
  57. package/lib/src/api/validators/decorators.d.ts +19 -0
  58. package/lib/src/api/validators/decorators.d.ts.map +1 -0
  59. package/lib/src/api/validators/decorators.js +391 -0
  60. package/lib/src/api/validators/decorators.js.map +1 -0
  61. package/lib/src/api/validators/index.d.ts +2 -0
  62. package/lib/src/api/validators/index.d.ts.map +1 -0
  63. package/lib/src/api/validators/index.js +19 -0
  64. package/lib/src/api/validators/index.js.map +1 -0
  65. package/lib/src/chaincode/LaunchpadContract.d.ts +20 -0
  66. package/lib/src/chaincode/LaunchpadContract.d.ts.map +1 -0
  67. package/lib/src/chaincode/LaunchpadContract.js +217 -0
  68. package/lib/src/chaincode/LaunchpadContract.js.map +1 -0
  69. package/lib/src/chaincode/dexLaunchpadFeeGate.d.ts +14 -0
  70. package/lib/src/chaincode/dexLaunchpadFeeGate.d.ts.map +1 -0
  71. package/lib/src/chaincode/dexLaunchpadFeeGate.js +47 -0
  72. package/lib/src/chaincode/dexLaunchpadFeeGate.js.map +1 -0
  73. package/lib/src/chaincode/index.d.ts +2 -0
  74. package/lib/src/chaincode/index.d.ts.map +1 -0
  75. package/lib/src/chaincode/index.js +19 -0
  76. package/lib/src/chaincode/index.js.map +1 -0
  77. package/lib/src/chaincode/launchpad/buyExactToken.d.ts +20 -0
  78. package/lib/src/chaincode/launchpad/buyExactToken.d.ts.map +1 -0
  79. package/lib/src/chaincode/launchpad/buyExactToken.js +113 -0
  80. package/lib/src/chaincode/launchpad/buyExactToken.js.map +1 -0
  81. package/lib/src/chaincode/launchpad/buyWithNative.d.ts +22 -0
  82. package/lib/src/chaincode/launchpad/buyWithNative.d.ts.map +1 -0
  83. package/lib/src/chaincode/launchpad/buyWithNative.js +106 -0
  84. package/lib/src/chaincode/launchpad/buyWithNative.js.map +1 -0
  85. package/lib/src/chaincode/launchpad/callMemeTokenIn.d.ts +27 -0
  86. package/lib/src/chaincode/launchpad/callMemeTokenIn.d.ts.map +1 -0
  87. package/lib/src/chaincode/launchpad/callMemeTokenIn.js +76 -0
  88. package/lib/src/chaincode/launchpad/callMemeTokenIn.js.map +1 -0
  89. package/lib/src/chaincode/launchpad/callMemeTokenOut.d.ts +25 -0
  90. package/lib/src/chaincode/launchpad/callMemeTokenOut.d.ts.map +1 -0
  91. package/lib/src/chaincode/launchpad/callMemeTokenOut.js +56 -0
  92. package/lib/src/chaincode/launchpad/callMemeTokenOut.js.map +1 -0
  93. package/lib/src/chaincode/launchpad/callNativeTokenIn.d.ts +25 -0
  94. package/lib/src/chaincode/launchpad/callNativeTokenIn.d.ts.map +1 -0
  95. package/lib/src/chaincode/launchpad/callNativeTokenIn.js +51 -0
  96. package/lib/src/chaincode/launchpad/callNativeTokenIn.js.map +1 -0
  97. package/lib/src/chaincode/launchpad/callNativeTokenOut.d.ts +26 -0
  98. package/lib/src/chaincode/launchpad/callNativeTokenOut.d.ts.map +1 -0
  99. package/lib/src/chaincode/launchpad/callNativeTokenOut.js +60 -0
  100. package/lib/src/chaincode/launchpad/callNativeTokenOut.js.map +1 -0
  101. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.d.ts +4 -0
  102. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.d.ts.map +1 -0
  103. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.js +58 -0
  104. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.js.map +1 -0
  105. package/lib/src/chaincode/launchpad/createSale.d.ts +26 -0
  106. package/lib/src/chaincode/launchpad/createSale.d.ts.map +1 -0
  107. package/lib/src/chaincode/launchpad/createSale.js +129 -0
  108. package/lib/src/chaincode/launchpad/createSale.js.map +1 -0
  109. package/lib/src/chaincode/launchpad/fees.d.ts +6 -0
  110. package/lib/src/chaincode/launchpad/fees.d.ts.map +1 -0
  111. package/lib/src/chaincode/launchpad/fees.js +85 -0
  112. package/lib/src/chaincode/launchpad/fees.js.map +1 -0
  113. package/lib/src/chaincode/launchpad/fetchLaunchpadAdressConfig.d.ts +4 -0
  114. package/lib/src/chaincode/launchpad/fetchLaunchpadAdressConfig.d.ts.map +1 -0
  115. package/lib/src/chaincode/launchpad/fetchLaunchpadAdressConfig.js +36 -0
  116. package/lib/src/chaincode/launchpad/fetchLaunchpadAdressConfig.js.map +1 -0
  117. package/lib/src/chaincode/launchpad/fetchSaleDetails.d.ts +19 -0
  118. package/lib/src/chaincode/launchpad/fetchSaleDetails.d.ts.map +1 -0
  119. package/lib/src/chaincode/launchpad/fetchSaleDetails.js +49 -0
  120. package/lib/src/chaincode/launchpad/fetchSaleDetails.js.map +1 -0
  121. package/lib/src/chaincode/launchpad/finaliseSale.d.ts +4 -0
  122. package/lib/src/chaincode/launchpad/finaliseSale.d.ts.map +1 -0
  123. package/lib/src/chaincode/launchpad/finaliseSale.js +144 -0
  124. package/lib/src/chaincode/launchpad/finaliseSale.js.map +1 -0
  125. package/lib/src/chaincode/launchpad/finalizeTokenAllocation.d.ts +4 -0
  126. package/lib/src/chaincode/launchpad/finalizeTokenAllocation.d.ts.map +1 -0
  127. package/lib/src/chaincode/launchpad/finalizeTokenAllocation.js +43 -0
  128. package/lib/src/chaincode/launchpad/finalizeTokenAllocation.js.map +1 -0
  129. package/lib/src/chaincode/launchpad/index.d.ts +15 -0
  130. package/lib/src/chaincode/launchpad/index.d.ts.map +1 -0
  131. package/lib/src/chaincode/launchpad/index.js +32 -0
  132. package/lib/src/chaincode/launchpad/index.js.map +1 -0
  133. package/lib/src/chaincode/launchpad/preMintCalculation.d.ts +17 -0
  134. package/lib/src/chaincode/launchpad/preMintCalculation.d.ts.map +1 -0
  135. package/lib/src/chaincode/launchpad/preMintCalculation.js +56 -0
  136. package/lib/src/chaincode/launchpad/preMintCalculation.js.map +1 -0
  137. package/lib/src/chaincode/launchpad/sellExactToken.d.ts +22 -0
  138. package/lib/src/chaincode/launchpad/sellExactToken.d.ts.map +1 -0
  139. package/lib/src/chaincode/launchpad/sellExactToken.js +102 -0
  140. package/lib/src/chaincode/launchpad/sellExactToken.js.map +1 -0
  141. package/lib/src/chaincode/launchpad/sellWithNative.d.ts +23 -0
  142. package/lib/src/chaincode/launchpad/sellWithNative.d.ts.map +1 -0
  143. package/lib/src/chaincode/launchpad/sellWithNative.js +97 -0
  144. package/lib/src/chaincode/launchpad/sellWithNative.js.map +1 -0
  145. package/lib/src/chaincode/utils/index.d.ts +2 -0
  146. package/lib/src/chaincode/utils/index.d.ts.map +1 -0
  147. package/lib/src/chaincode/utils/index.js +19 -0
  148. package/lib/src/chaincode/utils/index.js.map +1 -0
  149. package/lib/src/chaincode/utils/launchpadSaleUtils.d.ts +11 -0
  150. package/lib/src/chaincode/utils/launchpadSaleUtils.d.ts.map +1 -0
  151. package/lib/src/chaincode/utils/launchpadSaleUtils.js +65 -0
  152. package/lib/src/chaincode/utils/launchpadSaleUtils.js.map +1 -0
  153. package/lib/src/cli.d.ts +3 -0
  154. package/lib/src/cli.d.ts.map +1 -0
  155. package/lib/src/cli.js +41 -0
  156. package/lib/src/cli.js.map +1 -0
  157. package/lib/src/index.d.ts +14 -0
  158. package/lib/src/index.d.ts.map +1 -0
  159. package/lib/src/index.js +32 -0
  160. package/lib/src/index.js.map +1 -0
  161. package/lib/tsconfig.tsbuildinfo +1 -0
  162. package/package.json +54 -0
  163. package/src/api/index.ts +18 -0
  164. package/src/api/types/LaunchpadDtos.ts +362 -0
  165. package/src/api/types/LaunchpadFeeConfig.ts +45 -0
  166. package/src/api/types/LaunchpadFinalizeAllocation.ts +65 -0
  167. package/src/api/types/LaunchpadSale.ts +200 -0
  168. package/src/api/types/index.ts +19 -0
  169. package/src/api/utils/error.ts +32 -0
  170. package/src/api/utils/index.ts +16 -0
  171. package/src/api/validators/decorators.spec.ts +277 -0
  172. package/src/api/validators/decorators.ts +401 -0
  173. package/src/api/validators/index.ts +16 -0
  174. package/src/chaincode/LaunchpadContract.ts +211 -0
  175. package/src/chaincode/dexLaunchpadFeeGate.ts +43 -0
  176. package/src/chaincode/index.ts +16 -0
  177. package/src/chaincode/launchpad/buyExactToken.ts +128 -0
  178. package/src/chaincode/launchpad/buyWithNative.ts +120 -0
  179. package/src/chaincode/launchpad/callMemeTokenIn.ts +82 -0
  180. package/src/chaincode/launchpad/callMemeTokenOut.ts +80 -0
  181. package/src/chaincode/launchpad/callNativeTokenIn.ts +71 -0
  182. package/src/chaincode/launchpad/callNativeTokenOut.ts +81 -0
  183. package/src/chaincode/launchpad/configureLaunchpadFeeConfig.ts +69 -0
  184. package/src/chaincode/launchpad/createSale.ts +157 -0
  185. package/src/chaincode/launchpad/fees.ts +105 -0
  186. package/src/chaincode/launchpad/fetchLaunchpadAdressConfig.ts +38 -0
  187. package/src/chaincode/launchpad/fetchSaleDetails.ts +53 -0
  188. package/src/chaincode/launchpad/finaliseSale.ts +217 -0
  189. package/src/chaincode/launchpad/finalizeTokenAllocation.ts +47 -0
  190. package/src/chaincode/launchpad/index.ts +28 -0
  191. package/src/chaincode/launchpad/preMintCalculation.ts +61 -0
  192. package/src/chaincode/launchpad/sellExactToken.ts +122 -0
  193. package/src/chaincode/launchpad/sellWithNative.ts +112 -0
  194. package/src/chaincode/utils/index.ts +15 -0
  195. package/src/chaincode/utils/launchpadSaleUtils.ts +68 -0
  196. package/src/cli.ts +63 -0
  197. package/src/index.ts +32 -0
  198. package/tsconfig.base.json +29 -0
  199. package/tsconfig.json +19 -0
  200. package/tsconfig.spec.json +11 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sellExactToken = void 0;
4
+ /*
5
+ * Copyright (c) Gala Games Inc. All rights reserved.
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ const chaincode_1 = require("@gala-chain/chaincode");
19
+ const bignumber_js_1 = require("bignumber.js");
20
+ const types_1 = require("../../api/types");
21
+ const error_1 = require("../../api/utils/error");
22
+ const utils_1 = require("../utils");
23
+ const callMemeTokenIn_1 = require("./callMemeTokenIn");
24
+ const callNativeTokenOut_1 = require("./callNativeTokenOut");
25
+ const fees_1 = require("./fees");
26
+ bignumber_js_1.BigNumber.config({
27
+ ROUNDING_MODE: bignumber_js_1.BigNumber.ROUND_UP
28
+ });
29
+ /**
30
+ * Executes the sale of an exact amount of tokens for native tokens (e.g., GALA).
31
+ *
32
+ * This function facilitates selling a specific token amount by transferring the tokens to
33
+ * the sale vault and providing the calculated native tokens in return. It ensures validation
34
+ * of the sale, handles insufficient vault balances, and checks expected vs. actual native tokens.
35
+ *
36
+ * @param ctx - The context object providing access to the GalaChain environment.
37
+ * @param sellTokenDTO - An object containing the sale details:
38
+ * - `vaultAddress`: The address of the sale.
39
+ * - `tokenAmount`: The exact amount of tokens to sell.
40
+ * - `expectedNativeToken` (optional): The expected amount of native tokens in return.
41
+ *
42
+ * @returns A promise that resolves to a `TradeResDto` object containing the updated
43
+ * balances of the seller's tokens and native tokens.
44
+ *
45
+ * @throws DefaultError if the expected native tokens exceed the actual amount to be provided.
46
+ */
47
+ async function sellExactToken(ctx, sellTokenDTO) {
48
+ var _a;
49
+ const sale = await (0, utils_1.fetchAndValidateSale)(ctx, sellTokenDTO.vaultAddress);
50
+ const callNativeTokenOutResult = await (0, callNativeTokenOut_1.callNativeTokenOut)(ctx, sellTokenDTO);
51
+ let nativeTokensToProvide = new bignumber_js_1.BigNumber(callNativeTokenOutResult.calculatedQuantity);
52
+ const nativeTokensLeftInVault = new bignumber_js_1.BigNumber(sale.nativeTokenQuantity);
53
+ const nativeToken = sale.fetchNativeTokenInstanceKey();
54
+ const memeToken = sale.fetchSellingTokenInstanceKey();
55
+ if (nativeTokensLeftInVault.comparedTo(nativeTokensToProvide) < 0) {
56
+ nativeTokensToProvide = nativeTokensLeftInVault;
57
+ const nativeTokensBeingSoldDto = new types_1.NativeTokenQuantityDto(sellTokenDTO.vaultAddress, nativeTokensToProvide);
58
+ const callMemeTokenInResult = await (0, callMemeTokenIn_1.callMemeTokenIn)(ctx, nativeTokensBeingSoldDto);
59
+ sellTokenDTO.tokenQuantity = new bignumber_js_1.BigNumber(callMemeTokenInResult.calculatedQuantity);
60
+ }
61
+ if (sellTokenDTO.expectedNativeToken &&
62
+ sellTokenDTO.expectedNativeToken.comparedTo(nativeTokensToProvide) > 0) {
63
+ throw new error_1.SlippageToleranceExceededError("Expected Gala tokens from this operation exceeds the actual amount that will be provided.");
64
+ }
65
+ // The fee must be paid BEFORE the sale can happen.
66
+ // That means you cannot pay the fee using proceeds from the sale.
67
+ await (0, fees_1.payReverseBondingCurveFee)(ctx, sale, nativeTokensToProvide, (_a = sellTokenDTO.extraFees) === null || _a === void 0 ? void 0 : _a.maxAcceptableReverseBondingCurveFee);
68
+ await (0, chaincode_1.transferToken)(ctx, {
69
+ from: ctx.callingUser,
70
+ to: sellTokenDTO.vaultAddress,
71
+ tokenInstanceKey: memeToken,
72
+ quantity: sellTokenDTO.tokenQuantity,
73
+ allowancesToUse: [],
74
+ authorizedOnBehalf: undefined
75
+ });
76
+ await (0, chaincode_1.transferToken)(ctx, {
77
+ from: sellTokenDTO.vaultAddress,
78
+ to: ctx.callingUser,
79
+ tokenInstanceKey: nativeToken,
80
+ quantity: nativeTokensToProvide,
81
+ allowancesToUse: [],
82
+ authorizedOnBehalf: {
83
+ callingOnBehalf: sellTokenDTO.vaultAddress,
84
+ callingUser: ctx.callingUser
85
+ }
86
+ });
87
+ sale.sellToken(sellTokenDTO.tokenQuantity, nativeTokensToProvide);
88
+ await (0, chaincode_1.putChainObject)(ctx, sale);
89
+ const token = await (0, chaincode_1.fetchTokenClass)(ctx, sale.sellingToken);
90
+ return {
91
+ inputQuantity: sellTokenDTO.tokenQuantity.toFixed(),
92
+ outputQuantity: nativeTokensToProvide.toFixed(),
93
+ tokenName: token.name,
94
+ tradeType: "Sell",
95
+ vaultAddress: sellTokenDTO.vaultAddress,
96
+ userAddress: ctx.callingUser,
97
+ isFinalized: false,
98
+ functionName: "SellExactToken"
99
+ };
100
+ }
101
+ exports.sellExactToken = sellExactToken;
102
+ //# sourceMappingURL=sellExactToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sellExactToken.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellExactToken.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { GalaChainContext } from "@gala-chain/chaincode";
2
+ import { NativeTokenQuantityDto, TradeResDto } from "../../api/types";
3
+ /**
4
+ * Executes a sale of tokens using native tokens (e.g., GALA) in exchange for the specified token amount.
5
+ *
6
+ * This function handles the process of selling tokens for native tokens in the sale vault, ensuring
7
+ * that the token amount and native token quantity are properly adjusted based on the sale vault's
8
+ * available balance. It also checks if the expected token amount matches the actual amount required.
9
+ *
10
+ * @param ctx - The context object that provides access to the GalaChain environment.
11
+ * @param sellTokenDTO - An object containing the sale details:
12
+ * - `vaultAddress`: The address of the sale.
13
+ * - `nativeTokenAmount`: The amount of native tokens to be used in the sale.
14
+ * - `expectedToken` (optional): The expected amount of tokens to be received in return.
15
+ *
16
+ * @returns A promise that resolves to a `TradeResDto` object containing the updated
17
+ * balances of the seller's tokens and native tokens.
18
+ *
19
+ * @throws DefaultError if the expected token amount is less than the actual amount required
20
+ * for the operation.
21
+ */
22
+ export declare function sellWithNative(ctx: GalaChainContext, sellTokenDTO: NativeTokenQuantityDto): Promise<TradeResDto>;
23
+ //# sourceMappingURL=sellWithNative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sellWithNative.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellWithNative.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAkD,MAAM,uBAAuB,CAAC;AAGzG,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAUtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAAC,WAAW,CAAC,CA8DtB"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sellWithNative = void 0;
4
+ /*
5
+ * Copyright (c) Gala Games Inc. All rights reserved.
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ const chaincode_1 = require("@gala-chain/chaincode");
19
+ const bignumber_js_1 = require("bignumber.js");
20
+ const error_1 = require("../../api/utils/error");
21
+ const utils_1 = require("../utils");
22
+ const callMemeTokenIn_1 = require("./callMemeTokenIn");
23
+ const fees_1 = require("./fees");
24
+ bignumber_js_1.BigNumber.config({
25
+ ROUNDING_MODE: bignumber_js_1.BigNumber.ROUND_UP
26
+ });
27
+ /**
28
+ * Executes a sale of tokens using native tokens (e.g., GALA) in exchange for the specified token amount.
29
+ *
30
+ * This function handles the process of selling tokens for native tokens in the sale vault, ensuring
31
+ * that the token amount and native token quantity are properly adjusted based on the sale vault's
32
+ * available balance. It also checks if the expected token amount matches the actual amount required.
33
+ *
34
+ * @param ctx - The context object that provides access to the GalaChain environment.
35
+ * @param sellTokenDTO - An object containing the sale details:
36
+ * - `vaultAddress`: The address of the sale.
37
+ * - `nativeTokenAmount`: The amount of native tokens to be used in the sale.
38
+ * - `expectedToken` (optional): The expected amount of tokens to be received in return.
39
+ *
40
+ * @returns A promise that resolves to a `TradeResDto` object containing the updated
41
+ * balances of the seller's tokens and native tokens.
42
+ *
43
+ * @throws DefaultError if the expected token amount is less than the actual amount required
44
+ * for the operation.
45
+ */
46
+ async function sellWithNative(ctx, sellTokenDTO) {
47
+ var _a;
48
+ const sale = await (0, utils_1.fetchAndValidateSale)(ctx, sellTokenDTO.vaultAddress);
49
+ const nativeTokensLeftInVault = new bignumber_js_1.BigNumber(sale.nativeTokenQuantity);
50
+ if (nativeTokensLeftInVault.comparedTo(sellTokenDTO.nativeTokenQuantity) < 0) {
51
+ sellTokenDTO.nativeTokenQuantity = nativeTokensLeftInVault;
52
+ }
53
+ const callMemeTokenInResult = await (0, callMemeTokenIn_1.callMemeTokenIn)(ctx, sellTokenDTO);
54
+ const tokensToSell = new bignumber_js_1.BigNumber(callMemeTokenInResult.calculatedQuantity);
55
+ const nativeToken = sale.fetchNativeTokenInstanceKey();
56
+ const memeToken = sale.fetchSellingTokenInstanceKey();
57
+ if (sellTokenDTO.expectedToken && sellTokenDTO.expectedToken.comparedTo(tokensToSell) < 0) {
58
+ throw new error_1.SlippageToleranceExceededError("Token amount expected to cost for this operation is less than the the actual amount required.");
59
+ }
60
+ // The fee must be paid BEFORE the sale can happen.
61
+ // That means you cannot pay the fee using proceeds from the sale.
62
+ await (0, fees_1.payReverseBondingCurveFee)(ctx, sale, sellTokenDTO.nativeTokenQuantity, (_a = sellTokenDTO.extraFees) === null || _a === void 0 ? void 0 : _a.maxAcceptableReverseBondingCurveFee);
63
+ await (0, chaincode_1.transferToken)(ctx, {
64
+ from: ctx.callingUser,
65
+ to: sellTokenDTO.vaultAddress,
66
+ tokenInstanceKey: memeToken,
67
+ quantity: tokensToSell,
68
+ allowancesToUse: [],
69
+ authorizedOnBehalf: undefined
70
+ });
71
+ await (0, chaincode_1.transferToken)(ctx, {
72
+ from: sellTokenDTO.vaultAddress,
73
+ to: ctx.callingUser,
74
+ tokenInstanceKey: nativeToken,
75
+ quantity: sellTokenDTO.nativeTokenQuantity,
76
+ allowancesToUse: [],
77
+ authorizedOnBehalf: {
78
+ callingOnBehalf: sellTokenDTO.vaultAddress,
79
+ callingUser: ctx.callingUser
80
+ }
81
+ });
82
+ sale.sellToken(tokensToSell, sellTokenDTO.nativeTokenQuantity);
83
+ await (0, chaincode_1.putChainObject)(ctx, sale);
84
+ const token = await (0, chaincode_1.fetchTokenClass)(ctx, sale.sellingToken);
85
+ return {
86
+ inputQuantity: tokensToSell.toFixed(),
87
+ outputQuantity: sellTokenDTO.nativeTokenQuantity.toFixed(),
88
+ tokenName: token.name,
89
+ tradeType: "Sell",
90
+ vaultAddress: sellTokenDTO.vaultAddress,
91
+ userAddress: ctx.callingUser,
92
+ isFinalized: false,
93
+ functionName: "SellWithNative"
94
+ };
95
+ }
96
+ exports.sellWithNative = sellWithNative;
97
+ //# sourceMappingURL=sellWithNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sellWithNative.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellWithNative.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACH,qDAAyG;AACzG,+CAAyC;AAGzC,iDAAuE;AACvE,oCAAgD;AAChD,uDAAoD;AACpD,iCAAmD;AAEnD,wBAAS,CAAC,MAAM,CAAC;IACf,aAAa,EAAE,wBAAS,CAAC,QAAQ;CAClC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,cAAc,CAClC,GAAqB,EACrB,YAAoC;;IAEpC,MAAM,IAAI,GAAG,MAAM,IAAA,4BAAoB,EAAC,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAExE,MAAM,uBAAuB,GAAG,IAAI,wBAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxE,IAAI,uBAAuB,CAAC,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7E,YAAY,CAAC,mBAAmB,GAAG,uBAAuB,CAAC;IAC7D,CAAC;IAED,MAAM,qBAAqB,GAAG,MAAM,IAAA,iCAAe,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,wBAAS,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAEtD,IAAI,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,sCAA8B,CACtC,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,kEAAkE;IAClE,MAAM,IAAA,gCAAyB,EAC7B,GAAG,EACH,IAAI,EACJ,YAAY,CAAC,mBAAmB,EAChC,MAAA,YAAY,CAAC,SAAS,0CAAE,mCAAmC,CAC5D,CAAC;IAEF,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;QACvB,IAAI,EAAE,GAAG,CAAC,WAAW;QACrB,EAAE,EAAE,YAAY,CAAC,YAAY;QAC7B,gBAAgB,EAAE,SAAS;QAC3B,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,SAAS;KAC9B,CAAC,CAAC;IACH,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;QACvB,IAAI,EAAE,YAAY,CAAC,YAAY;QAC/B,EAAE,EAAE,GAAG,CAAC,WAAW;QACnB,gBAAgB,EAAE,WAAW;QAC7B,QAAQ,EAAE,YAAY,CAAC,mBAAmB;QAC1C,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE;YAClB,eAAe,EAAE,YAAY,CAAC,YAAY;YAC1C,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAe,EAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,OAAO;QACL,aAAa,EAAE,YAAY,CAAC,OAAO,EAAE;QACrC,cAAc,EAAE,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE;QAC1D,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,gBAAgB;KAC/B,CAAC;AACJ,CAAC;AAjED,wCAiEC"}
@@ -0,0 +1,2 @@
1
+ export * from "./launchpadSaleUtils";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/utils/index.ts"],"names":[],"mappings":"AAcA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /*
5
+ * Copyright (c) Gala Games Inc. All rights reserved.
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ tslib_1.__exportStar(require("./launchpadSaleUtils"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chaincode/utils/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACH,+DAAqC"}
@@ -0,0 +1,11 @@
1
+ import { GalaChainContext } from "@gala-chain/chaincode";
2
+ import Decimal from "decimal.js";
3
+ import { LaunchpadFeeConfig, LaunchpadSale } from "../../api/types";
4
+ export declare function fetchAndValidateSale(ctx: GalaChainContext, vaultAddress: string): Promise<LaunchpadSale>;
5
+ export declare function getBondingConstants(): {
6
+ exponentFactor: Decimal;
7
+ euler: Decimal;
8
+ decimals: Decimal;
9
+ };
10
+ export declare function fetchLaunchpadFeeAddress(ctx: GalaChainContext): Promise<LaunchpadFeeConfig | undefined>;
11
+ //# sourceMappingURL=launchpadSaleUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchpadSaleUtils.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/utils/launchpadSaleUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,uBAAuB,CAAC;AACzE,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAEhF,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,wBAAgB,mBAAmB;;;;EAMlC;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAazC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchLaunchpadFeeAddress = exports.getBondingConstants = exports.fetchAndValidateSale = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /*
6
+ * Copyright (c) Gala Games Inc. All rights reserved.
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ const api_1 = require("@gala-chain/api");
20
+ const chaincode_1 = require("@gala-chain/chaincode");
21
+ const decimal_js_1 = tslib_1.__importDefault(require("decimal.js"));
22
+ const types_1 = require("../../api/types");
23
+ async function fetchAndValidateSale(ctx, vaultAddress) {
24
+ const key = ctx.stub.createCompositeKey(types_1.LaunchpadSale.INDEX_KEY, [vaultAddress]);
25
+ const sale = await (0, chaincode_1.getObjectByKey)(ctx, types_1.LaunchpadSale, key).catch((e) => {
26
+ const chainError = api_1.ChainError.from(e);
27
+ if (chainError.matches(api_1.ErrorCode.NOT_FOUND)) {
28
+ return undefined;
29
+ }
30
+ else {
31
+ throw chainError;
32
+ }
33
+ });
34
+ if (sale === undefined) {
35
+ throw new api_1.NotFoundError("Sale record not found.");
36
+ }
37
+ if (sale.saleStatus === types_1.SaleStatus.END) {
38
+ throw new api_1.DefaultError("This sale has already ended.");
39
+ }
40
+ return sale;
41
+ }
42
+ exports.fetchAndValidateSale = fetchAndValidateSale;
43
+ function getBondingConstants() {
44
+ return {
45
+ exponentFactor: new decimal_js_1.default("1166069000000"), // exponent factor / b
46
+ euler: new decimal_js_1.default("2.7182818284590452353602874713527"), // e
47
+ decimals: new decimal_js_1.default("1e+18") // scaling factor for decimals
48
+ };
49
+ }
50
+ exports.getBondingConstants = getBondingConstants;
51
+ async function fetchLaunchpadFeeAddress(ctx) {
52
+ const key = ctx.stub.createCompositeKey(types_1.LaunchpadFeeConfig.INDEX_KEY, []);
53
+ const platformFeeAddress = await (0, chaincode_1.getObjectByKey)(ctx, types_1.LaunchpadFeeConfig, key).catch((e) => {
54
+ const chainError = api_1.ChainError.from(e);
55
+ if (chainError.matches(api_1.ErrorCode.NOT_FOUND)) {
56
+ return undefined;
57
+ }
58
+ else {
59
+ throw chainError;
60
+ }
61
+ });
62
+ return platformFeeAddress;
63
+ }
64
+ exports.fetchLaunchpadFeeAddress = fetchLaunchpadFeeAddress;
65
+ //# sourceMappingURL=launchpadSaleUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchpadSaleUtils.js","sourceRoot":"","sources":["../../../../src/chaincode/utils/launchpadSaleUtils.ts"],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;GAaG;AACH,yCAAqF;AACrF,qDAAyE;AACzE,oEAAiC;AAEjC,2CAAgF;AAEzE,KAAK,UAAU,oBAAoB,CACxC,GAAqB,EACrB,YAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,qBAAa,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,qBAAa,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACrE,MAAM,UAAU,GAAG,gBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,eAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAa,CAAC,wBAAwB,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,IAAI,kBAAY,CAAC,8BAA8B,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAtBD,oDAsBC;AAED,SAAgB,mBAAmB;IACjC,OAAO;QACL,cAAc,EAAE,IAAI,oBAAO,CAAC,eAAe,CAAC,EAAE,sBAAsB;QACpE,KAAK,EAAE,IAAI,oBAAO,CAAC,mCAAmC,CAAC,EAAE,IAAI;QAC7D,QAAQ,EAAE,IAAI,oBAAO,CAAC,OAAO,CAAC,CAAC,8BAA8B;KAC9D,CAAC;AACJ,CAAC;AAND,kDAMC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,GAAqB;IAErB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,0BAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE1E,MAAM,kBAAkB,GAAG,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,0BAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACxF,MAAM,UAAU,GAAG,gBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,eAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAfD,4DAeC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import "fabric-shim/cli";
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAmBA,OAAO,iBAAiB,CAAC"}
package/lib/src/cli.js ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ require("fabric-shim/cli");
6
+ const fs_1 = tslib_1.__importDefault(require("fs"));
7
+ const [, , customCommand] = process.argv;
8
+ if (customCommand === "get-contract-names") {
9
+ printContractNames();
10
+ process.exit(0);
11
+ }
12
+ if (customCommand === "get-contract-api") {
13
+ saveContractAPI("/tmp/contract-api.json");
14
+ process.exit(0);
15
+ }
16
+ function getContractInstances() {
17
+ // importing contracts would produce a lot of noise, so we set the log level to error
18
+ process.env.CORE_CHAINCODE_LOGGING_LEVEL = "error";
19
+ process.env.LOG_LEVEL = "error";
20
+ const { contracts } = require("./index");
21
+ return (contracts !== null && contracts !== void 0 ? contracts : [])
22
+ .filter((c) => typeof c === "function")
23
+ .map((Cls) => new Cls())
24
+ .filter((c) => typeof c.getName === "function");
25
+ }
26
+ function printContractNames() {
27
+ const response = getContractInstances()
28
+ .map((c) => c.getName())
29
+ .filter((name) => name !== undefined)
30
+ .sort()
31
+ .map((contractName) => ({ contractName }));
32
+ console.log(JSON.stringify(response));
33
+ }
34
+ function saveContractAPI(path) {
35
+ const response = getContractInstances()
36
+ .map((c) => c.getContractAPI())
37
+ .filter((api) => api !== undefined)
38
+ .sort((a, b) => a.contractName.localeCompare(b.contractName));
39
+ fs_1.default.writeFileSync(path, JSON.stringify(response));
40
+ }
41
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;AAmBA,2BAAyB;AACzB,oDAAoB;AAEpB,MAAM,CAAC,EAAE,AAAD,EAAG,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AACzC,IAAI,aAAa,KAAK,oBAAoB,EAAE,CAAC;IAC3C,kBAAkB,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,aAAa,KAAK,kBAAkB,EAAE,CAAC;IACzC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB;IAC3B,qFAAqF;IACrF,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,OAAO,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;IAEhC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;SACrB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC;SAC3C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;SACvB,MAAM,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,oBAAoB,EAAE;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvB,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SAC5C,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,YAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,QAAQ,GAAG,oBAAoB,EAAE;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,GAAgB,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;SAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAEhE,YAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import "dotenv/config";
2
+ import { GalaContract, GalaJSONSerializer } from "@gala-chain/chaincode";
3
+ export declare const contracts: {
4
+ new (): GalaContract;
5
+ }[];
6
+ export * from "./chaincode";
7
+ export * from "./api";
8
+ export declare const serializers: {
9
+ transaction: string;
10
+ serializers: {
11
+ galaJsonSerializer: typeof GalaJSONSerializer;
12
+ };
13
+ };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIzE,eAAO,MAAM,SAAS,EAAE;IAAE,QAAQ,YAAY,CAAA;CAAE,EAAwB,CAAC;AAEzE,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AAEtB,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializers = exports.contracts = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // sort-imports-ignore
6
+ /*
7
+ * Copyright (c) Gala Games Inc. All rights reserved.
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+ require("dotenv/config");
21
+ const chaincode_1 = require("@gala-chain/chaincode");
22
+ const chaincode_2 = require("./chaincode");
23
+ exports.contracts = [chaincode_2.LaunchpadContract];
24
+ tslib_1.__exportStar(require("./chaincode"), exports);
25
+ tslib_1.__exportStar(require("./api"), exports);
26
+ exports.serializers = {
27
+ transaction: "galaJsonSerializer",
28
+ serializers: {
29
+ galaJsonSerializer: chaincode_1.GalaJSONSerializer
30
+ }
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,sBAAsB;AACtB;;;;;;;;;;;;;GAaG;AACH,yBAAuB;AAEvB,qDAAyE;AAEzE,2CAAgD;AAEnC,QAAA,SAAS,GAA+B,CAAC,6BAAiB,CAAC,CAAC;AAEzE,sDAA4B;AAC5B,gDAAsB;AAET,QAAA,WAAW,GAAG;IACzB,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE;QACX,kBAAkB,EAAE,8BAAkB;KACvC;CACF,CAAC"}