@sign-global/tokentable 0.0.1 → 0.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.
- package/README.md +7 -21
- package/dist/cjs/airdrop/core/evm/AirdropService.d.ts +1 -1
- package/dist/cjs/airdrop/core/evm/AirdropService.js +3 -3
- package/dist/cjs/airdrop/core/evm/AirdropService.js.map +1 -1
- package/dist/cjs/airdrop/core/ton/AirdropService.d.ts +1 -0
- package/dist/cjs/airdrop/core/ton/AirdropService.js +5 -0
- package/dist/cjs/airdrop/core/ton/AirdropService.js.map +1 -1
- package/dist/cjs/airdrop/index.d.ts +39 -3
- package/dist/cjs/airdrop/index.js +140 -20
- package/dist/cjs/airdrop/index.js.map +1 -1
- package/dist/cjs/airdrop/types/index.d.ts +4 -23
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/airdrop/core/evm/AirdropService.d.ts +1 -1
- package/dist/esm/airdrop/core/evm/AirdropService.js +3 -3
- package/dist/esm/airdrop/core/evm/AirdropService.js.map +1 -1
- package/dist/esm/airdrop/core/ton/AirdropService.d.ts +1 -0
- package/dist/esm/airdrop/core/ton/AirdropService.js +5 -0
- package/dist/esm/airdrop/core/ton/AirdropService.js.map +1 -1
- package/dist/esm/airdrop/index.d.ts +39 -3
- package/dist/esm/airdrop/index.js +138 -3
- package/dist/esm/airdrop/index.js.map +1 -1
- package/dist/esm/airdrop/types/index.d.ts +4 -23
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/airdrop/core/evm/AirdropService.ts +3 -3
- package/src/airdrop/core/ton/AirdropService.ts +6 -0
- package/src/airdrop/index.ts +175 -3
- package/src/airdrop/types/index.ts +6 -32
- package/src/index.ts +1 -1
- package/dist/cjs/airdrop/BaseAirdropClient.d.ts +0 -28
- package/dist/cjs/airdrop/BaseAirdropClient.js +0 -50
- package/dist/cjs/airdrop/BaseAirdropClient.js.map +0 -1
- package/dist/cjs/airdrop/EvmAirdropClient.d.ts +0 -19
- package/dist/cjs/airdrop/EvmAirdropClient.js +0 -65
- package/dist/cjs/airdrop/EvmAirdropClient.js.map +0 -1
- package/dist/cjs/airdrop/TonAirdropClient.d.ts +0 -24
- package/dist/cjs/airdrop/TonAirdropClient.js +0 -78
- package/dist/cjs/airdrop/TonAirdropClient.js.map +0 -1
- package/dist/esm/airdrop/BaseAirdropClient.d.ts +0 -28
- package/dist/esm/airdrop/BaseAirdropClient.js +0 -46
- package/dist/esm/airdrop/BaseAirdropClient.js.map +0 -1
- package/dist/esm/airdrop/EvmAirdropClient.d.ts +0 -19
- package/dist/esm/airdrop/EvmAirdropClient.js +0 -61
- package/dist/esm/airdrop/EvmAirdropClient.js.map +0 -1
- package/dist/esm/airdrop/TonAirdropClient.d.ts +0 -24
- package/dist/esm/airdrop/TonAirdropClient.js +0 -74
- package/dist/esm/airdrop/TonAirdropClient.js.map +0 -1
- package/index.ts +0 -34
- package/src/airdrop/BaseAirdropClient.ts +0 -75
- package/src/airdrop/EvmAirdropClient.ts +0 -74
- package/src/airdrop/TonAirdropClient.ts +0 -93
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { TonConnectUI } from '@tonconnect/ui-react';
|
|
3
|
-
import { AirdropService as TonAirdropService } from './core/ton/AirdropService';
|
|
4
|
-
import { TonAirdropOptions, TonContractWrapperOptions } from './types';
|
|
5
|
-
export declare class TonAirdropClient extends BaseAirdropClient {
|
|
6
|
-
private tonClient?;
|
|
7
|
-
private slug?;
|
|
8
|
-
private contractInstances;
|
|
9
|
-
constructor(params: TonAirdropOptions);
|
|
10
|
-
protected initializeProjects(address: string): Promise<void>;
|
|
11
|
-
getAirdropContractWrapper(options: TonContractWrapperOptions): TonAirdropService;
|
|
12
|
-
private getClaimDataById;
|
|
13
|
-
claimAirdrop({ claimId, walletClient }: {
|
|
14
|
-
claimId: string;
|
|
15
|
-
walletClient: TonConnectUI;
|
|
16
|
-
}, options: {
|
|
17
|
-
onLoading?: () => void;
|
|
18
|
-
}): Promise<import("tonapi-sdk-js").Event | null>;
|
|
19
|
-
checkClaimed(claimId: string): Promise<boolean>;
|
|
20
|
-
getPaused({ contractAddress, chainId }: {
|
|
21
|
-
contractAddress: string;
|
|
22
|
-
chainId: string;
|
|
23
|
-
}): Promise<boolean>;
|
|
24
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TonAirdropClient = void 0;
|
|
4
|
-
const BaseAirdropClient_1 = require("./BaseAirdropClient");
|
|
5
|
-
const AirdropService_1 = require("./core/ton/AirdropService");
|
|
6
|
-
const services_1 = require("./services");
|
|
7
|
-
const common_1 = require("./common");
|
|
8
|
-
class TonAirdropClient extends BaseAirdropClient_1.BaseAirdropClient {
|
|
9
|
-
tonClient;
|
|
10
|
-
slug;
|
|
11
|
-
contractInstances = new Map();
|
|
12
|
-
constructor(params) {
|
|
13
|
-
super(params);
|
|
14
|
-
if ('slug' in params) {
|
|
15
|
-
this.slug = params.slug;
|
|
16
|
-
}
|
|
17
|
-
this.tonClient = params.tonClient;
|
|
18
|
-
}
|
|
19
|
-
async initializeProjects(address) {
|
|
20
|
-
let projectIds = this.projectId ? [this.projectId] : [];
|
|
21
|
-
if (this.slug) {
|
|
22
|
-
const res = await (0, services_1.getAirdropPro)(this.slug, this.endpoint);
|
|
23
|
-
const projectMap = res?.childProjectMapping;
|
|
24
|
-
const legacyProjectId = (0, common_1.getTonProjectIdByAddress)({ address, slug: this.slug, data: projectMap });
|
|
25
|
-
if (legacyProjectId) {
|
|
26
|
-
projectIds = [...projectIds, legacyProjectId];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
this.projects = await Promise.all(projectIds.map(async (projectId) => (0, services_1.getAirdropProject)(projectId, this.endpoint)));
|
|
30
|
-
}
|
|
31
|
-
getAirdropContractWrapper(options) {
|
|
32
|
-
const instanceKey = `${options.chainId}:${options.contractAddress}`;
|
|
33
|
-
if (!this.contractInstances.has(instanceKey)) {
|
|
34
|
-
const instance = new AirdropService_1.AirdropService({
|
|
35
|
-
chainId: options.chainId.toString(),
|
|
36
|
-
address: options.contractAddress,
|
|
37
|
-
walletClient: options.walletClient,
|
|
38
|
-
tonClient: this.tonClient
|
|
39
|
-
});
|
|
40
|
-
this.contractInstances.set(instanceKey, instance);
|
|
41
|
-
}
|
|
42
|
-
return this.contractInstances.get(instanceKey);
|
|
43
|
-
}
|
|
44
|
-
getClaimDataById(claimId) {
|
|
45
|
-
const claimData = this.claims?.find((it) => it.claimId === claimId);
|
|
46
|
-
if (!claimData)
|
|
47
|
-
throw new Error('Claim data not found');
|
|
48
|
-
return claimData;
|
|
49
|
-
}
|
|
50
|
-
async claimAirdrop({ claimId, walletClient }, options) {
|
|
51
|
-
const claimData = this.getClaimDataById(claimId);
|
|
52
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
53
|
-
chainId: claimData.project.chainId,
|
|
54
|
-
contractAddress: claimData.project.contractAddress,
|
|
55
|
-
walletClient
|
|
56
|
-
});
|
|
57
|
-
return contractWrapper.claim(claimData, options);
|
|
58
|
-
}
|
|
59
|
-
async checkClaimed(claimId) {
|
|
60
|
-
const claimData = this.getClaimDataById(claimId);
|
|
61
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
62
|
-
chainId: claimData.project.chainId,
|
|
63
|
-
contractAddress: claimData.project.contractAddress,
|
|
64
|
-
tonClient: this.tonClient
|
|
65
|
-
});
|
|
66
|
-
return contractWrapper.checkClaimed(claimData);
|
|
67
|
-
}
|
|
68
|
-
async getPaused({ contractAddress, chainId }) {
|
|
69
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
70
|
-
chainId: chainId,
|
|
71
|
-
contractAddress,
|
|
72
|
-
tonClient: this.tonClient
|
|
73
|
-
});
|
|
74
|
-
return contractWrapper.getPaused();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.TonAirdropClient = TonAirdropClient;
|
|
78
|
-
//# sourceMappingURL=TonAirdropClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TonAirdropClient.js","sourceRoot":"","sources":["../../../src/airdrop/TonAirdropClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropOptions, ContractWrapperOptions, IAirdropClaim, IAirdropService, IProject, IWalletClient } from './types';
|
|
2
|
-
export declare abstract class BaseAirdropClient {
|
|
3
|
-
protected endpoint?: string;
|
|
4
|
-
protected projectId?: string;
|
|
5
|
-
protected claims?: IAirdropClaim[];
|
|
6
|
-
protected projects?: IProject[];
|
|
7
|
-
constructor(params: BaseAirdropOptions);
|
|
8
|
-
abstract getAirdropContractWrapper(options: ContractWrapperOptions): IAirdropService | undefined;
|
|
9
|
-
fetchAirdropProjectIds(data: {
|
|
10
|
-
recipient: string;
|
|
11
|
-
slug: string;
|
|
12
|
-
}): Promise<{
|
|
13
|
-
recipient: string;
|
|
14
|
-
projectIds: string[];
|
|
15
|
-
}>;
|
|
16
|
-
protected initializeProjects(address: string): Promise<void>;
|
|
17
|
-
fetchAirdropClaims(data: {
|
|
18
|
-
address: string;
|
|
19
|
-
}): Promise<IAirdropClaim[]>;
|
|
20
|
-
getProjectList(): IProject[] | undefined;
|
|
21
|
-
abstract claimAirdrop(params: {
|
|
22
|
-
claimId: string;
|
|
23
|
-
walletClient: IWalletClient;
|
|
24
|
-
}, options: {
|
|
25
|
-
onLoading?: () => void;
|
|
26
|
-
}): Promise<unknown>;
|
|
27
|
-
abstract checkClaimed(claimId: string): Promise<boolean>;
|
|
28
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { getAirdropProject, getAirdropProjectId, getAirdropQuery } from './services';
|
|
2
|
-
import { ChainType } from './types';
|
|
3
|
-
export class BaseAirdropClient {
|
|
4
|
-
endpoint;
|
|
5
|
-
projectId;
|
|
6
|
-
claims;
|
|
7
|
-
projects;
|
|
8
|
-
constructor(params) {
|
|
9
|
-
this.endpoint = params.endpoint;
|
|
10
|
-
this.projectId = params.projectId;
|
|
11
|
-
}
|
|
12
|
-
async fetchAirdropProjectIds(data) {
|
|
13
|
-
const res = await getAirdropProjectId(data, this.endpoint);
|
|
14
|
-
return res;
|
|
15
|
-
}
|
|
16
|
-
async initializeProjects(address) {
|
|
17
|
-
const projectIds = this.projectId ? [this.projectId] : [];
|
|
18
|
-
this.projects = await Promise.all(projectIds.map(async (projectId) => getAirdropProject(projectId, this.endpoint)));
|
|
19
|
-
}
|
|
20
|
-
async fetchAirdropClaims(data) {
|
|
21
|
-
if (!this.projects) {
|
|
22
|
-
await this.initializeProjects(data.address);
|
|
23
|
-
}
|
|
24
|
-
if (!this.projects?.length) {
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
const claimsRes = await Promise.all(this.projects.map(async (project) => {
|
|
28
|
-
const res = await getAirdropQuery({
|
|
29
|
-
recipient: data.address,
|
|
30
|
-
projectId: project.id,
|
|
31
|
-
recipientType: project.recipientType
|
|
32
|
-
}, this.endpoint);
|
|
33
|
-
return res.claims?.map((it) => ({
|
|
34
|
-
...it,
|
|
35
|
-
project: project,
|
|
36
|
-
claimId: project.chainType === ChainType.Evm ? `${project.id}:${it.leaf}` : `${project.id}:${it.index}`
|
|
37
|
-
}));
|
|
38
|
-
}));
|
|
39
|
-
this.claims = claimsRes.flat();
|
|
40
|
-
return this.claims;
|
|
41
|
-
}
|
|
42
|
-
getProjectList() {
|
|
43
|
-
return this.projects;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=BaseAirdropClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAirdropClient.js","sourceRoot":"","sources":["../../../src/airdrop/BaseAirdropClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,EAEL,SAAS,EAMV,MAAM,SAAS,CAAC;AAEjB,MAAM,OAAgB,iBAAiB;IAC3B,QAAQ,CAAU;IAClB,SAAS,CAAU;IACnB,MAAM,CAAmB;IACzB,QAAQ,CAAc;IAEhC,YAAY,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAID,KAAK,CAAC,sBAAsB,CAAC,IAAyC;QACpE,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,GAAG,CAAC;IACb,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAChD,MAAM,UAAU,GAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAyB;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,eAAe,CAC/B;gBACE,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,EACD,IAAI,CAAC,QAAQ,CACd,CAAC;YACF,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,EAAE;gBACL,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE;aACxG,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CAQF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { EvmContractWrapperOptions } from './types';
|
|
3
|
-
import { AirdropService as EvmAirdropService } from './core/evm/AirdropService';
|
|
4
|
-
import { WalletClient as ViemWalletClient } from 'viem';
|
|
5
|
-
export declare class EvmAirdropClient extends BaseAirdropClient {
|
|
6
|
-
private contractInstances;
|
|
7
|
-
getAirdropContractWrapper(options: EvmContractWrapperOptions): EvmAirdropService;
|
|
8
|
-
private getClaimDataById;
|
|
9
|
-
claimAirdrop({ claimId, walletClient }: {
|
|
10
|
-
claimId: string;
|
|
11
|
-
walletClient: ViemWalletClient;
|
|
12
|
-
}): Promise<`0x${string}`>;
|
|
13
|
-
checkClaimed(claimId: string): Promise<boolean>;
|
|
14
|
-
batchFetchClaimed(leafs: string[]): Promise<{
|
|
15
|
-
result: boolean;
|
|
16
|
-
status: string;
|
|
17
|
-
}[]>;
|
|
18
|
-
getClaimFee(amount: bigint): Promise<bigint | undefined>;
|
|
19
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { AirdropService as EvmAirdropService } from './core/evm/AirdropService';
|
|
3
|
-
export class EvmAirdropClient extends BaseAirdropClient {
|
|
4
|
-
contractInstances = new Map();
|
|
5
|
-
getAirdropContractWrapper(options) {
|
|
6
|
-
const instanceKey = `${options.chainId}:${options.contractAddress}`;
|
|
7
|
-
if (!this.contractInstances.has(instanceKey)) {
|
|
8
|
-
const instance = new EvmAirdropService({
|
|
9
|
-
contractAddress: options.contractAddress,
|
|
10
|
-
chainId: Number(options.chainId),
|
|
11
|
-
walletClient: options.walletClient
|
|
12
|
-
});
|
|
13
|
-
this.contractInstances.set(instanceKey, instance);
|
|
14
|
-
}
|
|
15
|
-
return this.contractInstances.get(instanceKey);
|
|
16
|
-
}
|
|
17
|
-
getClaimDataById(claimId) {
|
|
18
|
-
const claimData = this.claims?.find((it) => it.claimId === claimId);
|
|
19
|
-
if (!claimData)
|
|
20
|
-
throw new Error('Claim data not found');
|
|
21
|
-
return claimData;
|
|
22
|
-
}
|
|
23
|
-
async claimAirdrop({ claimId, walletClient }) {
|
|
24
|
-
const claimData = this.getClaimDataById(claimId);
|
|
25
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
26
|
-
chainId: claimData.project.chainId,
|
|
27
|
-
contractAddress: claimData.project.contractAddress,
|
|
28
|
-
walletClient
|
|
29
|
-
});
|
|
30
|
-
return contractWrapper.claim(claimData);
|
|
31
|
-
}
|
|
32
|
-
async checkClaimed(claimId) {
|
|
33
|
-
const claimData = this.getClaimDataById(claimId);
|
|
34
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
35
|
-
chainId: Number(claimData.project.chainId),
|
|
36
|
-
contractAddress: claimData.project.contractAddress
|
|
37
|
-
});
|
|
38
|
-
return contractWrapper.isLeafUsed(claimData.leaf);
|
|
39
|
-
}
|
|
40
|
-
async batchFetchClaimed(leafs) {
|
|
41
|
-
const claimData = this.claims?.[0];
|
|
42
|
-
if (!claimData)
|
|
43
|
-
throw new Error('Claim data not found');
|
|
44
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
45
|
-
chainId: Number(claimData.project.chainId),
|
|
46
|
-
contractAddress: claimData.project.contractAddress
|
|
47
|
-
});
|
|
48
|
-
return contractWrapper.batchFetchClaimed(leafs);
|
|
49
|
-
}
|
|
50
|
-
async getClaimFee(amount) {
|
|
51
|
-
const claimData = this.claims?.[0];
|
|
52
|
-
if (!claimData)
|
|
53
|
-
throw new Error('Claim data not found');
|
|
54
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
55
|
-
chainId: Number(claimData.project.chainId),
|
|
56
|
-
contractAddress: claimData.project.contractAddress
|
|
57
|
-
});
|
|
58
|
-
return contractWrapper.getClaimFee(claimData.project.contractAddress, amount);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=EvmAirdropClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EvmAirdropClient.js","sourceRoot":"","sources":["../../../src/airdrop/EvmAirdropClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { TonConnectUI } from '@tonconnect/ui-react';
|
|
3
|
-
import { AirdropService as TonAirdropService } from './core/ton/AirdropService';
|
|
4
|
-
import { TonAirdropOptions, TonContractWrapperOptions } from './types';
|
|
5
|
-
export declare class TonAirdropClient extends BaseAirdropClient {
|
|
6
|
-
private tonClient?;
|
|
7
|
-
private slug?;
|
|
8
|
-
private contractInstances;
|
|
9
|
-
constructor(params: TonAirdropOptions);
|
|
10
|
-
protected initializeProjects(address: string): Promise<void>;
|
|
11
|
-
getAirdropContractWrapper(options: TonContractWrapperOptions): TonAirdropService;
|
|
12
|
-
private getClaimDataById;
|
|
13
|
-
claimAirdrop({ claimId, walletClient }: {
|
|
14
|
-
claimId: string;
|
|
15
|
-
walletClient: TonConnectUI;
|
|
16
|
-
}, options: {
|
|
17
|
-
onLoading?: () => void;
|
|
18
|
-
}): Promise<import("tonapi-sdk-js").Event | null>;
|
|
19
|
-
checkClaimed(claimId: string): Promise<boolean>;
|
|
20
|
-
getPaused({ contractAddress, chainId }: {
|
|
21
|
-
contractAddress: string;
|
|
22
|
-
chainId: string;
|
|
23
|
-
}): Promise<boolean>;
|
|
24
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { AirdropService as TonAirdropService } from './core/ton/AirdropService';
|
|
3
|
-
import { getAirdropPro, getAirdropProject } from './services';
|
|
4
|
-
import { getTonProjectIdByAddress } from './common';
|
|
5
|
-
export class TonAirdropClient extends BaseAirdropClient {
|
|
6
|
-
tonClient;
|
|
7
|
-
slug;
|
|
8
|
-
contractInstances = new Map();
|
|
9
|
-
constructor(params) {
|
|
10
|
-
super(params);
|
|
11
|
-
if ('slug' in params) {
|
|
12
|
-
this.slug = params.slug;
|
|
13
|
-
}
|
|
14
|
-
this.tonClient = params.tonClient;
|
|
15
|
-
}
|
|
16
|
-
async initializeProjects(address) {
|
|
17
|
-
let projectIds = this.projectId ? [this.projectId] : [];
|
|
18
|
-
if (this.slug) {
|
|
19
|
-
const res = await getAirdropPro(this.slug, this.endpoint);
|
|
20
|
-
const projectMap = res?.childProjectMapping;
|
|
21
|
-
const legacyProjectId = getTonProjectIdByAddress({ address, slug: this.slug, data: projectMap });
|
|
22
|
-
if (legacyProjectId) {
|
|
23
|
-
projectIds = [...projectIds, legacyProjectId];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
this.projects = await Promise.all(projectIds.map(async (projectId) => getAirdropProject(projectId, this.endpoint)));
|
|
27
|
-
}
|
|
28
|
-
getAirdropContractWrapper(options) {
|
|
29
|
-
const instanceKey = `${options.chainId}:${options.contractAddress}`;
|
|
30
|
-
if (!this.contractInstances.has(instanceKey)) {
|
|
31
|
-
const instance = new TonAirdropService({
|
|
32
|
-
chainId: options.chainId.toString(),
|
|
33
|
-
address: options.contractAddress,
|
|
34
|
-
walletClient: options.walletClient,
|
|
35
|
-
tonClient: this.tonClient
|
|
36
|
-
});
|
|
37
|
-
this.contractInstances.set(instanceKey, instance);
|
|
38
|
-
}
|
|
39
|
-
return this.contractInstances.get(instanceKey);
|
|
40
|
-
}
|
|
41
|
-
getClaimDataById(claimId) {
|
|
42
|
-
const claimData = this.claims?.find((it) => it.claimId === claimId);
|
|
43
|
-
if (!claimData)
|
|
44
|
-
throw new Error('Claim data not found');
|
|
45
|
-
return claimData;
|
|
46
|
-
}
|
|
47
|
-
async claimAirdrop({ claimId, walletClient }, options) {
|
|
48
|
-
const claimData = this.getClaimDataById(claimId);
|
|
49
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
50
|
-
chainId: claimData.project.chainId,
|
|
51
|
-
contractAddress: claimData.project.contractAddress,
|
|
52
|
-
walletClient
|
|
53
|
-
});
|
|
54
|
-
return contractWrapper.claim(claimData, options);
|
|
55
|
-
}
|
|
56
|
-
async checkClaimed(claimId) {
|
|
57
|
-
const claimData = this.getClaimDataById(claimId);
|
|
58
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
59
|
-
chainId: claimData.project.chainId,
|
|
60
|
-
contractAddress: claimData.project.contractAddress,
|
|
61
|
-
tonClient: this.tonClient
|
|
62
|
-
});
|
|
63
|
-
return contractWrapper.checkClaimed(claimData);
|
|
64
|
-
}
|
|
65
|
-
async getPaused({ contractAddress, chainId }) {
|
|
66
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
67
|
-
chainId: chainId,
|
|
68
|
-
contractAddress,
|
|
69
|
-
tonClient: this.tonClient
|
|
70
|
-
});
|
|
71
|
-
return contractWrapper.getPaused();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=TonAirdropClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TonAirdropClient.js","sourceRoot":"","sources":["../../../src/airdrop/TonAirdropClient.ts"],"names":[],"mappings":"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"}
|
package/index.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { TonWalletService } from './src/airdrop/services/wallet-service/ton/WalletService';
|
|
2
|
-
import { AirdropClient } from './src/airdrop';
|
|
3
|
-
import { ChainType } from './src/airdrop/types';
|
|
4
|
-
import { CHAIN } from '@tonconnect/ui-react';
|
|
5
|
-
|
|
6
|
-
console.log('Hello via Bun!');
|
|
7
|
-
|
|
8
|
-
const airdropClient = new AirdropClient({
|
|
9
|
-
// baseURL: 'http://ec2-3-89-178-45.compute-1.amazonaws.com:3030/api',
|
|
10
|
-
projectId: 'AD_pxPH2LcgWXgz',
|
|
11
|
-
chainType: ChainType.Ton
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
const claims = await airdropClient.fetchAirdropClaims({
|
|
15
|
-
address: 'UQB3bCGYQxF7-7u728yKQgMepCftbw4pirZoh0vjzHdELAHA'
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
console.log(claims);
|
|
19
|
-
|
|
20
|
-
const projects = airdropClient.getProjectList();
|
|
21
|
-
|
|
22
|
-
console.log(projects);
|
|
23
|
-
|
|
24
|
-
// const isClaimed = await airdropClient.checkClaimed('AD_6oYIAQzOCWaK-75');
|
|
25
|
-
|
|
26
|
-
// console.log(isClaimed);
|
|
27
|
-
|
|
28
|
-
const balance = await TonWalletService.fetchBalance({
|
|
29
|
-
chainId: CHAIN.TESTNET,
|
|
30
|
-
address: '0QANAsrLyyHoq8N4EZ-QfADXhtoSUybdSKXOknMLWLbA7gDx',
|
|
31
|
-
token: 'kQDg-lZ_gEZUb1MCjOpgemMSnLRZMVIUVMJxpoev7rmv1UKy'
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
console.log(balance);
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { getAirdropProject, getAirdropProjectId, getAirdropQuery } from './services';
|
|
2
|
-
import {
|
|
3
|
-
BaseAirdropOptions,
|
|
4
|
-
ChainType,
|
|
5
|
-
ContractWrapperOptions,
|
|
6
|
-
IAirdropClaim,
|
|
7
|
-
IAirdropService,
|
|
8
|
-
IProject,
|
|
9
|
-
IWalletClient
|
|
10
|
-
} from './types';
|
|
11
|
-
|
|
12
|
-
export abstract class BaseAirdropClient {
|
|
13
|
-
protected endpoint?: string;
|
|
14
|
-
protected projectId?: string;
|
|
15
|
-
protected claims?: IAirdropClaim[];
|
|
16
|
-
protected projects?: IProject[];
|
|
17
|
-
|
|
18
|
-
constructor(params: BaseAirdropOptions) {
|
|
19
|
-
this.endpoint = params.endpoint;
|
|
20
|
-
this.projectId = params.projectId;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
abstract getAirdropContractWrapper(options: ContractWrapperOptions): IAirdropService | undefined;
|
|
24
|
-
|
|
25
|
-
async fetchAirdropProjectIds(data: { recipient: string; slug: string }) {
|
|
26
|
-
const res = await getAirdropProjectId(data, this.endpoint);
|
|
27
|
-
return res;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected async initializeProjects(address: string) {
|
|
31
|
-
const projectIds: string[] = this.projectId ? [this.projectId] : [];
|
|
32
|
-
this.projects = await Promise.all(projectIds.map(async (projectId) => getAirdropProject(projectId, this.endpoint)));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async fetchAirdropClaims(data: { address: string }) {
|
|
36
|
-
if (!this.projects) {
|
|
37
|
-
await this.initializeProjects(data.address);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (!this.projects?.length) {
|
|
41
|
-
return [];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const claimsRes = await Promise.all(
|
|
45
|
-
this.projects.map(async (project) => {
|
|
46
|
-
const res = await getAirdropQuery(
|
|
47
|
-
{
|
|
48
|
-
recipient: data.address,
|
|
49
|
-
projectId: project.id,
|
|
50
|
-
recipientType: project.recipientType
|
|
51
|
-
},
|
|
52
|
-
this.endpoint
|
|
53
|
-
);
|
|
54
|
-
return res.claims?.map((it) => ({
|
|
55
|
-
...it,
|
|
56
|
-
project: project,
|
|
57
|
-
claimId: project.chainType === ChainType.Evm ? `${project.id}:${it.leaf}` : `${project.id}:${it.index}`
|
|
58
|
-
}));
|
|
59
|
-
})
|
|
60
|
-
);
|
|
61
|
-
this.claims = claimsRes.flat();
|
|
62
|
-
return this.claims;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
getProjectList() {
|
|
66
|
-
return this.projects;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
abstract claimAirdrop(
|
|
70
|
-
params: { claimId: string; walletClient: IWalletClient },
|
|
71
|
-
options: { onLoading?: () => void }
|
|
72
|
-
): Promise<unknown>;
|
|
73
|
-
|
|
74
|
-
abstract checkClaimed(claimId: string): Promise<boolean>;
|
|
75
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
2
|
-
import { ChainId, EvmContractWrapperOptions } from './types';
|
|
3
|
-
import { AirdropService as EvmAirdropService } from './core/evm/AirdropService';
|
|
4
|
-
import { WalletClient as ViemWalletClient } from 'viem';
|
|
5
|
-
|
|
6
|
-
export class EvmAirdropClient extends BaseAirdropClient {
|
|
7
|
-
private contractInstances = new Map<string, EvmAirdropService>();
|
|
8
|
-
getAirdropContractWrapper(options: EvmContractWrapperOptions): EvmAirdropService {
|
|
9
|
-
const instanceKey = `${options.chainId}:${options.contractAddress}`;
|
|
10
|
-
if (!this.contractInstances.has(instanceKey)) {
|
|
11
|
-
const instance = new EvmAirdropService({
|
|
12
|
-
contractAddress: options.contractAddress,
|
|
13
|
-
chainId: Number(options.chainId) as ChainId,
|
|
14
|
-
walletClient: options.walletClient as ViemWalletClient
|
|
15
|
-
});
|
|
16
|
-
this.contractInstances.set(instanceKey, instance);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return this.contractInstances.get(instanceKey)!;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
private getClaimDataById(claimId: string) {
|
|
23
|
-
const claimData = this.claims?.find((it) => it.claimId === claimId);
|
|
24
|
-
if (!claimData) throw new Error('Claim data not found');
|
|
25
|
-
return claimData;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async claimAirdrop({ claimId, walletClient }: { claimId: string; walletClient: ViemWalletClient }) {
|
|
29
|
-
const claimData = this.getClaimDataById(claimId);
|
|
30
|
-
|
|
31
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
32
|
-
chainId: claimData.project.chainId as ChainId,
|
|
33
|
-
contractAddress: claimData.project.contractAddress,
|
|
34
|
-
walletClient
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return contractWrapper.claim(claimData);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async checkClaimed(claimId: string): Promise<boolean> {
|
|
41
|
-
const claimData = this.getClaimDataById(claimId);
|
|
42
|
-
|
|
43
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
44
|
-
chainId: Number(claimData.project.chainId) as ChainId,
|
|
45
|
-
contractAddress: claimData.project.contractAddress
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return contractWrapper.isLeafUsed(claimData.leaf);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async batchFetchClaimed(leafs: string[]) {
|
|
52
|
-
const claimData = this.claims?.[0];
|
|
53
|
-
if (!claimData) throw new Error('Claim data not found');
|
|
54
|
-
|
|
55
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
56
|
-
chainId: Number(claimData.project.chainId) as ChainId,
|
|
57
|
-
contractAddress: claimData.project.contractAddress
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
return contractWrapper.batchFetchClaimed(leafs);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async getClaimFee(amount: bigint) {
|
|
64
|
-
const claimData = this.claims?.[0];
|
|
65
|
-
if (!claimData) throw new Error('Claim data not found');
|
|
66
|
-
|
|
67
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
68
|
-
chainId: Number(claimData.project.chainId) as ChainId,
|
|
69
|
-
contractAddress: claimData.project.contractAddress
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
return contractWrapper.getClaimFee(claimData.project.contractAddress, amount);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { TonClient } from '@ton/ton';
|
|
2
|
-
import { BaseAirdropClient } from './BaseAirdropClient';
|
|
3
|
-
import { TonConnectUI } from '@tonconnect/ui-react';
|
|
4
|
-
import { AirdropService as TonAirdropService } from './core/ton/AirdropService';
|
|
5
|
-
import { getAirdropPro, getAirdropProject } from './services';
|
|
6
|
-
import { ChainId, TonAirdropOptions, TonContractWrapperOptions } from './types';
|
|
7
|
-
import { getTonProjectIdByAddress } from './common';
|
|
8
|
-
|
|
9
|
-
export class TonAirdropClient extends BaseAirdropClient {
|
|
10
|
-
private tonClient?: TonClient;
|
|
11
|
-
private slug?: string;
|
|
12
|
-
private contractInstances = new Map<string, TonAirdropService>();
|
|
13
|
-
|
|
14
|
-
constructor(params: TonAirdropOptions) {
|
|
15
|
-
super(params);
|
|
16
|
-
if ('slug' in params) {
|
|
17
|
-
this.slug = params.slug;
|
|
18
|
-
}
|
|
19
|
-
this.tonClient = params.tonClient;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
protected async initializeProjects(address: string) {
|
|
23
|
-
let projectIds: string[] = this.projectId ? [this.projectId] : [];
|
|
24
|
-
if (this.slug) {
|
|
25
|
-
const res = await getAirdropPro(this.slug, this.endpoint);
|
|
26
|
-
const projectMap = res?.childProjectMapping;
|
|
27
|
-
const legacyProjectId = getTonProjectIdByAddress({ address, slug: this.slug, data: projectMap });
|
|
28
|
-
|
|
29
|
-
if (legacyProjectId) {
|
|
30
|
-
projectIds = [...projectIds, legacyProjectId];
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
this.projects = await Promise.all(projectIds.map(async (projectId) => getAirdropProject(projectId, this.endpoint)));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
getAirdropContractWrapper(options: TonContractWrapperOptions): TonAirdropService {
|
|
37
|
-
const instanceKey = `${options.chainId}:${options.contractAddress}`;
|
|
38
|
-
|
|
39
|
-
if (!this.contractInstances.has(instanceKey)) {
|
|
40
|
-
const instance = new TonAirdropService({
|
|
41
|
-
chainId: options.chainId.toString(),
|
|
42
|
-
address: options.contractAddress,
|
|
43
|
-
walletClient: options.walletClient as TonConnectUI,
|
|
44
|
-
tonClient: this.tonClient
|
|
45
|
-
});
|
|
46
|
-
this.contractInstances.set(instanceKey, instance);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return this.contractInstances.get(instanceKey)!;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private getClaimDataById(claimId: string) {
|
|
53
|
-
const claimData = this.claims?.find((it) => it.claimId === claimId);
|
|
54
|
-
if (!claimData) throw new Error('Claim data not found');
|
|
55
|
-
return claimData;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async claimAirdrop(
|
|
59
|
-
{ claimId, walletClient }: { claimId: string; walletClient: TonConnectUI },
|
|
60
|
-
options: { onLoading?: () => void }
|
|
61
|
-
) {
|
|
62
|
-
const claimData = this.getClaimDataById(claimId);
|
|
63
|
-
|
|
64
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
65
|
-
chainId: claimData.project.chainId as ChainId,
|
|
66
|
-
contractAddress: claimData.project.contractAddress,
|
|
67
|
-
walletClient
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
return contractWrapper.claim(claimData, options);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async checkClaimed(claimId: string): Promise<boolean> {
|
|
74
|
-
const claimData = this.getClaimDataById(claimId);
|
|
75
|
-
|
|
76
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
77
|
-
chainId: claimData.project.chainId as ChainId,
|
|
78
|
-
contractAddress: claimData.project.contractAddress,
|
|
79
|
-
tonClient: this.tonClient
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
return contractWrapper.checkClaimed(claimData);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async getPaused({ contractAddress, chainId }: { contractAddress: string; chainId: string }) {
|
|
86
|
-
const contractWrapper = this.getAirdropContractWrapper({
|
|
87
|
-
chainId: chainId as ChainId,
|
|
88
|
-
contractAddress,
|
|
89
|
-
tonClient: this.tonClient
|
|
90
|
-
});
|
|
91
|
-
return contractWrapper.getPaused();
|
|
92
|
-
}
|
|
93
|
-
}
|