@gala-chain/launchpad 1.0.0 → 1.0.2

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 (92) hide show
  1. package/lib/package.json +7 -7
  2. package/lib/src/api/types/LaunchpadBatchSubmitAuthorities.d.ts +12 -0
  3. package/lib/src/api/types/LaunchpadBatchSubmitAuthorities.d.ts.map +1 -0
  4. package/lib/src/api/types/LaunchpadBatchSubmitAuthorities.js +56 -0
  5. package/lib/src/api/types/LaunchpadBatchSubmitAuthorities.js.map +1 -0
  6. package/lib/src/api/types/LaunchpadDtos.d.ts +16 -0
  7. package/lib/src/api/types/LaunchpadDtos.d.ts.map +1 -1
  8. package/lib/src/api/types/LaunchpadDtos.js +53 -1
  9. package/lib/src/api/types/LaunchpadDtos.js.map +1 -1
  10. package/lib/src/api/types/LaunchpadFeeConfig.d.ts +3 -2
  11. package/lib/src/api/types/LaunchpadFeeConfig.d.ts.map +1 -1
  12. package/lib/src/api/types/LaunchpadFeeConfig.js +14 -4
  13. package/lib/src/api/types/LaunchpadFeeConfig.js.map +1 -1
  14. package/lib/src/api/types/index.d.ts +1 -0
  15. package/lib/src/api/types/index.d.ts.map +1 -1
  16. package/lib/src/api/types/index.js +1 -0
  17. package/lib/src/api/types/index.js.map +1 -1
  18. package/lib/src/chaincode/LaunchpadContract.d.ts +6 -1
  19. package/lib/src/chaincode/LaunchpadContract.d.ts.map +1 -1
  20. package/lib/src/chaincode/LaunchpadContract.js +85 -0
  21. package/lib/src/chaincode/LaunchpadContract.js.map +1 -1
  22. package/lib/src/chaincode/launchpad/buyExactToken.d.ts.map +1 -1
  23. package/lib/src/chaincode/launchpad/buyExactToken.js +15 -0
  24. package/lib/src/chaincode/launchpad/buyExactToken.js.map +1 -1
  25. package/lib/src/chaincode/launchpad/buyWithNative.d.ts.map +1 -1
  26. package/lib/src/chaincode/launchpad/buyWithNative.js +24 -0
  27. package/lib/src/chaincode/launchpad/buyWithNative.js.map +1 -1
  28. package/lib/src/chaincode/launchpad/callMemeTokenIn.d.ts +1 -0
  29. package/lib/src/chaincode/launchpad/callMemeTokenIn.d.ts.map +1 -1
  30. package/lib/src/chaincode/launchpad/callMemeTokenIn.js +3 -1
  31. package/lib/src/chaincode/launchpad/callMemeTokenIn.js.map +1 -1
  32. package/lib/src/chaincode/launchpad/callMemeTokenOut.d.ts +1 -0
  33. package/lib/src/chaincode/launchpad/callMemeTokenOut.d.ts.map +1 -1
  34. package/lib/src/chaincode/launchpad/callMemeTokenOut.js +4 -1
  35. package/lib/src/chaincode/launchpad/callMemeTokenOut.js.map +1 -1
  36. package/lib/src/chaincode/launchpad/callNativeTokenIn.d.ts +1 -0
  37. package/lib/src/chaincode/launchpad/callNativeTokenIn.d.ts.map +1 -1
  38. package/lib/src/chaincode/launchpad/callNativeTokenIn.js +6 -2
  39. package/lib/src/chaincode/launchpad/callNativeTokenIn.js.map +1 -1
  40. package/lib/src/chaincode/launchpad/callNativeTokenOut.d.ts +1 -0
  41. package/lib/src/chaincode/launchpad/callNativeTokenOut.d.ts.map +1 -1
  42. package/lib/src/chaincode/launchpad/callNativeTokenOut.js +3 -1
  43. package/lib/src/chaincode/launchpad/callNativeTokenOut.js.map +1 -1
  44. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.d.ts +12 -0
  45. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.d.ts.map +1 -1
  46. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.js +26 -6
  47. package/lib/src/chaincode/launchpad/configureLaunchpadFeeConfig.js.map +1 -1
  48. package/lib/src/chaincode/launchpad/createSale.d.ts.map +1 -1
  49. package/lib/src/chaincode/launchpad/createSale.js +2 -0
  50. package/lib/src/chaincode/launchpad/createSale.js.map +1 -1
  51. package/lib/src/chaincode/launchpad/fees.d.ts +1 -0
  52. package/lib/src/chaincode/launchpad/fees.d.ts.map +1 -1
  53. package/lib/src/chaincode/launchpad/fees.js +6 -2
  54. package/lib/src/chaincode/launchpad/fees.js.map +1 -1
  55. package/lib/src/chaincode/launchpad/finaliseSale.js +3 -3
  56. package/lib/src/chaincode/launchpad/finaliseSale.js.map +1 -1
  57. package/lib/src/chaincode/launchpad/index.d.ts +1 -0
  58. package/lib/src/chaincode/launchpad/index.d.ts.map +1 -1
  59. package/lib/src/chaincode/launchpad/index.js +1 -0
  60. package/lib/src/chaincode/launchpad/index.js.map +1 -1
  61. package/lib/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.d.ts +24 -0
  62. package/lib/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.d.ts.map +1 -0
  63. package/lib/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.js +84 -0
  64. package/lib/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.js.map +1 -0
  65. package/lib/src/chaincode/launchpad/sellExactToken.d.ts.map +1 -1
  66. package/lib/src/chaincode/launchpad/sellExactToken.js +27 -8
  67. package/lib/src/chaincode/launchpad/sellExactToken.js.map +1 -1
  68. package/lib/src/chaincode/launchpad/sellWithNative.d.ts.map +1 -1
  69. package/lib/src/chaincode/launchpad/sellWithNative.js +26 -2
  70. package/lib/src/chaincode/launchpad/sellWithNative.js.map +1 -1
  71. package/lib/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +8 -8
  73. package/src/api/types/LaunchpadBatchSubmitAuthorities.ts +53 -0
  74. package/src/api/types/LaunchpadDtos.ts +44 -0
  75. package/src/api/types/LaunchpadFeeConfig.ts +13 -4
  76. package/src/api/types/index.ts +1 -0
  77. package/src/chaincode/LaunchpadContract.ts +96 -1
  78. package/src/chaincode/launchpad/buyExactToken.ts +17 -1
  79. package/src/chaincode/launchpad/buyWithNative.ts +28 -1
  80. package/src/chaincode/launchpad/callMemeTokenIn.ts +8 -3
  81. package/src/chaincode/launchpad/callMemeTokenOut.ts +8 -2
  82. package/src/chaincode/launchpad/callNativeTokenIn.ts +10 -3
  83. package/src/chaincode/launchpad/callNativeTokenOut.ts +8 -3
  84. package/src/chaincode/launchpad/configureLaunchpadFeeConfig.ts +27 -4
  85. package/src/chaincode/launchpad/createSale.ts +2 -0
  86. package/src/chaincode/launchpad/fees.ts +5 -1
  87. package/src/chaincode/launchpad/finaliseSale.ts +3 -3
  88. package/src/chaincode/launchpad/index.ts +1 -0
  89. package/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.spec.ts +185 -0
  90. package/src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.ts +105 -0
  91. package/src/chaincode/launchpad/sellExactToken.ts +30 -11
  92. package/src/chaincode/launchpad/sellWithNative.ts +30 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchpadBatchSubmitAuthorizations.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAkC,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAE5B,8BAA8B,EAC9B,+BAA+B,EAChC,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,wBAAsB,oCAAoC,CACxD,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,+BAA+B,CAAC,CAI1C;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,4BAA4B,CAAC,CAqBvC;AAED;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAChC,OAAO,CAAC,4BAA4B,CAAC,CASvC;AAED;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,8BAA8B,GAClC,OAAO,CAAC,4BAA4B,CAAC,CAMvC;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjG"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAuthorizedForLaunchpadBatchSubmit = exports.getLaunchpadBatchSubmitAuthorities = exports.deauthorizeLaunchpadBatchSubmitter = exports.authorizeLaunchpadBatchSubmitter = exports.fetchLaunchpadBatchSubmitAuthorities = 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 api_1 = require("@gala-chain/api");
