@reyaxyz/community-sdk 0.55.4 → 0.55.5

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.
@@ -58,6 +58,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
58
58
  };
59
59
  Object.defineProperty(exports, "__esModule", { value: true });
60
60
  var common_1 = require("@reyaxyz/common");
61
+ var sign_1 = require("./services/sign");
61
62
  var TGEModule = /** @class */ (function (_super) {
62
63
  __extends(TGEModule, _super);
63
64
  function TGEModule(apiUrl, loggingEnabled) {
@@ -75,9 +76,89 @@ var TGEModule = /** @class */ (function (_super) {
75
76
  });
76
77
  });
77
78
  };
79
+ TGEModule.prototype.getClaimingInfo = function (params) {
80
+ return __awaiter(this, void 0, void 0, function () {
81
+ var uri;
82
+ return __generator(this, function (_a) {
83
+ uri = "/api/tge/claiming-info/".concat(params.wallet);
84
+ return [2 /*return*/, this.get(uri)];
85
+ });
86
+ });
87
+ };
88
+ TGEModule.prototype.claimTokens = function (params) {
89
+ return __awaiter(this, void 0, void 0, function () {
90
+ var _a, signature, signatureDeadline, wallet, uri;
91
+ return __generator(this, function (_b) {
92
+ switch (_b.label) {
93
+ case 0: return [4 /*yield*/, (0, sign_1.signClaimOrLock)({
94
+ signer: params.signer,
95
+ distributorContract: params.distributorContract,
96
+ merkleRoot: params.merkleRoot,
97
+ isLocking: false,
98
+ })];
99
+ case 1:
100
+ _a = _b.sent(), signature = _a.signature, signatureDeadline = _a.signatureDeadline;
101
+ return [4 /*yield*/, params.signer.getAddress()];
102
+ case 2:
103
+ wallet = _b.sent();
104
+ uri = "/api/tge/claim/".concat(wallet);
105
+ return [2 /*return*/, this.post(uri, {
106
+ signature: signature,
107
+ signatureDeadline: signatureDeadline,
108
+ })];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ TGEModule.prototype.lockTokens = function (params) {
114
+ return __awaiter(this, void 0, void 0, function () {
115
+ var _a, signature, signatureDeadline, wallet, uri;
116
+ return __generator(this, function (_b) {
117
+ switch (_b.label) {
118
+ case 0: return [4 /*yield*/, (0, sign_1.signClaimOrLock)({
119
+ signer: params.signer,
120
+ distributorContract: params.distributorContract,
121
+ merkleRoot: params.merkleRoot,
122
+ isLocking: true,
123
+ })];
124
+ case 1:
125
+ _a = _b.sent(), signature = _a.signature, signatureDeadline = _a.signatureDeadline;
126
+ return [4 /*yield*/, params.signer.getAddress()];
127
+ case 2:
128
+ wallet = _b.sent();
129
+ uri = "/api/tge/lock/".concat(wallet);
130
+ return [2 /*return*/, this.post(uri, {
131
+ signature: signature,
132
+ signatureDeadline: signatureDeadline,
133
+ })];
134
+ }
135
+ });
136
+ });
137
+ };
138
+ TGEModule.prototype.unlockTokens = function (params) {
139
+ return __awaiter(this, void 0, void 0, function () {
140
+ var uri;
141
+ return __generator(this, function (_a) {
142
+ uri = "/api/tge/unlock/".concat(params.wallet);
143
+ return [2 /*return*/, this.post(uri, {})];
144
+ });
145
+ });
146
+ };
78
147
  __decorate([
79
148
  (0, common_1.Logger)('TGEModule.getReyaChecker')
80
149
  ], TGEModule.prototype, "getReyaChecker", null);
150
+ __decorate([
151
+ (0, common_1.Logger)('TGEModule.getClaimingInfo')
152
+ ], TGEModule.prototype, "getClaimingInfo", null);
153
+ __decorate([
154
+ (0, common_1.Logger)('TGEModule.claimTokens')
155
+ ], TGEModule.prototype, "claimTokens", null);
156
+ __decorate([
157
+ (0, common_1.Logger)('TGEModule.lockTokens')
158
+ ], TGEModule.prototype, "lockTokens", null);
159
+ __decorate([
160
+ (0, common_1.Logger)('TGEModule.unlockTokens')
161
+ ], TGEModule.prototype, "unlockTokens", null);
81
162
  return TGEModule;
82
163
  }(common_1.RestClient));
83
164
  exports.default = TGEModule;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/tge/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA+D;AAI/D;IAAuC,6BAAU;IAG/C,mBAAY,MAAc,EAAE,cAAuB;QACjD,YAAA,MAAK,YAAC,MAAM,CAAC,SAAC;QAHhB,oBAAc,GAAY,KAAK,CAAC;QAI9B,KAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;IACvC,CAAC;IAGK,kCAAc,GAAd,UAAe,MAA4B;;;;gBACzC,GAAG,GAAG,qCAA8B,MAAM,CAAC,MAAM,CAAE,CAAC;gBAC1D,sBAAO,IAAI,CAAC,GAAG,CAAuB,GAAG,CAAC,EAAC;;;KAC5C;IAHK;QADL,IAAA,eAAM,EAAC,0BAA0B,CAAC;mDAIlC;IACH,gBAAC;CAAA,AAbD,CAAuC,mBAAU,GAahD;kBAboB,SAAS","sourcesContent":["import { RestClient, Loggable, Logger } from '@reyaxyz/common';\n\nimport { GetReyaCheckerResult, GetReyaCheckerParams } from './types';\n\nexport default class TGEModule extends RestClient implements Loggable {\n loggingEnabled: boolean = false;\n\n constructor(apiUrl: string, loggingEnabled: boolean) {\n super(apiUrl);\n this.loggingEnabled = loggingEnabled;\n }\n\n @Logger('TGEModule.getReyaChecker')\n async getReyaChecker(params: GetReyaCheckerParams) {\n const uri = `/api/tge/eligibility-check/${params.wallet}`;\n return this.get<GetReyaCheckerResult>(uri);\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/tge/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA+D;AAc/D,wCAAkD;AAElD;IAAuC,6BAAU;IAG/C,mBAAY,MAAc,EAAE,cAAuB;QACjD,YAAA,MAAK,YAAC,MAAM,CAAC,SAAC;QAHhB,oBAAc,GAAY,KAAK,CAAC;QAI9B,KAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;IACvC,CAAC;IAGK,kCAAc,GAAd,UAAe,MAA4B;;;;gBACzC,GAAG,GAAG,qCAA8B,MAAM,CAAC,MAAM,CAAE,CAAC;gBAC1D,sBAAO,IAAI,CAAC,GAAG,CAAuB,GAAG,CAAC,EAAC;;;KAC5C;IAGK,mCAAe,GAAf,UAAgB,MAAgC;;;;gBAC9C,GAAG,GAAG,iCAA0B,MAAM,CAAC,MAAM,CAAE,CAAC;gBACtD,sBAAO,IAAI,CAAC,GAAG,CAA2B,GAAG,CAAC,EAAC;;;KAChD;IAGK,+BAAW,GAAX,UAAY,MAA4B;;;;;4BACH,qBAAM,IAAA,sBAAe,EAAC;4BAC7D,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;4BAC/C,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,SAAS,EAAE,KAAK;yBACjB,CAAC,EAAA;;wBALI,KAAmC,SAKvC,EALM,SAAS,eAAA,EAAE,iBAAiB,uBAAA;wBAOrB,qBAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAA;;wBAAzC,MAAM,GAAG,SAAgC;wBACzC,GAAG,GAAG,yBAAkB,MAAM,CAAE,CAAC;wBACvC,sBAAO,IAAI,CAAC,IAAI,CAAuB,GAAG,EAAE;gCAC1C,SAAS,WAAA;gCACT,iBAAiB,mBAAA;6BAClB,CAAC,EAAC;;;;KACJ;IAGK,8BAAU,GAAV,UAAW,MAA2B;;;;;4BACD,qBAAM,IAAA,sBAAe,EAAC;4BAC7D,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;4BAC/C,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,SAAS,EAAE,IAAI;yBAChB,CAAC,EAAA;;wBALI,KAAmC,SAKvC,EALM,SAAS,eAAA,EAAE,iBAAiB,uBAAA;wBAOrB,qBAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAA;;wBAAzC,MAAM,GAAG,SAAgC;wBACzC,GAAG,GAAG,wBAAiB,MAAM,CAAE,CAAC;wBACtC,sBAAO,IAAI,CAAC,IAAI,CAAsB,GAAG,EAAE;gCACzC,SAAS,WAAA;gCACT,iBAAiB,mBAAA;6BAClB,CAAC,EAAC;;;;KACJ;IAGK,gCAAY,GAAZ,UAAa,MAA6B;;;;gBACxC,GAAG,GAAG,0BAAmB,MAAM,CAAC,MAAM,CAAE,CAAC;gBAC/C,sBAAO,IAAI,CAAC,IAAI,CAAwB,GAAG,EAAE,EAAE,CAAC,EAAC;;;KAClD;IAjDK;QADL,IAAA,eAAM,EAAC,0BAA0B,CAAC;mDAIlC;IAGK;QADL,IAAA,eAAM,EAAC,2BAA2B,CAAC;oDAInC;IAGK;QADL,IAAA,eAAM,EAAC,uBAAuB,CAAC;gDAe/B;IAGK;QADL,IAAA,eAAM,EAAC,sBAAsB,CAAC;+CAe9B;IAGK;QADL,IAAA,eAAM,EAAC,wBAAwB,CAAC;iDAIhC;IACH,gBAAC;CAAA,AA3DD,CAAuC,mBAAU,GA2DhD;kBA3DoB,SAAS","sourcesContent":["import { RestClient, Loggable, Logger } from '@reyaxyz/common';\n\nimport {\n GetReyaCheckerResult,\n GetReyaCheckerParams,\n GetTgeClaimingInfoParams,\n GetTgeClaimingInfoResult,\n TgeClaimTokensParams,\n TgeClaimTokensResult,\n TgeLockTokensParams,\n TgeLockTokensResult,\n TgeUnlockTokensParams,\n TgeUnlockTokensResult,\n} from './types';\nimport { signClaimOrLock } from './services/sign';\n\nexport default class TGEModule extends RestClient implements Loggable {\n loggingEnabled: boolean = false;\n\n constructor(apiUrl: string, loggingEnabled: boolean) {\n super(apiUrl);\n this.loggingEnabled = loggingEnabled;\n }\n\n @Logger('TGEModule.getReyaChecker')\n async getReyaChecker(params: GetReyaCheckerParams) {\n const uri = `/api/tge/eligibility-check/${params.wallet}`;\n return this.get<GetReyaCheckerResult>(uri);\n }\n\n @Logger('TGEModule.getClaimingInfo')\n async getClaimingInfo(params: GetTgeClaimingInfoParams) {\n const uri = `/api/tge/claiming-info/${params.wallet}`;\n return this.get<GetTgeClaimingInfoResult>(uri);\n }\n\n @Logger('TGEModule.claimTokens')\n async claimTokens(params: TgeClaimTokensParams) {\n const { signature, signatureDeadline } = await signClaimOrLock({\n signer: params.signer,\n distributorContract: params.distributorContract,\n merkleRoot: params.merkleRoot,\n isLocking: false,\n });\n\n const wallet = await params.signer.getAddress();\n const uri = `/api/tge/claim/${wallet}`;\n return this.post<TgeClaimTokensResult>(uri, {\n signature,\n signatureDeadline,\n });\n }\n\n @Logger('TGEModule.lockTokens')\n async lockTokens(params: TgeLockTokensParams) {\n const { signature, signatureDeadline } = await signClaimOrLock({\n signer: params.signer,\n distributorContract: params.distributorContract,\n merkleRoot: params.merkleRoot,\n isLocking: true,\n });\n\n const wallet = await params.signer.getAddress();\n const uri = `/api/tge/lock/${wallet}`;\n return this.post<TgeLockTokensResult>(uri, {\n signature,\n signatureDeadline,\n });\n }\n\n @Logger('TGEModule.unlockTokens')\n async unlockTokens(params: TgeUnlockTokensParams) {\n const uri = `/api/tge/unlock/${params.wallet}`;\n return this.post<TgeUnlockTokensResult>(uri, {});\n }\n}\n"]}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.signClaimOrLock = void 0;
40
+ var common_1 = require("@reyaxyz/common");
41
+ var signClaimOrLock = function (params) { return __awaiter(void 0, void 0, void 0, function () {
42
+ var network, reyaChainId, wallet, deadline, signature;
43
+ var _a;
44
+ return __generator(this, function (_b) {
45
+ switch (_b.label) {
46
+ case 0: return [4 /*yield*/, ((_a = params.signer.provider) === null || _a === void 0 ? void 0 : _a.getNetwork())];
47
+ case 1:
48
+ network = _b.sent();
49
+ if (!network) {
50
+ throw new Error('Claim/Lock failed. Network not found.');
51
+ }
52
+ reyaChainId = Number(network.chainId);
53
+ if (!Object.values(common_1.ReyaChainId).includes(reyaChainId)) {
54
+ throw new Error('Not on Reya Network.');
55
+ }
56
+ return [4 /*yield*/, params.signer.getAddress()];
57
+ case 2:
58
+ wallet = _b.sent();
59
+ deadline = Math.floor(Date.now() / 1000) + common_1.ONE_DAY_IN_SECONDS * 7;
60
+ return [4 /*yield*/, signClaimOrLockBySig(params.signer, reyaChainId, params.distributorContract, wallet, params.merkleRoot, params.isLocking, deadline)];
61
+ case 3:
62
+ signature = _b.sent();
63
+ return [2 /*return*/, { signature: signature, signatureDeadline: deadline }];
64
+ }
65
+ });
66
+ }); };
67
+ exports.signClaimOrLock = signClaimOrLock;
68
+ function signClaimOrLockBySig(signer, reyaChainId, distributorContract, wallet, merkleRoot, isLocking, deadline) {
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var types, values, domain, signatureString;
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0:
74
+ types = {
75
+ ClaimOrLockBySig: [
76
+ { name: 'verifyingChainId', type: 'uint256' },
77
+ { name: 'wallet', type: 'address' },
78
+ { name: 'root', type: 'bytes32' },
79
+ { name: 'isLocking', type: 'bool' },
80
+ { name: 'deadline', type: 'uint256' },
81
+ ],
82
+ };
83
+ values = {
84
+ verifyingChainId: reyaChainId,
85
+ wallet: wallet,
86
+ root: merkleRoot,
87
+ isLocking: isLocking,
88
+ deadline: deadline,
89
+ };
90
+ domain = (0, common_1.getReyaDomain)(distributorContract);
91
+ return [4 /*yield*/, signer.signTypedData(domain, types, values)];
92
+ case 1:
93
+ signatureString = _a.sent();
94
+ return [2 /*return*/, signatureString];
95
+ }
96
+ });
97
+ });
98
+ }
99
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"/","sources":["modules/tge/services/sign.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAIyB;AAelB,IAAM,eAAe,GAAG,UAC7B,MAA6B;;;;;oBAEb,qBAAM,CAAA,MAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,0CAAE,UAAU,EAAE,CAAA,EAAA;;gBAApD,OAAO,GAAG,SAA0C;gBAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAC3D,CAAC;gBAEK,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC1C,CAAC;gBAEc,qBAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAA;;gBAAzC,MAAM,GAAG,SAAgC;gBACzC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,2BAAkB,GAAG,CAAC,CAAC;gBAEtD,qBAAM,oBAAoB,CAC1C,MAAM,CAAC,MAAM,EACb,WAAW,EACX,MAAM,CAAC,mBAAmB,EAC1B,MAAM,EACN,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB,QAAQ,CACT,EAAA;;gBARK,SAAS,GAAG,SAQjB;gBAED,sBAAO,EAAE,SAAS,WAAA,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAC;;;KACnD,CAAC;AA3BW,QAAA,eAAe,mBA2B1B;AAEF,SAAe,oBAAoB,CACjC,MAA8B,EAC9B,WAAwB,EACxB,mBAA2B,EAC3B,MAAc,EACd,UAAkB,EAClB,SAAkB,EAClB,QAAgB;;;;;;oBAEV,KAAK,GAAG;wBACZ,gBAAgB,EAAE;4BAChB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;4BACnC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;4BACjC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;4BACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;yBACtC;qBACF,CAAC;oBACI,MAAM,GAAG;wBACb,gBAAgB,EAAE,WAAW;wBAC7B,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,QAAQ;qBACnB,CAAC;oBAEI,MAAM,GAAG,IAAA,sBAAa,EAAC,mBAAmB,CAAC,CAAC;oBAE1B,qBAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAA;;oBAAnE,eAAe,GAAG,SAAiD;oBAEzE,sBAAO,eAAe,EAAC;;;;CACxB","sourcesContent":["import { Signer } from 'ethers';\nimport {\n ReyaChainId,\n ONE_DAY_IN_SECONDS,\n getReyaDomain,\n} from '@reyaxyz/common';\nimport { JsonRpcSigner } from 'ethers';\n\nexport type SignClaimOrLockParams = {\n signer: Signer;\n distributorContract: string;\n merkleRoot: string;\n isLocking: boolean;\n};\n\nexport type SignedClaimOrLock = {\n signature: string;\n signatureDeadline: number;\n};\n\nexport const signClaimOrLock = async (\n params: SignClaimOrLockParams,\n): Promise<SignedClaimOrLock> => {\n const network = await params.signer.provider?.getNetwork();\n if (!network) {\n throw new Error('Claim/Lock failed. Network not found.');\n }\n\n const reyaChainId = Number(network.chainId);\n if (!Object.values(ReyaChainId).includes(reyaChainId)) {\n throw new Error('Not on Reya Network.');\n }\n\n const wallet = await params.signer.getAddress();\n const deadline = Math.floor(Date.now() / 1000) + ONE_DAY_IN_SECONDS * 7;\n\n const signature = await signClaimOrLockBySig(\n params.signer,\n reyaChainId,\n params.distributorContract,\n wallet,\n params.merkleRoot,\n params.isLocking,\n deadline,\n );\n\n return { signature, signatureDeadline: deadline };\n};\n\nasync function signClaimOrLockBySig(\n signer: Signer | JsonRpcSigner,\n reyaChainId: ReyaChainId,\n distributorContract: string,\n wallet: string,\n merkleRoot: string,\n isLocking: boolean,\n deadline: number,\n): Promise<string> {\n const types = {\n ClaimOrLockBySig: [\n { name: 'verifyingChainId', type: 'uint256' },\n { name: 'wallet', type: 'address' },\n { name: 'root', type: 'bytes32' },\n { name: 'isLocking', type: 'bool' },\n { name: 'deadline', type: 'uint256' },\n ],\n };\n const values = {\n verifyingChainId: reyaChainId,\n wallet: wallet,\n root: merkleRoot,\n isLocking: isLocking,\n deadline: deadline,\n };\n\n const domain = getReyaDomain(distributorContract);\n\n const signatureString = await signer.signTypedData(domain, types, values);\n\n return signatureString;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["modules/tge/types.ts"],"names":[],"mappings":"","sourcesContent":["export { GetReyaCheckerResult } from '@reyaxyz/common';\n\nexport type GetReyaCheckerParams = {\n wallet: string;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["modules/tge/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TgeClaimTokensResult } from '@reyaxyz/common';\n\nexport {\n GetReyaCheckerResult,\n TgeAllocatedAmount,\n GetTgeClaimingInfoResult,\n TgeClaimTokensResult,\n} from '@reyaxyz/common';\n\nimport { Signer } from 'ethers';\n\nexport type GetReyaCheckerParams = {\n wallet: string;\n};\n\nexport type GetTgeClaimingInfoParams = {\n wallet: string;\n};\n\nexport type TgeClaimTokensParams = {\n signer: Signer;\n distributorContract: string;\n merkleRoot: string;\n};\n\nexport type TgeLockTokensParams = TgeClaimTokensParams;\n\nexport type TgeUnlockTokensParams = {\n wallet: string;\n};\n\nexport type TgeLockTokensResult = TgeClaimTokensResult & {\n timeInMsToUnlock: number;\n};\n\nexport type TgeUnlockTokensResult = TgeClaimTokensResult;\n"]}
@@ -1,8 +1,12 @@
1
1
  import { RestClient, Loggable } from '@reyaxyz/common';
2
- import { GetReyaCheckerResult, GetReyaCheckerParams } from './types';
2
+ import { GetReyaCheckerResult, GetReyaCheckerParams, GetTgeClaimingInfoParams, GetTgeClaimingInfoResult, TgeClaimTokensParams, TgeClaimTokensResult, TgeLockTokensParams, TgeLockTokensResult, TgeUnlockTokensParams } from './types';
3
3
  export default class TGEModule extends RestClient implements Loggable {
4
4
  loggingEnabled: boolean;
5
5
  constructor(apiUrl: string, loggingEnabled: boolean);
6
6
  getReyaChecker(params: GetReyaCheckerParams): Promise<GetReyaCheckerResult>;
7
+ getClaimingInfo(params: GetTgeClaimingInfoParams): Promise<GetTgeClaimingInfoResult>;
8
+ claimTokens(params: TgeClaimTokensParams): Promise<TgeClaimTokensResult>;
9
+ lockTokens(params: TgeLockTokensParams): Promise<TgeLockTokensResult>;
10
+ unlockTokens(params: TgeUnlockTokensParams): Promise<TgeClaimTokensResult>;
7
11
  }
8
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/tge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAU,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAAW,YAAW,QAAQ;IACnE,cAAc,EAAE,OAAO,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IAM7C,cAAc,CAAC,MAAM,EAAE,oBAAoB;CAIlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/tge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAU,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAGjB,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAAW,YAAW,QAAQ;IACnE,cAAc,EAAE,OAAO,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IAM7C,cAAc,CAAC,MAAM,EAAE,oBAAoB;IAM3C,eAAe,CAAC,MAAM,EAAE,wBAAwB;IAMhD,WAAW,CAAC,MAAM,EAAE,oBAAoB;IAiBxC,UAAU,CAAC,MAAM,EAAE,mBAAmB;IAiBtC,YAAY,CAAC,MAAM,EAAE,qBAAqB;CAIjD"}
@@ -0,0 +1,13 @@
1
+ import { Signer } from 'ethers';
2
+ export type SignClaimOrLockParams = {
3
+ signer: Signer;
4
+ distributorContract: string;
5
+ merkleRoot: string;
6
+ isLocking: boolean;
7
+ };
8
+ export type SignedClaimOrLock = {
9
+ signature: string;
10
+ signatureDeadline: number;
11
+ };
12
+ export declare const signClaimOrLock: (params: SignClaimOrLockParams) => Promise<SignedClaimOrLock>;
13
+ //# sourceMappingURL=sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.d.ts","sourceRoot":"/","sources":["modules/tge/services/sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,qBAAqB,KAC5B,QAAQ,iBAAiB,CAyB3B,CAAC"}
@@ -1,5 +1,23 @@
1
- export { GetReyaCheckerResult } from '@reyaxyz/common';
1
+ import type { TgeClaimTokensResult } from '@reyaxyz/common';
2
+ export { GetReyaCheckerResult, TgeAllocatedAmount, GetTgeClaimingInfoResult, TgeClaimTokensResult, } from '@reyaxyz/common';
3
+ import { Signer } from 'ethers';
2
4
  export type GetReyaCheckerParams = {
3
5
  wallet: string;
4
6
  };
7
+ export type GetTgeClaimingInfoParams = {
8
+ wallet: string;
9
+ };
10
+ export type TgeClaimTokensParams = {
11
+ signer: Signer;
12
+ distributorContract: string;
13
+ merkleRoot: string;
14
+ };
15
+ export type TgeLockTokensParams = TgeClaimTokensParams;
16
+ export type TgeUnlockTokensParams = {
17
+ wallet: string;
18
+ };
19
+ export type TgeLockTokensResult = TgeClaimTokensResult & {
20
+ timeInMsToUnlock: number;
21
+ };
22
+ export type TgeUnlockTokensResult = TgeClaimTokensResult;
5
23
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["modules/tge/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["modules/tge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACvD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/community-sdk",
3
- "version": "0.55.4",
3
+ "version": "0.55.5",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -10,8 +10,8 @@
10
10
  "url": "https://github.com/Reya-Labs/reya-off-chain-monorepo.git"
11
11
  },
12
12
  "dependencies": {
13
- "@reyaxyz/common": "0.327.4",
14
- "@reyaxyz/sdk": "0.142.4",
13
+ "@reyaxyz/common": "0.327.5",
14
+ "@reyaxyz/sdk": "0.142.5",
15
15
  "ethers": "6.9.0"
16
16
  },
17
17
  "main": "dist/index.js",
@@ -38,5 +38,5 @@
38
38
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
39
39
  },
40
40
  "packageManager": "pnpm@8.3.1",
41
- "gitHead": "2ab7bedb7f3ef333c2ea7fed6446dd640d341c6d"
41
+ "gitHead": "9d05b19a0de485b3db749afc162498efa77ac134"
42
42
  }
@@ -1,6 +1,18 @@
1
1
  import { RestClient, Loggable, Logger } from '@reyaxyz/common';
2
2
 
3
- import { GetReyaCheckerResult, GetReyaCheckerParams } from './types';
3
+ import {
4
+ GetReyaCheckerResult,
5
+ GetReyaCheckerParams,
6
+ GetTgeClaimingInfoParams,
7
+ GetTgeClaimingInfoResult,
8
+ TgeClaimTokensParams,
9
+ TgeClaimTokensResult,
10
+ TgeLockTokensParams,
11
+ TgeLockTokensResult,
12
+ TgeUnlockTokensParams,
13
+ TgeUnlockTokensResult,
14
+ } from './types';
15
+ import { signClaimOrLock } from './services/sign';
4
16
 
5
17
  export default class TGEModule extends RestClient implements Loggable {
6
18
  loggingEnabled: boolean = false;
@@ -15,4 +27,50 @@ export default class TGEModule extends RestClient implements Loggable {
15
27
  const uri = `/api/tge/eligibility-check/${params.wallet}`;
16
28
  return this.get<GetReyaCheckerResult>(uri);
17
29
  }
30
+
31
+ @Logger('TGEModule.getClaimingInfo')
32
+ async getClaimingInfo(params: GetTgeClaimingInfoParams) {
33
+ const uri = `/api/tge/claiming-info/${params.wallet}`;
34
+ return this.get<GetTgeClaimingInfoResult>(uri);
35
+ }
36
+
37
+ @Logger('TGEModule.claimTokens')
38
+ async claimTokens(params: TgeClaimTokensParams) {
39
+ const { signature, signatureDeadline } = await signClaimOrLock({
40
+ signer: params.signer,
41
+ distributorContract: params.distributorContract,
42
+ merkleRoot: params.merkleRoot,
43
+ isLocking: false,
44
+ });
45
+
46
+ const wallet = await params.signer.getAddress();
47
+ const uri = `/api/tge/claim/${wallet}`;
48
+ return this.post<TgeClaimTokensResult>(uri, {
49
+ signature,
50
+ signatureDeadline,
51
+ });
52
+ }
53
+
54
+ @Logger('TGEModule.lockTokens')
55
+ async lockTokens(params: TgeLockTokensParams) {
56
+ const { signature, signatureDeadline } = await signClaimOrLock({
57
+ signer: params.signer,
58
+ distributorContract: params.distributorContract,
59
+ merkleRoot: params.merkleRoot,
60
+ isLocking: true,
61
+ });
62
+
63
+ const wallet = await params.signer.getAddress();
64
+ const uri = `/api/tge/lock/${wallet}`;
65
+ return this.post<TgeLockTokensResult>(uri, {
66
+ signature,
67
+ signatureDeadline,
68
+ });
69
+ }
70
+
71
+ @Logger('TGEModule.unlockTokens')
72
+ async unlockTokens(params: TgeUnlockTokensParams) {
73
+ const uri = `/api/tge/unlock/${params.wallet}`;
74
+ return this.post<TgeUnlockTokensResult>(uri, {});
75
+ }
18
76
  }
@@ -0,0 +1,81 @@
1
+ import { Signer } from 'ethers';
2
+ import {
3
+ ReyaChainId,
4
+ ONE_DAY_IN_SECONDS,
5
+ getReyaDomain,
6
+ } from '@reyaxyz/common';
7
+ import { JsonRpcSigner } from 'ethers';
8
+
9
+ export type SignClaimOrLockParams = {
10
+ signer: Signer;
11
+ distributorContract: string;
12
+ merkleRoot: string;
13
+ isLocking: boolean;
14
+ };
15
+
16
+ export type SignedClaimOrLock = {
17
+ signature: string;
18
+ signatureDeadline: number;
19
+ };
20
+
21
+ export const signClaimOrLock = async (
22
+ params: SignClaimOrLockParams,
23
+ ): Promise<SignedClaimOrLock> => {
24
+ const network = await params.signer.provider?.getNetwork();
25
+ if (!network) {
26
+ throw new Error('Claim/Lock failed. Network not found.');
27
+ }
28
+
29
+ const reyaChainId = Number(network.chainId);
30
+ if (!Object.values(ReyaChainId).includes(reyaChainId)) {
31
+ throw new Error('Not on Reya Network.');
32
+ }
33
+
34
+ const wallet = await params.signer.getAddress();
35
+ const deadline = Math.floor(Date.now() / 1000) + ONE_DAY_IN_SECONDS * 7;
36
+
37
+ const signature = await signClaimOrLockBySig(
38
+ params.signer,
39
+ reyaChainId,
40
+ params.distributorContract,
41
+ wallet,
42
+ params.merkleRoot,
43
+ params.isLocking,
44
+ deadline,
45
+ );
46
+
47
+ return { signature, signatureDeadline: deadline };
48
+ };
49
+
50
+ async function signClaimOrLockBySig(
51
+ signer: Signer | JsonRpcSigner,
52
+ reyaChainId: ReyaChainId,
53
+ distributorContract: string,
54
+ wallet: string,
55
+ merkleRoot: string,
56
+ isLocking: boolean,
57
+ deadline: number,
58
+ ): Promise<string> {
59
+ const types = {
60
+ ClaimOrLockBySig: [
61
+ { name: 'verifyingChainId', type: 'uint256' },
62
+ { name: 'wallet', type: 'address' },
63
+ { name: 'root', type: 'bytes32' },
64
+ { name: 'isLocking', type: 'bool' },
65
+ { name: 'deadline', type: 'uint256' },
66
+ ],
67
+ };
68
+ const values = {
69
+ verifyingChainId: reyaChainId,
70
+ wallet: wallet,
71
+ root: merkleRoot,
72
+ isLocking: isLocking,
73
+ deadline: deadline,
74
+ };
75
+
76
+ const domain = getReyaDomain(distributorContract);
77
+
78
+ const signatureString = await signer.signTypedData(domain, types, values);
79
+
80
+ return signatureString;
81
+ }
@@ -1,5 +1,36 @@
1
- export { GetReyaCheckerResult } from '@reyaxyz/common';
1
+ import type { TgeClaimTokensResult } from '@reyaxyz/common';
2
+
3
+ export {
4
+ GetReyaCheckerResult,
5
+ TgeAllocatedAmount,
6
+ GetTgeClaimingInfoResult,
7
+ TgeClaimTokensResult,
8
+ } from '@reyaxyz/common';
9
+
10
+ import { Signer } from 'ethers';
2
11
 
3
12
  export type GetReyaCheckerParams = {
4
13
  wallet: string;
5
14
  };
15
+
16
+ export type GetTgeClaimingInfoParams = {
17
+ wallet: string;
18
+ };
19
+
20
+ export type TgeClaimTokensParams = {
21
+ signer: Signer;
22
+ distributorContract: string;
23
+ merkleRoot: string;
24
+ };
25
+
26
+ export type TgeLockTokensParams = TgeClaimTokensParams;
27
+
28
+ export type TgeUnlockTokensParams = {
29
+ wallet: string;
30
+ };
31
+
32
+ export type TgeLockTokensResult = TgeClaimTokensResult & {
33
+ timeInMsToUnlock: number;
34
+ };
35
+
36
+ export type TgeUnlockTokensResult = TgeClaimTokensResult;