@sign-global/tokentable 0.4.0-beta.5 → 0.4.0-beta.7

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 (34) hide show
  1. package/dist/cjs/airdrop/SignatureAirdropClient.d.ts +13 -6
  2. package/dist/cjs/airdrop/SignatureAirdropClient.js +42 -22
  3. package/dist/cjs/airdrop/SignatureAirdropClient.js.map +1 -1
  4. package/dist/cjs/airdrop/core/evm/SignatureAirdropService.d.ts +4 -3
  5. package/dist/cjs/airdrop/core/evm/SignatureAirdropService.js +4 -1
  6. package/dist/cjs/airdrop/core/evm/SignatureAirdropService.js.map +1 -1
  7. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.d.ts +5 -4
  8. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.js +6 -2
  9. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.js.map +1 -1
  10. package/dist/cjs/airdrop/services/index.d.ts +19 -12
  11. package/dist/cjs/airdrop/services/index.js +21 -12
  12. package/dist/cjs/airdrop/services/index.js.map +1 -1
  13. package/dist/cjs/airdrop/types/index.d.ts +20 -0
  14. package/dist/cjs/airdrop/types/index.js.map +1 -1
  15. package/dist/esm/airdrop/SignatureAirdropClient.d.ts +13 -6
  16. package/dist/esm/airdrop/SignatureAirdropClient.js +43 -23
  17. package/dist/esm/airdrop/SignatureAirdropClient.js.map +1 -1
  18. package/dist/esm/airdrop/core/evm/SignatureAirdropService.d.ts +4 -3
  19. package/dist/esm/airdrop/core/evm/SignatureAirdropService.js +4 -1
  20. package/dist/esm/airdrop/core/evm/SignatureAirdropService.js.map +1 -1
  21. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.d.ts +5 -4
  22. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.js +6 -2
  23. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.js.map +1 -1
  24. package/dist/esm/airdrop/services/index.d.ts +19 -12
  25. package/dist/esm/airdrop/services/index.js +19 -11
  26. package/dist/esm/airdrop/services/index.js.map +1 -1
  27. package/dist/esm/airdrop/types/index.d.ts +20 -0
  28. package/dist/esm/airdrop/types/index.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/airdrop/SignatureAirdropClient.ts +72 -24
  31. package/src/airdrop/core/evm/SignatureAirdropService.ts +7 -3
  32. package/src/airdrop/core/evm/contracts/AirdropSignatureClient.ts +10 -5
  33. package/src/airdrop/services/index.ts +54 -28
  34. package/src/airdrop/types/index.ts +23 -1
@@ -17,10 +17,10 @@ export class AirdropSignatureClient extends ContractBaseClient {
17
17
  async claim(
18
18
  data: {
19
19
  recipient: string;
20
- group: string;
21
20
  data: string;
21
+ claimId: string;
22
22
  signature: string;
23
- extraData: string;
23
+ extraData?: string;
24
24
  }[],
25
25
  value?: bigint
26
26
  ) {
@@ -40,12 +40,17 @@ export class AirdropSignatureClient extends ContractBaseClient {
40
40
  }
41
41
 
42
42
  async batchFetchClaimed(userClaimIds: string[]) {
43
- const res: any = await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] });
43
+ const res = (await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] })) as boolean[];
44
44
  return res;
45
45
  }
46
46
 
47
47
  async getDeployer() {
48
- const res: any = await this.readContract({ functionName: 'getStorage' });
49
- return res?.[3];
48
+ const res = (await this.readContract({ functionName: 'getStorage' })) as any[];
49
+ return res?.[3] as string;
50
+ }
51
+
52
+ async getVersion() {
53
+ const res = (await this.readContract({ functionName: 'getStorage' })) as any[];
54
+ return res?.[0];
50
55
  }
51
56
  }
@@ -1,6 +1,6 @@
1
1
  import { apiClient } from '../../utils/api-client';
2
2
  import { safeParseJSON } from '../../utils/utils';
3
- import { IAirdropData, IContractConfig, IProject } from '../types';
3
+ import { AirdropSigIdentityTypeEnum, IAirdropData, IAirdropSignatureData, IContractConfig, IProject } from '../types';
4
4
 
5
5
  export { TonWalletService } from './wallet-service/ton';
6
6
 