19
+ const chaincode_1 = require("@gala-chain/chaincode");
20
+ const api_2 = require("../../api");
21
+ /**
22
+ * Fetches the batch submit authorities from the chain.
23
+ */
24
+ async function fetchLaunchpadBatchSubmitAuthorities(ctx) {
25
+ const key = ctx.stub.createCompositeKey(api_2.LaunchpadBatchSubmitAuthorities.INDEX_KEY, []);
26
+ return await (0, chaincode_1.getObjectByKey)(ctx, api_2.LaunchpadBatchSubmitAuthorities, key);
27
+ }
28
+ exports.fetchLaunchpadBatchSubmitAuthorities = fetchLaunchpadBatchSubmitAuthorities;
29
+ /**
30
+ * Authorizes users to call BatchSubmit operations.
31
+ * Only existing authorized users can add new authorizations.
32
+ */
33
+ async function authorizeLaunchpadBatchSubmitter(ctx, dto) {
34
+ const key = ctx.stub.createCompositeKey(api_2.LaunchpadBatchSubmitAuthorities.INDEX_KEY, []);
35
+ const authorities = await (0, chaincode_1.getObjectByKey)(ctx, api_2.LaunchpadBatchSubmitAuthorities, key).catch((e) => {
36
+ const chainError = api_1.ChainError.from(e);
37
+ if (chainError.matches(api_2.ErrorCode.NOT_FOUND)) {
38
+ return new api_2.LaunchpadBatchSubmitAuthorities([]);
39
+ }
40
+ else {
41
+ throw chainError;
42
+ }
43
+ });
44
+ // Add new authorities
45
+ for (const authority of dto.authorities) {
46
+ authorities.addAuthority(authority);
47
+ }
48
+ await (0, chaincode_1.putChainObject)(ctx, authorities);
49
+ const result = new api_2.BatchSubmitAuthoritiesResDto();
50
+ result.authorities = authorities.getAuthorities();
51
+ return result;
52
+ }
53
+ exports.authorizeLaunchpadBatchSubmitter = authorizeLaunchpadBatchSubmitter;
54
+ /**
55
+ * Deauthorizes a user from calling BatchSubmit operations.
56
+ */
57
+ async function deauthorizeLaunchpadBatchSubmitter(ctx, dto) {
58
+ const authorities = await fetchLaunchpadBatchSubmitAuthorities(ctx);
59
+ authorities.removeAuthority(dto.authority);
60
+ await (0, chaincode_1.putChainObject)(ctx, authorities);
61
+ const result = new api_2.BatchSubmitAuthoritiesResDto();
62
+ result.authorities = authorities.getAuthorities();
63
+ return result;
64
+ }
65
+ exports.deauthorizeLaunchpadBatchSubmitter = deauthorizeLaunchpadBatchSubmitter;
66
+ /**
67
+ * Fetches the current batch submit authorizations.
68
+ */
69
+ async function getLaunchpadBatchSubmitAuthorities(ctx, dto) {
70
+ const authorities = await fetchLaunchpadBatchSubmitAuthorities(ctx);
71
+ const result = new api_2.BatchSubmitAuthoritiesResDto();
72
+ result.authorities = authorities.getAuthorities();
73
+ return result;
74
+ }
75
+ exports.getLaunchpadBatchSubmitAuthorities = getLaunchpadBatchSubmitAuthorities;
76
+ /**
77
+ * Checks if the calling user is authorized to perform batch submit operations.
78
+ */
79
+ async function isAuthorizedForLaunchpadBatchSubmit(ctx) {
80
+ const authorities = await fetchLaunchpadBatchSubmitAuthorities(ctx);
81
+ return authorities.isAuthorized(ctx.callingUser);
82
+ }
83
+ exports.isAuthorizedForLaunchpadBatchSubmit = isAuthorizedForLaunchpadBatchSubmit;
84
+ //# sourceMappingURL=launchpadBatchSubmitAuthorizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchpadBatchSubmitAuthorizations.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/launchpadBatchSubmitAuthorizations.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACH,yCAA6C;AAC7C,qDAAyF;AAEzF,mCAOmB;AAEnB;;GAEG;AACI,KAAK,UAAU,oCAAoC,CACxD,GAAqB;IAErB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,qCAA+B,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEvF,OAAO,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,qCAA+B,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAND,oFAMC;AAED;;;GAGG;AACI,KAAK,UAAU,gCAAgC,CACpD,GAAqB,EACrB,GAA+B;IAE/B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,qCAA+B,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,qCAA+B,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9F,MAAM,UAAU,GAAG,gBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,eAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,qCAA+B,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,kCAA4B,EAAE,CAAC;IAClD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,4EAwBC;AAED;;GAEG;AACI,KAAK,UAAU,kCAAkC,CACtD,GAAqB,EACrB,GAAiC;IAEjC,MAAM,WAAW,GAAG,MAAM,oCAAoC,CAAC,GAAG,CAAC,CAAC;IAEpE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,IAAA,0BAAc,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,kCAA4B,EAAE,CAAC;IAClD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,gFAYC;AAED;;GAEG;AACI,KAAK,UAAU,kCAAkC,CACtD,GAAqB,EACrB,GAAmC;IAEnC,MAAM,WAAW,GAAG,MAAM,oCAAoC,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,kCAA4B,EAAE,CAAC;IAElD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AATD,gFASC;AAED;;GAEG;AACI,KAAK,UAAU,mCAAmC,CAAC,GAAqB;IAC7E,MAAM,WAAW,GAAG,MAAM,oCAAoC,CAAC,GAAG,CAAC,CAAC;IACpE,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAHD,kFAGC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sellExactToken.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellExactToken.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAkD,MAAM,uBAAuB,CAAC;AAGzG,OAAO,EAAE,qBAAqB,EAA0B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAW7F;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,WAAW,CAAC,CAwEtB"}
1
+ {"version":3,"file":"sellExactToken.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellExactToken.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAkD,MAAM,uBAAuB,CAAC;AAGzG,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAUrE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,WAAW,CAAC,CA2FtB"}
@@ -15,12 +15,11 @@ exports.sellExactToken = void 0;
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
17
  */
