@reyaxyz/community-sdk 0.44.39 → 0.44.42
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.
- package/dist/modules/vote/index.js +23 -13
- package/dist/modules/vote/index.js.map +1 -1
- package/dist/modules/vote/services/vote/index.js +28 -1
- package/dist/modules/vote/services/vote/index.js.map +1 -1
- package/dist/modules/vote/types.js.map +1 -1
- package/dist/types/modules/vote/index.d.ts +4 -2
- package/dist/types/modules/vote/index.d.ts.map +1 -1
- package/dist/types/modules/vote/services/vote/index.d.ts +2 -1
- package/dist/types/modules/vote/services/vote/index.d.ts.map +1 -1
- package/dist/types/modules/vote/types.d.ts +4 -0
- package/dist/types/modules/vote/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/modules/vote/index.ts +22 -16
- package/src/modules/vote/services/vote/index.ts +34 -2
- package/src/modules/vote/types.ts +5 -0
|
@@ -106,22 +106,32 @@ var VoteModule = /** @class */ (function (_super) {
|
|
|
106
106
|
// WRITE
|
|
107
107
|
VoteModule.prototype.vote = function (params) {
|
|
108
108
|
return __awaiter(this, void 0, void 0, function () {
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
var infoUri, infoMetadata, _a, signature, signatureDeadline, voteUri, result, _b, _c;
|
|
110
|
+
var _d;
|
|
111
|
+
return __generator(this, function (_e) {
|
|
112
|
+
switch (_e.label) {
|
|
112
113
|
case 0:
|
|
113
|
-
|
|
114
|
-
return [4 /*yield*/, this.get(
|
|
114
|
+
infoUri = "/api/vote/contract-details/".concat(params.slug);
|
|
115
|
+
return [4 /*yield*/, this.get(infoUri)];
|
|
115
116
|
case 1:
|
|
116
|
-
|
|
117
|
-
return [4 /*yield*/, (0, services_1.
|
|
117
|
+
infoMetadata = _e.sent();
|
|
118
|
+
return [4 /*yield*/, (0, services_1.sendVote)(__assign(__assign({}, params), { contractAddress: infoMetadata.contractAddress }))];
|
|
118
119
|
case 2:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
_a = _e.sent(), signature = _a.signature, signatureDeadline = _a.deadline;
|
|
121
|
+
voteUri = "/api/vote/".concat(infoMetadata.contractAddress, "/vote");
|
|
122
|
+
_b = this.put;
|
|
123
|
+
_c = [voteUri,
|
|
124
|
+
{}];
|
|
125
|
+
_d = {};
|
|
126
|
+
return [4 /*yield*/, params.signer.getAddress()];
|
|
127
|
+
case 3: return [4 /*yield*/, _b.apply(this, _c.concat([(_d.voter = _e.sent(),
|
|
128
|
+
_d.isYesVote = params.voted,
|
|
129
|
+
_d.signature = signature,
|
|
130
|
+
_d.signatureDeadline = signatureDeadline,
|
|
131
|
+
_d)]))];
|
|
132
|
+
case 4:
|
|
133
|
+
result = _e.sent();
|
|
134
|
+
return [2 /*return*/, { transactionHash: result.txHash }];
|
|
125
135
|
}
|
|
126
136
|
});
|
|
127
137
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/vote/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA6C;AAW7C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/vote/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { RestClient } from '@reyaxyz/common';\nimport {\n GetVoteContractDetailsResult,\n GetVoteDetailsParams,\n GetVoteDetailsResult,\n GetVoteStatusParams,\n GetVoteStatusResult,\n VoteInfo,\n VoteParams,\n VoteResult,\n} from './types';\nimport { sendVote } from './services';\nimport { Logger, Loggable } from '@reyaxyz/common';\n\nexport default class VoteModule 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 private async executeVoteTx(voteInfo: VoteInfo): Promise<VoteResult> {\n const uri = `/api/transaction-gelato/executeGelatoEip2771`;\n const result = await this.post<{ txHash: string; accountId?: string }>(\n uri,\n {},\n {\n signature: voteInfo.signature,\n chainId: voteInfo.struct.chainId.toString(),\n data: voteInfo.struct.data,\n userDeadline: voteInfo.struct.userDeadline,\n userNonce: (voteInfo.struct.userNonce ?? 0).toString(),\n user: voteInfo.struct.user,\n contractAddress: voteInfo.contractAddress,\n },\n );\n return { transactionHash: result.txHash };\n }\n\n // WRITE\n @Logger('VoteModule.vote')\n async vote(params: VoteParams) {\n const infoUri = `/api/vote/contract-details/${params.slug}`;\n const infoMetadata = await this.get<GetVoteContractDetailsResult>(infoUri);\n\n const { signature: signature, deadline: signatureDeadline } =\n await sendVote({\n ...params,\n contractAddress: infoMetadata.contractAddress,\n });\n\n const voteUri = `/api/vote/${infoMetadata.contractAddress}/vote`;\n const result = await this.put<{ txHash: string }>(\n voteUri,\n {},\n {\n voter: await params.signer.getAddress(),\n isYesVote: params.voted,\n signature: signature,\n signatureDeadline: signatureDeadline,\n },\n );\n\n return { transactionHash: result.txHash };\n }\n\n // READ\n @Logger('VoteModule.getVoteDetails')\n async getVoteDetails(params: GetVoteDetailsParams) {\n const uri = `/api/vote/${params.slug}`;\n const voteDetails = await this.get<GetVoteDetailsResult>(uri);\n let markdownDescription = '';\n voteDetails.description.split('\\n ').forEach((i) => {\n markdownDescription = `${markdownDescription}\n\n${i}`;\n });\n voteDetails.description = markdownDescription;\n return voteDetails;\n }\n\n @Logger('VoteModule.getVoteStatus')\n async getVoteStatus(params: GetVoteStatusParams) {\n const uri = `/api/vote/${params.slug}/user/${params.address}`;\n return this.get<GetVoteStatusResult>(uri);\n }\n}\n"]}
|
|
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.vote = void 0;
|
|
39
|
+
exports.sendVote = exports.vote = void 0;
|
|
40
40
|
var executeTransaction_1 = require("../executeTransaction");
|
|
41
41
|
var encode_1 = require("./encode");
|
|
42
42
|
var relay_sdk_1 = require("@gelatonetwork/relay-sdk");
|
|
@@ -87,4 +87,31 @@ var vote = function (params) { return __awaiter(void 0, void 0, void 0, function
|
|
|
87
87
|
});
|
|
88
88
|
}); };
|
|
89
89
|
exports.vote = vote;
|
|
90
|
+
var sendVote = function (params) { return __awaiter(void 0, void 0, void 0, function () {
|
|
91
|
+
var network, reyaChainId, user, deadline, signature;
|
|
92
|
+
var _a;
|
|
93
|
+
return __generator(this, function (_b) {
|
|
94
|
+
switch (_b.label) {
|
|
95
|
+
case 0: return [4 /*yield*/, ((_a = params.signer.provider) === null || _a === void 0 ? void 0 : _a.getNetwork())];
|
|
96
|
+
case 1:
|
|
97
|
+
network = _b.sent();
|
|
98
|
+
if (!network) {
|
|
99
|
+
throw new Error('Vote failed. Network not found.');
|
|
100
|
+
}
|
|
101
|
+
reyaChainId = Number(network.chainId);
|
|
102
|
+
if (!Object.values(common_1.ReyaChainId).includes(reyaChainId)) {
|
|
103
|
+
throw new Error('Not on Reya Network.');
|
|
104
|
+
}
|
|
105
|
+
return [4 /*yield*/, params.signer.getAddress()];
|
|
106
|
+
case 2:
|
|
107
|
+
user = _b.sent();
|
|
108
|
+
deadline = Math.floor(Date.now() / 1000) + common_1.ONE_DAY_IN_SECONDS * 7;
|
|
109
|
+
return [4 /*yield*/, (0, common_1.signVote)(params.signer, reyaChainId, params.contractAddress, user, params.voted == 'yes' ? true : false, deadline)];
|
|
110
|
+
case 3:
|
|
111
|
+
signature = _b.sent();
|
|
112
|
+
return [2 /*return*/, { signature: signature, deadline: deadline }];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}); };
|
|
116
|
+
exports.sendVote = sendVote;
|
|
90
117
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/vote/services/vote/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoD;AACpD,mCAA0C;AAE1C,sDAKkC;AAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/vote/services/vote/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { estimateGas } from '../executeTransaction';\nimport { encodeCastVote } from './encode';\nimport { ExecuteVoteParams, SignedVote, VoteInfo } from '../../types';\nimport {\n GelatoRelay,\n CallWithERC2771Request,\n ERC2771Type,\n SignerOrProvider,\n} from '@gelatonetwork/relay-sdk';\nimport {\n convertToAddress,\n ReyaChainId,\n signVote,\n ONE_DAY_IN_SECONDS,\n} from '@reyaxyz/common';\n\nexport const vote = async (params: ExecuteVoteParams): Promise<VoteInfo> => {\n const { calldata: data, value } = encodeCastVote(params.voted == 'yes');\n\n const network = await params.signer.provider?.getNetwork();\n if (!network) {\n throw new Error('Vote failed. Network not found.');\n }\n const user = await params.signer.getAddress();\n\n const relay = new GelatoRelay();\n\n try {\n const request: CallWithERC2771Request = {\n chainId: network.chainId,\n target: params.contractAddress,\n data: data,\n user: user,\n };\n\n const signer = params.signer as unknown as SignerOrProvider;\n\n await estimateGas(\n params.signer,\n data,\n value,\n Number(network.chainId),\n params.contractAddress,\n );\n const signatureData = await relay.getSignatureDataERC2771(\n request,\n signer,\n ERC2771Type.SponsoredCall,\n );\n\n return {\n signature: signatureData.signature,\n struct: signatureData.struct,\n contractAddress: convertToAddress(params.contractAddress),\n };\n } catch (error) {\n throw new Error('Vote failed. Please reach out via Discord.');\n }\n};\n\nexport const sendVote = async (\n params: ExecuteVoteParams,\n): Promise<SignedVote> => {\n const network = await params.signer.provider?.getNetwork();\n if (!network) {\n throw new Error('Vote failed. Network not found.');\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 user = await params.signer.getAddress();\n const deadline = Math.floor(Date.now() / 1000) + ONE_DAY_IN_SECONDS * 7;\n\n const signature = await signVote(\n params.signer,\n reyaChainId,\n params.contractAddress,\n user,\n params.voted == 'yes' ? true : false,\n deadline,\n );\n\n return { signature: signature, deadline: deadline };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"/","sources":["modules/vote/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer } from 'ethers';\nimport { CallWithERC2771Request } from '@gelatonetwork/relay-sdk';\nimport {\n VoteDetailsEntity,\n VoteContractDetailsEntity,\n VoteStatusEntity,\n Address,\n} from '@reyaxyz/common';\n\nexport type VoteInfo = {\n signature: string;\n struct: CallWithERC2771Request;\n contractAddress: Address;\n};\n\nexport type VoteResult = {\n transactionHash: string | null;\n};\n\nexport type GetVoteDetailsParams = {\n slug: VoteDetailsEntity['slug'];\n};\nexport type GetVoteDetailsResult = VoteDetailsEntity;\n\nexport type GetVoteContractDetailsResult = VoteContractDetailsEntity;\n\nexport type VoteParams = {\n slug: VoteDetailsEntity['slug'];\n voted: 'yes' | 'no';\n signer: Signer;\n};\n\nexport type ExecuteVoteParams = VoteParams & {\n contractAddress: string;\n};\n\nexport type GetVoteStatusParams = {\n address: string;\n slug: VoteDetailsEntity['slug'];\n};\nexport type GetVoteStatusResult = VoteStatusEntity;\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"/","sources":["modules/vote/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Signer } from 'ethers';\nimport { CallWithERC2771Request } from '@gelatonetwork/relay-sdk';\nimport {\n VoteDetailsEntity,\n VoteContractDetailsEntity,\n VoteStatusEntity,\n Address,\n} from '@reyaxyz/common';\n\nexport type VoteInfo = {\n signature: string;\n struct: CallWithERC2771Request;\n contractAddress: Address;\n};\n\nexport type SignedVote = {\n signature: string;\n deadline: number;\n};\n\nexport type VoteResult = {\n transactionHash: string | null;\n};\n\nexport type GetVoteDetailsParams = {\n slug: VoteDetailsEntity['slug'];\n};\nexport type GetVoteDetailsResult = VoteDetailsEntity;\n\nexport type GetVoteContractDetailsResult = VoteContractDetailsEntity;\n\nexport type VoteParams = {\n slug: VoteDetailsEntity['slug'];\n voted: 'yes' | 'no';\n signer: Signer;\n};\n\nexport type ExecuteVoteParams = VoteParams & {\n contractAddress: string;\n};\n\nexport type GetVoteStatusParams = {\n address: string;\n slug: VoteDetailsEntity['slug'];\n};\nexport type GetVoteStatusResult = VoteStatusEntity;\n"]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { RestClient } from '@reyaxyz/common';
|
|
2
|
-
import { GetVoteDetailsParams, GetVoteStatusParams, VoteParams
|
|
2
|
+
import { GetVoteDetailsParams, GetVoteStatusParams, VoteParams } from './types';
|
|
3
3
|
import { Loggable } from '@reyaxyz/common';
|
|
4
4
|
export default class VoteModule extends RestClient implements Loggable {
|
|
5
5
|
loggingEnabled: boolean;
|
|
6
6
|
constructor(apiUrl: string, loggingEnabled: boolean);
|
|
7
7
|
private executeVoteTx;
|
|
8
|
-
vote(params: VoteParams): Promise<
|
|
8
|
+
vote(params: VoteParams): Promise<{
|
|
9
|
+
transactionHash: string;
|
|
10
|
+
}>;
|
|
9
11
|
getVoteDetails(params: GetVoteDetailsParams): Promise<import("@reyaxyz/common").VoteDetailsEntity>;
|
|
10
12
|
getVoteStatus(params: GetVoteStatusParams): Promise<import("@reyaxyz/common").VoteStatusEntity>;
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/vote/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAEL,oBAAoB,EAEpB,mBAAmB,EAGnB,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/vote/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAEL,oBAAoB,EAEpB,mBAAmB,EAGnB,UAAU,EAEX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAW,YAAW,QAAQ;IACpE,cAAc,EAAE,OAAO,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;YAKrC,aAAa;IAoBrB,IAAI,CAAC,MAAM,EAAE,UAAU;;;IA2BvB,cAAc,CAAC,MAAM,EAAE,oBAAoB;IAc3C,aAAa,CAAC,MAAM,EAAE,mBAAmB;CAIhD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { ExecuteVoteParams, VoteInfo } from '../../types';
|
|
1
|
+
import { ExecuteVoteParams, SignedVote, VoteInfo } from '../../types';
|
|
2
2
|
export declare const vote: (params: ExecuteVoteParams) => Promise<VoteInfo>;
|
|
3
|
+
export declare const sendVote: (params: ExecuteVoteParams) => Promise<SignedVote>;
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/vote/services/vote/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/vote/services/vote/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AActE,eAAO,MAAM,IAAI,WAAkB,iBAAiB,KAAG,QAAQ,QAAQ,CA0CtE,CAAC;AAEF,eAAO,MAAM,QAAQ,WACX,iBAAiB,KACxB,QAAQ,UAAU,CAuBpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["modules/vote/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,OAAO,EACR,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAErE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["modules/vote/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,OAAO,EACR,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAErE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reyaxyz/community-sdk",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.42",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@gelatonetwork/relay-sdk": "^5.5.0",
|
|
14
|
-
"@reyaxyz/common": "0.210.
|
|
15
|
-
"@reyaxyz/sdk": "0.113.
|
|
14
|
+
"@reyaxyz/common": "0.210.2",
|
|
15
|
+
"@reyaxyz/sdk": "0.113.9",
|
|
16
16
|
"ethers": "6.9.0"
|
|
17
17
|
},
|
|
18
18
|
"main": "dist/index.js",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"generate:coverage-badges": "npx istanbul-badges-readme --silent"
|
|
40
40
|
},
|
|
41
41
|
"packageManager": "pnpm@8.3.1",
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "dd96ebca976d977a4854c863cd07e35c6c71ae02"
|
|
43
43
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
VoteParams,
|
|
10
10
|
VoteResult,
|
|
11
11
|
} from './types';
|
|
12
|
-
import {
|
|
12
|
+
import { sendVote } from './services';
|
|
13
13
|
import { Logger, Loggable } from '@reyaxyz/common';
|
|
14
14
|
|
|
15
15
|
export default class VoteModule extends RestClient implements Loggable {
|
|
@@ -41,22 +41,28 @@ export default class VoteModule extends RestClient implements Loggable {
|
|
|
41
41
|
// WRITE
|
|
42
42
|
@Logger('VoteModule.vote')
|
|
43
43
|
async vote(params: VoteParams) {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
44
|
+
const infoUri = `/api/vote/contract-details/${params.slug}`;
|
|
45
|
+
const infoMetadata = await this.get<GetVoteContractDetailsResult>(infoUri);
|
|
46
46
|
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
const { signature: signature, deadline: signatureDeadline } =
|
|
48
|
+
await sendVote({
|
|
49
|
+
...params,
|
|
50
|
+
contractAddress: infoMetadata.contractAddress,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const voteUri = `/api/vote/${infoMetadata.contractAddress}/vote`;
|
|
54
|
+
const result = await this.put<{ txHash: string }>(
|
|
55
|
+
voteUri,
|
|
56
|
+
{},
|
|
57
|
+
{
|
|
58
|
+
voter: await params.signer.getAddress(),
|
|
59
|
+
isYesVote: params.voted,
|
|
60
|
+
signature: signature,
|
|
61
|
+
signatureDeadline: signatureDeadline,
|
|
62
|
+
},
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
return { transactionHash: result.txHash };
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
// READ
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { estimateGas } from '../executeTransaction';
|
|
2
2
|
import { encodeCastVote } from './encode';
|
|
3
|
-
import { ExecuteVoteParams, VoteInfo } from '../../types';
|
|
3
|
+
import { ExecuteVoteParams, SignedVote, VoteInfo } from '../../types';
|
|
4
4
|
import {
|
|
5
5
|
GelatoRelay,
|
|
6
6
|
CallWithERC2771Request,
|
|
7
7
|
ERC2771Type,
|
|
8
8
|
SignerOrProvider,
|
|
9
9
|
} from '@gelatonetwork/relay-sdk';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
convertToAddress,
|
|
12
|
+
ReyaChainId,
|
|
13
|
+
signVote,
|
|
14
|
+
ONE_DAY_IN_SECONDS,
|
|
15
|
+
} from '@reyaxyz/common';
|
|
11
16
|
|
|
12
17
|
export const vote = async (params: ExecuteVoteParams): Promise<VoteInfo> => {
|
|
13
18
|
const { calldata: data, value } = encodeCastVote(params.voted == 'yes');
|
|
@@ -52,3 +57,30 @@ export const vote = async (params: ExecuteVoteParams): Promise<VoteInfo> => {
|
|
|
52
57
|
throw new Error('Vote failed. Please reach out via Discord.');
|
|
53
58
|
}
|
|
54
59
|
};
|
|
60
|
+
|
|
61
|
+
export const sendVote = async (
|
|
62
|
+
params: ExecuteVoteParams,
|
|
63
|
+
): Promise<SignedVote> => {
|
|
64
|
+
const network = await params.signer.provider?.getNetwork();
|
|
65
|
+
if (!network) {
|
|
66
|
+
throw new Error('Vote failed. Network not found.');
|
|
67
|
+
}
|
|
68
|
+
const reyaChainId = Number(network.chainId);
|
|
69
|
+
if (!Object.values(ReyaChainId).includes(reyaChainId)) {
|
|
70
|
+
throw new Error('Not on Reya Network.');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const user = await params.signer.getAddress();
|
|
74
|
+
const deadline = Math.floor(Date.now() / 1000) + ONE_DAY_IN_SECONDS * 7;
|
|
75
|
+
|
|
76
|
+
const signature = await signVote(
|
|
77
|
+
params.signer,
|
|
78
|
+
reyaChainId,
|
|
79
|
+
params.contractAddress,
|
|
80
|
+
user,
|
|
81
|
+
params.voted == 'yes' ? true : false,
|
|
82
|
+
deadline,
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
return { signature: signature, deadline: deadline };
|
|
86
|
+
};
|