@sign-global/tokentable 0.0.1 → 0.0.3

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 (68) hide show
  1. package/README.md +19 -55
  2. package/dist/cjs/airdrop/common/index.d.ts +1 -1
  3. package/dist/cjs/airdrop/common/index.js +4 -0
  4. package/dist/cjs/airdrop/common/index.js.map +1 -1
  5. package/dist/cjs/airdrop/core/evm/AirdropService.d.ts +1 -1
  6. package/dist/cjs/airdrop/core/evm/AirdropService.js +3 -4
  7. package/dist/cjs/airdrop/core/evm/AirdropService.js.map +1 -1
  8. package/dist/cjs/airdrop/core/ton/AirdropService.d.ts +1 -0
  9. package/dist/cjs/airdrop/core/ton/AirdropService.js +5 -0
  10. package/dist/cjs/airdrop/core/ton/AirdropService.js.map +1 -1
  11. package/dist/cjs/airdrop/index.d.ts +42 -3
  12. package/dist/cjs/airdrop/index.js +188 -20
  13. package/dist/cjs/airdrop/index.js.map +1 -1
  14. package/dist/cjs/airdrop/types/index.d.ts +35 -24
  15. package/dist/cjs/airdrop/types/index.js +7 -1
  16. package/dist/cjs/airdrop/types/index.js.map +1 -1
  17. package/dist/cjs/index.d.ts +2 -1
  18. package/dist/cjs/index.js +17 -3
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/esm/airdrop/common/index.d.ts +1 -1
  21. package/dist/esm/airdrop/common/index.js +4 -0
  22. package/dist/esm/airdrop/common/index.js.map +1 -1
  23. package/dist/esm/airdrop/core/evm/AirdropService.d.ts +1 -1
  24. package/dist/esm/airdrop/core/evm/AirdropService.js +3 -4
  25. package/dist/esm/airdrop/core/evm/AirdropService.js.map +1 -1
  26. package/dist/esm/airdrop/core/ton/AirdropService.d.ts +1 -0
  27. package/dist/esm/airdrop/core/ton/AirdropService.js +5 -0
  28. package/dist/esm/airdrop/core/ton/AirdropService.js.map +1 -1
  29. package/dist/esm/airdrop/index.d.ts +42 -3
  30. package/dist/esm/airdrop/index.js +186 -3
  31. package/dist/esm/airdrop/index.js.map +1 -1
  32. package/dist/esm/airdrop/types/index.d.ts +35 -24
  33. package/dist/esm/airdrop/types/index.js +6 -0
  34. package/dist/esm/airdrop/types/index.js.map +1 -1
  35. package/dist/esm/index.d.ts +2 -1
  36. package/dist/esm/index.js +2 -1
  37. package/dist/esm/index.js.map +1 -1
  38. package/jest.config.cjs +5 -0
  39. package/package.json +6 -2
  40. package/src/airdrop/common/index.ts +6 -1
  41. package/src/airdrop/core/evm/AirdropService.ts +3 -4
  42. package/src/airdrop/core/ton/AirdropService.ts +6 -0
  43. package/src/airdrop/index.ts +243 -3
  44. package/src/airdrop/tests/index.test.ts +95 -0
  45. package/src/airdrop/types/index.ts +39 -33
  46. package/src/index.ts +2 -1
  47. package/dist/cjs/airdrop/BaseAirdropClient.d.ts +0 -28
  48. package/dist/cjs/airdrop/BaseAirdropClient.js +0 -50
  49. package/dist/cjs/airdrop/BaseAirdropClient.js.map +0 -1
  50. package/dist/cjs/airdrop/EvmAirdropClient.d.ts +0 -19
  51. package/dist/cjs/airdrop/EvmAirdropClient.js +0 -65
  52. package/dist/cjs/airdrop/EvmAirdropClient.js.map +0 -1
  53. package/dist/cjs/airdrop/TonAirdropClient.d.ts +0 -24
  54. package/dist/cjs/airdrop/TonAirdropClient.js +0 -78
  55. package/dist/cjs/airdrop/TonAirdropClient.js.map +0 -1
  56. package/dist/esm/airdrop/BaseAirdropClient.d.ts +0 -28
  57. package/dist/esm/airdrop/BaseAirdropClient.js +0 -46
  58. package/dist/esm/airdrop/BaseAirdropClient.js.map +0 -1
  59. package/dist/esm/airdrop/EvmAirdropClient.d.ts +0 -19
  60. package/dist/esm/airdrop/EvmAirdropClient.js +0 -61
  61. package/dist/esm/airdrop/EvmAirdropClient.js.map +0 -1
  62. package/dist/esm/airdrop/TonAirdropClient.d.ts +0 -24
  63. package/dist/esm/airdrop/TonAirdropClient.js +0 -74
  64. package/dist/esm/airdrop/TonAirdropClient.js.map +0 -1
  65. package/index.ts +0 -34
  66. package/src/airdrop/BaseAirdropClient.ts +0 -75
  67. package/src/airdrop/EvmAirdropClient.ts +0 -74
  68. package/src/airdrop/TonAirdropClient.ts +0 -93
@@ -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
- }