18
+ const api_1 = require("@gala-chain/api");
18
19
  const chaincode_1 = require("@gala-chain/chaincode");
19
20
  const bignumber_js_1 = require("bignumber.js");
20
- const types_1 = require("../../api/types");
21
21
  const error_1 = require("../../api/utils/error");
22
22
  const utils_1 = require("../utils");
23
- const callMemeTokenIn_1 = require("./callMemeTokenIn");
24
23
  const callNativeTokenOut_1 = require("./callNativeTokenOut");
25
24
  const fees_1 = require("./fees");
26
25
  bignumber_js_1.BigNumber.config({
@@ -45,19 +44,21 @@ bignumber_js_1.BigNumber.config({
45
44
  * @throws DefaultError if the expected native tokens exceed the actual amount to be provided.
46
45
  */
47
46
  async function sellExactToken(ctx, sellTokenDTO) {
48
- var _a;
47
+ var _a, _b, _c;
48
+ // Fetch and validate the current sale object
49
49
  const sale = await (0, utils_1.fetchAndValidateSale)(ctx, sellTokenDTO.vaultAddress);
50
+ // Determine how much native token (e.g., GALA) the user will receive for the exact token quantity
50
51
  const callNativeTokenOutResult = await (0, callNativeTokenOut_1.callNativeTokenOut)(ctx, sellTokenDTO);
51
- let nativeTokensToProvide = new bignumber_js_1.BigNumber(callNativeTokenOutResult.calculatedQuantity);
52
+ const nativeTokensToProvide = new bignumber_js_1.BigNumber(callNativeTokenOutResult.calculatedQuantity);
53
+ const transactionFees = callNativeTokenOutResult.extraFees.transactionFees;
52
54
  const nativeTokensLeftInVault = new bignumber_js_1.BigNumber(sale.nativeTokenQuantity);
53
55
  const nativeToken = sale.fetchNativeTokenInstanceKey();
54
56
  const memeToken = sale.fetchSellingTokenInstanceKey();
57
+ // Abort if the vault doesn't have enough native tokens to pay the user
55
58
  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);
59
+ throw new api_1.ValidationFailedError("Not enough GALA in sale contract to carry out this operation.");
60
60
  }
61
+ // Enforce slippage tolerance: expected amount must not be greater than what will actually be received
61
62
  if (sellTokenDTO.expectedNativeToken &&
62
63
  sellTokenDTO.expectedNativeToken.comparedTo(nativeTokensToProvide) > 0) {
63
64
  throw new error_1.SlippageToleranceExceededError("Expected Gala tokens from this operation exceeds the actual amount that will be provided.");
@@ -65,6 +66,19 @@ async function sellExactToken(ctx, sellTokenDTO) {
65
66
  // The fee must be paid BEFORE the sale can happen.
66
67
  // That means you cannot pay the fee using proceeds from the sale.
67
68
  await (0, fees_1.payReverseBondingCurveFee)(ctx, sale, nativeTokensToProvide, (_a = sellTokenDTO.extraFees) === null || _a === void 0 ? void 0 : _a.maxAcceptableReverseBondingCurveFee);
69
+ // Transfer launchpad transaction fee if applicable
70
+ const launchpadFeeAddressConfiguration = await (0, utils_1.fetchLaunchpadFeeAddress)(ctx);
71
+ if (launchpadFeeAddressConfiguration && transactionFees) {
72
+ await (0, chaincode_1.transferToken)(ctx, {
73
+ from: ctx.callingUser,
74
+ to: launchpadFeeAddressConfiguration.feeAddress,
75
+ tokenInstanceKey: nativeToken,
76
+ quantity: new bignumber_js_1.BigNumber(transactionFees),
77
+ allowancesToUse: [],
78
+ authorizedOnBehalf: undefined
79
+ });
80
+ }
81
+ // Transfer meme tokens from user to vault
68
82
  await (0, chaincode_1.transferToken)(ctx, {
69
83
  from: ctx.callingUser,
70
84
  to: sellTokenDTO.vaultAddress,
@@ -73,6 +87,7 @@ async function sellExactToken(ctx, sellTokenDTO) {
73
87
  allowancesToUse: [],
74
88
  authorizedOnBehalf: undefined
75
89
  });
90
+ // Transfer native tokens from vault to user
76
91
  await (0, chaincode_1.transferToken)(ctx, {
77
92
  from: sellTokenDTO.vaultAddress,
78
93
  to: ctx.callingUser,
@@ -84,11 +99,15 @@ async function sellExactToken(ctx, sellTokenDTO) {
84
99
  callingUser: ctx.callingUser
85
100
  }
86
101
  });
102
+ // Update sale state with this transaction
87
103
  sale.sellToken(sellTokenDTO.tokenQuantity, nativeTokensToProvide);
88
104
  await (0, chaincode_1.putChainObject)(ctx, sale);
89
105
  const token = await (0, chaincode_1.fetchTokenClass)(ctx, sale.sellingToken);
90
106
  return {
91
107
  inputQuantity: sellTokenDTO.tokenQuantity.toFixed(),
108
+ totalFees: new bignumber_js_1.BigNumber(transactionFees)
109
+ .plus((_c = (_b = sellTokenDTO.extraFees) === null || _b === void 0 ? void 0 : _b.maxAcceptableReverseBondingCurveFee) !== null && _c !== void 0 ? _c : 0)
110
+ .toFixed(),
92
111
  outputQuantity: nativeTokensToProvide.toFixed(),
93
112
  tokenName: token.name,
94
113
  tradeType: "Sell",
@@ -1 +1 @@
1
- {"version":3,"file":"sellExactToken.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellExactToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sellExactToken.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellExactToken.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
1
+ {"version":3,"file":"sellWithNative.d.ts","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellWithNative.ts"],"names":[],"mappings":"AAeA,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,CAyFtB"}
@@ -15,6 +15,7 @@ exports.sellWithNative = void 0;
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
17
  */
18
+ const api_1 = require("@gala-chain/api");
18
19
  const chaincode_1 = require("@gala-chain/chaincode");
19
20
  const bignumber_js_1 = require("bignumber.js");
20
21
  const error_1 = require("../../api/utils/error");
@@ -44,22 +45,40 @@ bignumber_js_1.BigNumber.config({
44
45
  * for the operation.
45
46
  */
46
47
  async function sellWithNative(ctx, sellTokenDTO) {
47
- var _a;
48
+ var _a, _b, _c;
49
+ // Fetch and validate the sale object
48
50
  const sale = await (0, utils_1.fetchAndValidateSale)(ctx, sellTokenDTO.vaultAddress);
49
51
  const nativeTokensLeftInVault = new bignumber_js_1.BigNumber(sale.nativeTokenQuantity);
52
+ // Cap nativeTokenQuantity to the vault balance if the requested amount exceeds it
50
53
  if (nativeTokensLeftInVault.comparedTo(sellTokenDTO.nativeTokenQuantity) < 0) {
51
- sellTokenDTO.nativeTokenQuantity = nativeTokensLeftInVault;
54
+ throw new api_1.ValidationFailedError("Not enough GALA in sale contract to carry out this operation.");
52
55
  }
56
+ // Calculate how many tokens need to be sold to get the requested native amount
53
57
  const callMemeTokenInResult = await (0, callMemeTokenIn_1.callMemeTokenIn)(ctx, sellTokenDTO);
58
+ const transactionFees = callMemeTokenInResult.extraFees.transactionFees;
54
59
  const tokensToSell = new bignumber_js_1.BigNumber(callMemeTokenInResult.calculatedQuantity);
55
60
  const nativeToken = sale.fetchNativeTokenInstanceKey();
56
61
  const memeToken = sale.fetchSellingTokenInstanceKey();
62
+ // Enforce slippage tolerance
57
63
  if (sellTokenDTO.expectedToken && sellTokenDTO.expectedToken.comparedTo(tokensToSell) < 0) {
58
64
  throw new error_1.SlippageToleranceExceededError("Token amount expected to cost for this operation is less than the the actual amount required.");
59
65
  }
60
66
  // The fee must be paid BEFORE the sale can happen.
61
67
  // That means you cannot pay the fee using proceeds from the sale.
62
68
  await (0, fees_1.payReverseBondingCurveFee)(ctx, sale, sellTokenDTO.nativeTokenQuantity, (_a = sellTokenDTO.extraFees) === null || _a === void 0 ? void 0 : _a.maxAcceptableReverseBondingCurveFee);
69
+ // Transfer launchpad transaction fees if applicable
70
+ const launchpadFeeAddressConfiguration = await (0, utils_1.fetchLaunchpadFeeAddress)(ctx);
71
+ if (launchpadFeeAddressConfiguration && transactionFees) {
72
+ await (0, chaincode_1.transferToken)(ctx, {
73
+ from: ctx.callingUser,
74
+ to: launchpadFeeAddressConfiguration.feeAddress,
75
+ tokenInstanceKey: nativeToken,
76
+ quantity: new bignumber_js_1.BigNumber(transactionFees),
77
+ allowancesToUse: [],
78
+ authorizedOnBehalf: undefined
79
+ });
80
+ }
81
+ // Send meme tokens from user to vault
63
82
  await (0, chaincode_1.transferToken)(ctx, {
64
83
  from: ctx.callingUser,
65
84
  to: sellTokenDTO.vaultAddress,
@@ -68,6 +87,7 @@ async function sellWithNative(ctx, sellTokenDTO) {
68
87
  allowancesToUse: [],
69
88
  authorizedOnBehalf: undefined
70
89
  });
90
+ // Send native tokens from vault to user
71
91
  await (0, chaincode_1.transferToken)(ctx, {
72
92
  from: sellTokenDTO.vaultAddress,
73
93
  to: ctx.callingUser,
@@ -79,11 +99,15 @@ async function sellWithNative(ctx, sellTokenDTO) {
79
99
  callingUser: ctx.callingUser
80
100
  }
81
101
  });
102
+ // Update internal sale tracking
82
103
  sale.sellToken(tokensToSell, sellTokenDTO.nativeTokenQuantity);
83
104
  await (0, chaincode_1.putChainObject)(ctx, sale);
84
105
  const token = await (0, chaincode_1.fetchTokenClass)(ctx, sale.sellingToken);
85
106
  return {
86
107
  inputQuantity: tokensToSell.toFixed(),
108
+ totalFees: new bignumber_js_1.BigNumber(transactionFees)
109
+ .plus((_c = (_b = sellTokenDTO.extraFees) === null || _b === void 0 ? void 0 : _b.maxAcceptableReverseBondingCurveFee) !== null && _c !== void 0 ? _c : 0)
110
+ .toFixed(),
87
111
  outputQuantity: sellTokenDTO.nativeTokenQuantity.toFixed(),
88
112
  tokenName: token.name,
89
113
  tradeType: "Sell",
@@ -1 +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"}
1
+ {"version":3,"file":"sellWithNative.js","sourceRoot":"","sources":["../../../../src/chaincode/launchpad/sellWithNative.ts"],"names":[],"mappings":"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"}