@sign-global/tokentable 0.4.1-beta.5 → 0.4.1-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 (60) hide show
  1. package/dist/cjs/airdrop/SignatureAirdropClient.d.ts +1 -1
  2. package/dist/cjs/airdrop/SignatureAirdropClient.js +3 -2
  3. package/dist/cjs/airdrop/SignatureAirdropClient.js.map +1 -1
  4. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.d.ts +8 -3
  5. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js +32 -13
  6. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
  7. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.d.ts +2 -2
  8. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js +11 -7
  9. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
  10. package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.d.ts +2 -2
  11. package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.js +1 -1
  12. package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
  13. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.d.ts +2 -1
  14. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js +10 -4
  15. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
  16. package/dist/cjs/airdrop/contracts/solana/fee_collector.d.ts +78 -11
  17. package/dist/cjs/airdrop/contracts/solana/fee_collector.json +78 -11
  18. package/dist/cjs/airdrop/contracts/solana/fungible_token_distributor_solana.d.ts +56 -1
  19. package/dist/cjs/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
  20. package/dist/cjs/utils/web3.d.ts +15 -1
  21. package/dist/cjs/utils/web3.js +43 -0
  22. package/dist/cjs/utils/web3.js.map +1 -1
  23. package/dist/cjs/wallets/providers/evm/EvmWallet.js +27 -17
  24. package/dist/cjs/wallets/providers/evm/EvmWallet.js.map +1 -1
  25. package/dist/esm/airdrop/SignatureAirdropClient.d.ts +1 -1
  26. package/dist/esm/airdrop/SignatureAirdropClient.js +3 -2
  27. package/dist/esm/airdrop/SignatureAirdropClient.js.map +1 -1
  28. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.d.ts +8 -3
  29. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js +33 -14
  30. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
  31. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.d.ts +2 -2
  32. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js +11 -7
  33. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
  34. package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.d.ts +2 -2
  35. package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.js +1 -1
  36. package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
  37. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.d.ts +2 -1
  38. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js +10 -4
  39. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
  40. package/dist/esm/airdrop/contracts/solana/fee_collector.d.ts +78 -11
  41. package/dist/esm/airdrop/contracts/solana/fee_collector.json +78 -11
  42. package/dist/esm/airdrop/contracts/solana/fungible_token_distributor_solana.d.ts +56 -1
  43. package/dist/esm/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
  44. package/dist/esm/utils/web3.d.ts +15 -1
  45. package/dist/esm/utils/web3.js +43 -2
  46. package/dist/esm/utils/web3.js.map +1 -1
  47. package/dist/esm/wallets/providers/evm/EvmWallet.js +27 -17
  48. package/dist/esm/wallets/providers/evm/EvmWallet.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/airdrop/SignatureAirdropClient.ts +3 -2
  51. package/src/airdrop/contracts/solana/AirdropSignatureClient.ts +38 -15
  52. package/src/airdrop/contracts/solana/FeeCollectorClient.ts +10 -7
  53. package/src/airdrop/contracts/solana/SignatureAirdropService.ts +2 -2
  54. package/src/airdrop/contracts/solana/SolanaContractClient.ts +19 -11
  55. package/src/airdrop/contracts/solana/fee_collector.json +78 -11
  56. package/src/airdrop/contracts/solana/fee_collector.ts +78 -11
  57. package/src/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
  58. package/src/airdrop/contracts/solana/fungible_token_distributor_solana.ts +56 -1
  59. package/src/utils/web3.ts +62 -2
  60. package/src/wallets/providers/evm/EvmWallet.ts +27 -19
@@ -210,7 +210,12 @@
210
210
  "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
211
211
  },
212
212
  {
213
- "name": "user_fee",
213
+ "name": "fee_token_mint",
214
+ "writable": true,
215
+ "optional": true
216
+ },
217
+ {
218
+ "name": "fee",
214
219
  "writable": true
215
220
  },
216
221
  {
@@ -489,6 +494,20 @@
489
494
  ]
490
495
  }
491
496
  },
497
+ {
498
+ "name": "fee_collector",
499
+ "optional": true,
500
+ "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
501
+ },
502
+ {
503
+ "name": "fee_collector_storage",
504
+ "optional": true
505
+ },
506
+ {
507
+ "name": "fee",
508
+ "writable": true,
509
+ "optional": true
510
+ },
492
511
  {
493
512
  "name": "authority",
494
513
  "writable": true,
@@ -504,6 +523,10 @@
504
523
  "name": "project_id",
505
524
  "type": "string"
506
525
  },
526
+ {
527
+ "name": "project_token",
528
+ "type": "pubkey"
529
+ },
507
530
  {
508
531
  "name": "owner",
509
532
  "type": "pubkey"
@@ -511,6 +534,10 @@
511
534
  {
512
535
  "name": "fee_collector",
513
536
  "type": "pubkey"
537
+ },
538
+ {
539
+ "name": "init_fee_account",
540
+ "type": "bool"
514
541
  }
515
542
  ]
