@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.
- package/dist/cjs/airdrop/SignatureAirdropClient.d.ts +1 -1
- package/dist/cjs/airdrop/SignatureAirdropClient.js +3 -2
- package/dist/cjs/airdrop/SignatureAirdropClient.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.d.ts +8 -3
- package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js +32 -13
- package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.d.ts +2 -2
- package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js +11 -7
- package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.d.ts +2 -2
- package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.js +1 -1
- package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.d.ts +2 -1
- package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js +10 -4
- package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
- package/dist/cjs/airdrop/contracts/solana/fee_collector.d.ts +78 -11
- package/dist/cjs/airdrop/contracts/solana/fee_collector.json +78 -11
- package/dist/cjs/airdrop/contracts/solana/fungible_token_distributor_solana.d.ts +56 -1
- package/dist/cjs/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
- package/dist/cjs/utils/web3.d.ts +15 -1
- package/dist/cjs/utils/web3.js +43 -0
- package/dist/cjs/utils/web3.js.map +1 -1
- package/dist/cjs/wallets/providers/evm/EvmWallet.js +27 -17
- package/dist/cjs/wallets/providers/evm/EvmWallet.js.map +1 -1
- package/dist/esm/airdrop/SignatureAirdropClient.d.ts +1 -1
- package/dist/esm/airdrop/SignatureAirdropClient.js +3 -2
- package/dist/esm/airdrop/SignatureAirdropClient.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.d.ts +8 -3
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js +33 -14
- package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.d.ts +2 -2
- package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js +11 -7
- package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.d.ts +2 -2
- package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.js +1 -1
- package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/SolanaContractClient.d.ts +2 -1
- package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js +10 -4
- package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
- package/dist/esm/airdrop/contracts/solana/fee_collector.d.ts +78 -11
- package/dist/esm/airdrop/contracts/solana/fee_collector.json +78 -11
- package/dist/esm/airdrop/contracts/solana/fungible_token_distributor_solana.d.ts +56 -1
- package/dist/esm/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
- package/dist/esm/utils/web3.d.ts +15 -1
- package/dist/esm/utils/web3.js +43 -2
- package/dist/esm/utils/web3.js.map +1 -1
- package/dist/esm/wallets/providers/evm/EvmWallet.js +27 -17
- package/dist/esm/wallets/providers/evm/EvmWallet.js.map +1 -1
- package/package.json +1 -1
- package/src/airdrop/SignatureAirdropClient.ts +3 -2
- package/src/airdrop/contracts/solana/AirdropSignatureClient.ts +38 -15
- package/src/airdrop/contracts/solana/FeeCollectorClient.ts +10 -7
- package/src/airdrop/contracts/solana/SignatureAirdropService.ts +2 -2
- package/src/airdrop/contracts/solana/SolanaContractClient.ts +19 -11
- package/src/airdrop/contracts/solana/fee_collector.json +78 -11
- package/src/airdrop/contracts/solana/fee_collector.ts +78 -11
- package/src/airdrop/contracts/solana/fungible_token_distributor_solana.json +56 -1
- package/src/airdrop/contracts/solana/fungible_token_distributor_solana.ts +56 -1
- package/src/utils/web3.ts +62 -2
- package/src/wallets/providers/evm/EvmWallet.ts +27 -19
|
@@ -210,7 +210,12 @@
|
|
|
210
210
|
"address": "4dfP4CMvznzUuuYLhybXy71zasrhtjrFkChSFjtqS3on"
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
|
-
"name": "
|
|
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": "
|
|
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 {
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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!);
|