generated from ubiquity/ts-template
-
Notifications
You must be signed in to change notification settings - Fork 6
/
generate-payout-permit.ts
36 lines (31 loc) · 1.28 KB
/
generate-payout-permit.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { PermitReward } from "../types";
import { Context } from "../types/context";
import { generateErc20PermitSignature } from "./generate-erc20-permit";
import { generateErc721PermitSignature } from "./generate-erc721-permit";
import { PermitRequest } from "../types/plugin-input";
/**
* Generates a payout permit based on the provided context.
* @param context - The context object containing the configuration and payload.
* @param permitRequests
* @returns A Promise that resolves to the generated permit transaction data or an error message.
*/
export async function generatePayoutPermit(context: Context, permitRequests: PermitRequest[]): Promise<PermitReward[]> {
const permits: PermitReward[] = [];
for (const permitRequest of permitRequests) {
const { type, amount, username, contributionType, tokenAddress } = permitRequest;
let permit: PermitReward;
switch (type) {
case "ERC20":
permit = await generateErc20PermitSignature(context, username, amount, tokenAddress);
break;
case "ERC721":
permit = await generateErc721PermitSignature(context, username, contributionType);
break;
default:
context.logger.error(`Invalid permit type: ${type}`);
continue;
}
permits.push(permit);
}
return permits;
}