516
543
  },
@@ -644,6 +671,20 @@
644
671
  ]
645
672
  }
646
673
  },
674
+ {
675
+ "name": "fee_collector",
676
+ "optional": true,
677
+ "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
678
+ },
679
+ {
680
+ "name": "fee_collector_storage",
681
+ "optional": true
682
+ },
683
+ {
684
+ "name": "fee",
685
+ "writable": true,
686
+ "optional": true
687
+ },
647
688
  {
648
689
  "name": "system_program",
649
690
  "address": "11111111111111111111111111111111"
@@ -657,6 +698,10 @@
657
698
  {
658
699
  "name": "fee_collector",
659
700
  "type": "pubkey"
701
+ },
702
+ {
703
+ "name": "init_fee_account",
704
+ "type": "bool"
660
705
  }
661
706
  ]
662
707
  },
@@ -832,6 +877,11 @@
832
877
  "writable": true,
833
878
  "signer": true
834
879
  },
880
+ {
881
+ "name": "new_owner",
882
+ "writable": true,
883
+ "signer": true
884
+ },
835
885
  {
836
886
  "name": "system_program",
837
887
  "address": "11111111111111111111111111111111"
@@ -885,6 +935,11 @@
885
935
  "writable": true,
886
936
  "signer": true
887
937
  },
938
+ {
939
+ "name": "new_admin",
940
+ "writable": true,
941
+ "signer": true
942
+ },
888
943
  {
889
944
  "name": "system_program",
890
945
  "address": "11111111111111111111111111111111"
@@ -216,7 +216,12 @@ export type FungibleTokenDistributorSolana = {
216
216
  "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
217
217
  },
218
218
  {
219
- "name": "userFee",
219
+ "name": "feeTokenMint",
220
+ "writable": true,
221
+ "optional": true
222
+ },
223
+ {
224
+ "name": "fee",
220
225
  "writable": true
221
226
  },
222
227
  {
@@ -495,6 +500,20 @@ export type FungibleTokenDistributorSolana = {
495
500
  ]
496
501
  }
497
502
  },
503
+ {
504
+ "name": "feeCollector",
505
+ "optional": true,
506
+ "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
507
+ },
508
+ {
509
+ "name": "feeCollectorStorage",
510
+ "optional": true
511
+ },
512
+ {
513
+ "name": "fee",
514
+ "writable": true,
515
+ "optional": true
516
+ },
498
517
  {
499
518
  "name": "authority",
500
519
  "writable": true,
@@ -510,6 +529,10 @@ export type FungibleTokenDistributorSolana = {
510
529
  "name": "projectId",
511
530
  "type": "string"
512
531
  },
532
+ {
533
+ "name": "projectToken",
534
+ "type": "pubkey"
535
+ },
513
536
  {
514
537
  "name": "owner",
515
538
  "type": "pubkey"
@@ -517,6 +540,10 @@ export type FungibleTokenDistributorSolana = {
517
540
  {
518
541
  "name": "feeCollector",
519
542
  "type": "pubkey"
543
+ },
544
+ {
545
+ "name": "initFeeAccount",
546
+ "type": "bool"
520
547
  }
521
548
  ]
522
549
  },
@@ -650,6 +677,20 @@ export type FungibleTokenDistributorSolana = {
650
677
  ]
651
678
  }
652
679
  },
680
+ {
681
+ "name": "feeCollector",
682
+ "optional": true,
683
+ "address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
684
+ },
685
+ {
686
+ "name": "feeCollectorStorage",
687
+ "optional": true
688
+ },
689
+ {
690
+ "name": "fee",
691
+ "writable": true,
692
+ "optional": true
693
+ },
653
694
  {
654
695
  "name": "systemProgram",
655
696
  "address": "11111111111111111111111111111111"
@@ -663,6 +704,10 @@ export type FungibleTokenDistributorSolana = {
663
704
  {
664
705
  "name": "feeCollector",
665
706
  "type": "pubkey"
707
+ },
708
+ {
709
+ "name": "initFeeAccount",
710
+ "type": "bool"
666
711
  }
667
712
  ]
668
713
  },
@@ -838,6 +883,11 @@ export type FungibleTokenDistributorSolana = {
838
883
  "writable": true,
839
884
  "signer": true
840
885
  },