@@ -11,7 +11,7 @@ const createApiClient = (baseURL?: string) => {
11
11
  export const getAirdropProject = async (projectId: string, baseURL?: string): Promise<IProject> => {
12
12
  const client = createApiClient(baseURL);
13
13
  const res = await client.get<any>(`/airdrop-open/projects/${projectId}`);
14
- if (!res) return res; // res为null
14
+ if (!res) return res; // res is null
15
15
  const projectConfig = res?.themeConf;
16
16
  const blockCountries = safeParseJSON(projectConfig?.blockCountries);
17
17
  return {
@@ -70,42 +70,68 @@ export const getJettonInfo = async (
70
70
  return client.get(`/airdrop-open/jetton/${data.address}?isTestnet=${data.isTestnet}`);
71
71
  };
72
72
 
73
- export const connectTwitter = async (
74
- data: { code: string; projectId: string },
75
- baseURL?: string
76
- ): Promise<{ sid: string }> => {
73
+ interface SidResponse {
74
+ sid: string;
75
+ }
76
+
77
+ interface TwitterConnectParams {
78
+ code: string;
79
+ projectId: string;
80
+ }
81
+
82
+ interface WalletBindParams {
83
+ projectId: string;
84
+ key: string;
85
+ signature: string;
86
+ message: string;
87
+ timestamp: number;
88
+ recipientType: string;
89
+ }
90
+
91
+ const getSidHeader = (projectId: string) => ({
92
+ sid: window.localStorage.getItem(`sid_${projectId}`) || ''
93
+ });
94
+
95
+ export const connectTwitter = async (data: TwitterConnectParams, baseURL?: string): Promise<SidResponse> => {
77
96
  const client = createApiClient(baseURL);
78
97
  return client.post('/airdrop-open/connect-twitter', data, {
79
- headers: {
80
- sid: window.localStorage.getItem('sid_' + data.projectId) || ''
81
- }
98
+ headers: getSidHeader(data.projectId)
82
99
  });
83
100
  };
84
- //{{ttApi}}/airdrop-open/check-eligibility
85
- export const checkEligibility = async (data: { projectId: string }, baseURL?: string): Promise<any> => {
101
+
102
+ export const checkEligibility = async (
103
+ data: { projectId: string },
104
+ baseURL?: string
105
+ ): Promise<IAirdropSignatureData> => {
106
+ const headers = getSidHeader(data.projectId);
107
+ if (!headers.sid)
108
+ return {
109
+ claims: [],
110
+ identities: []
111
+ };
86
112
  const client = createApiClient(baseURL);
113
+
87
114
  return client.post('/airdrop-open/check-eligibility', data, {
88
- headers: {
89
- sid: window.localStorage.getItem('sid_' + data.projectId) || ''
90
- }
115
+ headers: headers
91
116
  });
92
117
  };
93
118
 
94
- export const bindWallet = async (
95
- data: {
96
- projectId: string;
97
- key: string;
98
- signature: string;
99
- message: string;
100
- timestamp: number;
101
- recipientType: string;
102
- },
103
- baseURL?: string
104
- ): Promise<{ sid: string }> => {
119
+ export const bindWallet = async (data: WalletBindParams, baseURL?: string): Promise<SidResponse> => {
105
120
  const client = createApiClient(baseURL);
106
121
  return client.post('/airdrop-open/connect-wallet', data, {
107
- headers: {
108
- sid: window.localStorage.getItem('sid_' + data.projectId) || ''
109
- }
122
+ headers: getSidHeader(data.projectId)
123
+ });
124
+ };
125
+
126
+ interface DisconnectParams {
127
+ projectId: string;
128
+ recipientType: AirdropSigIdentityTypeEnum;
129
+ recipient?: string;
130
+ }
131
+
132
+ export const disconnectRecipient = async (data: DisconnectParams, baseURL?: string): Promise<void> => {
133
+ const client = createApiClient(baseURL);
134
+ return client.post('/airdrop-open/disconnect', data, {
135
+ headers: getSidHeader(data.projectId)
110
136
  });
111
137
  };
@@ -1,7 +1,6 @@
1
1
  import { TonConnectUI } from '@tonconnect/ui-react';
2
2
  import { AirdropService as TonAirdropService } from '../core/ton/AirdropService';
3
3
  import { AirdropService as EvmAirdropService } from '../core/evm/AirdropService';
4
- import { TonClient } from '@ton/ton';
5
4
  import { ChainConfig } from '../constants';
6
5
  import { WalletClient as ViemWalletClient } from 'viem';
7
6
 
@@ -114,10 +113,33 @@ export type IAirdropClaim = {
114
113
  project: IProject;
115
114
  };
116
115
 
116
+ export type IAirdropSignatureClaim = {
117
+ percent: number;
118
+ unlockingAt: number;
119
+ claimDeadline: number;
120
+ value: string;
121
+ recipient: string;
122
+ recipientType: string;
123
+ claimId: string;
124
+ data: string;
125
+ signature: string;
126
+ claimed?: boolean;
127
+ };
128
+
129
+ export interface IAirdropSignatureIdentity {
130
+ type: AirdropSigIdentityTypeEnum;
131
+ value: string;
132
+ }
133
+
117
134
  export interface IAirdropData {
118
135
  claims: IAirdropClaim[];
119
136
  }
120
137
 
138
+ export interface IAirdropSignatureData {
139
+ claims: IAirdropSignatureClaim[];
140
+ identities: IAirdropSignatureIdentity[];
141
+ }
142
+
121
143
  export enum TonAirdropVersionEnum {
122
144
  V1 = '1.0.0',
123
145
  V2 = '2.0.0',