886
+ {
887
+ "name": "newOwner",
888
+ "writable": true,
889
+ "signer": true
890
+ },
841
891
  {
842
892
  "name": "systemProgram",
843
893
  "address": "11111111111111111111111111111111"
@@ -891,6 +941,11 @@ export type FungibleTokenDistributorSolana = {
891
941
  "writable": true,
892
942
  "signer": true
893
943
  },
944
+ {
945
+ "name": "newAdmin",
946
+ "writable": true,
947
+ "signer": true
948
+ },
894
949
  {
895
950
  "name": "systemProgram",
896
951
  "address": "11111111111111111111111111111111"
package/src/utils/web3.ts CHANGED
@@ -8,9 +8,18 @@ import {
8
8
  TokenInvalidAccountOwnerError,
9
9
  TokenInvalidMintError,
10
10
  TokenInvalidOwnerError,
11
- TOKEN_PROGRAM_ID
11
+ TOKEN_PROGRAM_ID,
12
+ TOKEN_2022_PROGRAM_ID
12
13
  } from '@solana/spl-token';
13
- import { Commitment, Connection, PublicKey, Transaction } from '@solana/web3.js';
14
+ import {
15
+ Cluster,
16
+ clusterApiUrl,
17
+ Commitment,
18
+ Connection,
19
+ ParsedAccountData,
20
+ PublicKey,
21
+ Transaction
22
+ } from '@solana/web3.js';
14
23
 
15
24
  export function flipAddressType(address: string) {
16
25
  if (!address) return '';
@@ -110,3 +119,54 @@ export async function getOrCreateAssociatedTokenAccount({
110
119
  if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();
111
120
  return account;
112
121
  }
122
+
123
+ export enum SplTokenVersion {
124
+ SplToken = 'spl-token',
125
+ SplToken2022 = 'spl-token-2022'
126
+ }
127
+
128
+ export type FetchTokenVersionOptions = {
129
+ clusterOrEndpoint?: Cluster | string;
130
+ };
131
+
132
+ export type FetchTokenMetadataOptions = FetchTokenVersionOptions & {
133
+ fetchOffchainMetadata?: boolean;
134
+ };
135
+
136
+ async function _getTokenProgramAndParsedAccountData(conn: Connection, tokenAddress: string) {
137
+ const tokenMintAddress = new PublicKey(tokenAddress);
138
+ const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);
139
+ const parsedMintAccountData = parsedMintAccountInfo.value?.data as ParsedAccountData;
140
+ if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {
141
+ return {
142
+ name: SplTokenVersion.SplToken,
143
+ programId: TOKEN_PROGRAM_ID,
144
+ parsedMintAccountData
145
+ };
146
+ } else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {
147
+ return {
148
+ name: SplTokenVersion.SplToken2022,
149
+ programId: TOKEN_2022_PROGRAM_ID,
150
+ parsedMintAccountData
151
+ };
152
+ }
153
+ return null;
154
+ }
155
+
156
+ function _getConnection(clusterOrEndpoint: Cluster | string) {
157
+ let endpoint: string;
158
+ try {
159
+ endpoint = clusterApiUrl((clusterOrEndpoint as Cluster) ?? 'mainnet-beta');
160
+ } catch {
161
+ endpoint = clusterOrEndpoint as string;
162
+ }
163
+
164
+ const conn = new Connection(endpoint);
165
+ return conn;
166
+ }
167
+
168
+ export async function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions) {
169
+ const conn = _getConnection(options.clusterOrEndpoint!);
170
+ const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);
171
+ return data ? { name: data.name, programId: data.programId } : null;
172
+ }
@@ -44,29 +44,37 @@ export class EvmWallet extends WalletBase<EVMStoreType> {
44
44
  }
45
45
 
46
46
  async sign(_message: string) {
47
- const sign = await signMessage(evmStore.config!, {
48
- message: _message
49
- });
50
- return {
51
- message: _message,
52
- signature: sign
53
- };
47
+ try {
48
+ const sign = await signMessage(evmStore.config!, {
49
+ message: _message
50
+ });
51
+ return {
52
+ message: _message,
53
+ signature: sign
54
+ };
55
+ } catch (error) {
56
+ throw error;
57
+ }
54
58
  }
55
59
 
56
60
  override async signin(statement: string, prepare = true): Promise<ISignResult> {
57
- return new Promise((resolve) => {
58
- const signCallback = (data: ReturnType<typeof useAccount>) => {
59
- this.address = data.address;
60
- this.chainId = data.chainId;
61
- let fullMessage = statement;
62
- if (prepare) {
63
- const msg = prepareSignMessage({ statement, chainId: data.chainId!, address: data.address! });
64
- fullMessage = get4361Message(msg);
61
+ return new Promise((resolve, reject) => {
62
+ const signCallback = async (data: ReturnType<typeof useAccount>) => {
63
+ try {
64
+ this.address = data.address;
65
+ this.chainId = data.chainId;
66
+ let fullMessage = statement;
67
+ if (prepare) {
68
+ const msg = prepareSignMessage({ statement, chainId: data.chainId!, address: data.address! });
69
+ fullMessage = get4361Message(msg);
70
+ }
71
+
72
+ const res = await this.sign(fullMessage);
73
+
74
+ resolve(res);
75
+ } catch (error) {
76
+ reject(error);
65
77
  }
66
-
67
- const res = this.sign(fullMessage);
68
-
69
- resolve(res);
70
78
  };
71
79
 
72
80
  const account = getAccount(evmStore.config!);