@sign-global/tokentable 0.4.3-beta.0 → 0.4.3-beta.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.
Files changed (227) hide show
  1. package/dist/cjs/airdrop/AirdropClient.d.ts +1 -1
  2. package/dist/cjs/airdrop/AirdropClient.js +4 -3
  3. package/dist/cjs/airdrop/AirdropClient.js.map +1 -1
  4. package/dist/cjs/airdrop/SignatureAirdropClient.d.ts +10 -1
  5. package/dist/cjs/airdrop/SignatureAirdropClient.js +48 -11
  6. package/dist/cjs/airdrop/SignatureAirdropClient.js.map +1 -1
  7. package/dist/cjs/airdrop/common/index.d.ts +1 -1
  8. package/dist/cjs/airdrop/constants/chain-config.d.ts +1 -1
  9. package/dist/cjs/airdrop/constants/chain-config.js +1 -1
  10. package/dist/cjs/airdrop/constants/chain-config.js.map +1 -1
  11. package/dist/cjs/airdrop/constants/index.d.ts +1 -0
  12. package/dist/cjs/airdrop/constants/index.js +1 -0
  13. package/dist/cjs/airdrop/constants/index.js.map +1 -1
  14. package/dist/cjs/airdrop/contracts/evm/contracts/AirdropSignatureClient.js +0 -1
  15. package/dist/cjs/airdrop/contracts/evm/contracts/AirdropSignatureClient.js.map +1 -1
  16. package/dist/cjs/airdrop/contracts/index.d.ts +1 -0
  17. package/dist/cjs/airdrop/contracts/index.js +3 -1
  18. package/dist/cjs/airdrop/contracts/index.js.map +1 -1
  19. package/dist/cjs/airdrop/contracts/solana/AirdropService.d.ts +16 -0
  20. package/dist/cjs/airdrop/contracts/solana/AirdropService.js +38 -0
  21. package/dist/cjs/airdrop/contracts/solana/AirdropService.js.map +1 -0
  22. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.d.ts +3 -2
  23. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js +12 -11
  24. package/dist/cjs/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
  25. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.d.ts +3 -2
  26. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js +7 -3
  27. package/dist/cjs/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
  28. package/dist/cjs/airdrop/contracts/solana/MerkleDistributorClient.d.ts +49 -0
  29. package/dist/cjs/airdrop/contracts/solana/MerkleDistributorClient.js +242 -0
  30. package/dist/cjs/airdrop/contracts/solana/MerkleDistributorClient.js.map +1 -0
  31. package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.d.ts +1 -0
  32. package/dist/cjs/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
  33. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.d.ts +1 -0
  34. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js +3 -0
  35. package/dist/cjs/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
  36. package/dist/cjs/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.d.ts +1668 -0
  37. package/dist/cjs/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.js +3 -0
  38. package/dist/cjs/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.js.map +1 -0
  39. package/dist/cjs/airdrop/contracts/solana/{fungible_token_distributor_solana.json → eddsa_token_with_fees_distributor_solana.json} +127 -38
  40. package/dist/cjs/airdrop/contracts/solana/fee_collector.d.ts +198 -1
  41. package/dist/cjs/airdrop/contracts/solana/fee_collector.json +200 -3
  42. package/dist/cjs/airdrop/contracts/solana/merkle_token_distributor_solana.d.ts +1695 -0
  43. package/dist/cjs/airdrop/contracts/solana/merkle_token_distributor_solana.js +3 -0
  44. package/dist/cjs/airdrop/contracts/solana/merkle_token_distributor_solana.js.map +1 -0
  45. package/dist/cjs/airdrop/contracts/solana/merkle_token_distributor_solana.json +1689 -0
  46. package/dist/cjs/airdrop/services/index.d.ts +3 -2
  47. package/dist/cjs/airdrop/services/index.js +8 -1
  48. package/dist/cjs/airdrop/services/index.js.map +1 -1
  49. package/dist/cjs/airdrop/strategies/AirdropStrategyFactory.d.ts +1 -0
  50. package/dist/cjs/airdrop/strategies/AirdropStrategyFactory.js +2 -1
  51. package/dist/cjs/airdrop/strategies/AirdropStrategyFactory.js.map +1 -1
  52. package/dist/cjs/airdrop/strategies/IAirdropStrategy.d.ts +1 -0
  53. package/dist/cjs/airdrop/strategies/SolanaAirdropStrategy.d.ts +25 -0
  54. package/dist/cjs/airdrop/strategies/SolanaAirdropStrategy.js +62 -0
  55. package/dist/cjs/airdrop/strategies/SolanaAirdropStrategy.js.map +1 -0
  56. package/dist/cjs/airdrop/types/index.d.ts +8 -1
  57. package/dist/cjs/airdrop/types/index.js +1 -0
  58. package/dist/cjs/airdrop/types/index.js.map +1 -1
  59. package/dist/esm/airdrop/AirdropClient.d.ts +1 -1
  60. package/dist/esm/airdrop/AirdropClient.js +4 -3
  61. package/dist/esm/airdrop/AirdropClient.js.map +1 -1
  62. package/dist/esm/airdrop/SignatureAirdropClient.d.ts +10 -1
  63. package/dist/esm/airdrop/SignatureAirdropClient.js +49 -12
  64. package/dist/esm/airdrop/SignatureAirdropClient.js.map +1 -1
  65. package/dist/esm/airdrop/common/index.d.ts +1 -1
  66. package/dist/esm/airdrop/constants/chain-config.d.ts +1 -1
  67. package/dist/esm/airdrop/constants/chain-config.js +1 -1
  68. package/dist/esm/airdrop/constants/chain-config.js.map +1 -1
  69. package/dist/esm/airdrop/constants/index.d.ts +1 -0
  70. package/dist/esm/airdrop/constants/index.js +1 -0
  71. package/dist/esm/airdrop/constants/index.js.map +1 -1
  72. package/dist/esm/airdrop/contracts/evm/contracts/AirdropSignatureClient.js +0 -1
  73. package/dist/esm/airdrop/contracts/evm/contracts/AirdropSignatureClient.js.map +1 -1
  74. package/dist/esm/airdrop/contracts/index.d.ts +1 -0
  75. package/dist/esm/airdrop/contracts/index.js +1 -0
  76. package/dist/esm/airdrop/contracts/index.js.map +1 -1
  77. package/dist/esm/airdrop/contracts/solana/AirdropService.d.ts +16 -0
  78. package/dist/esm/airdrop/contracts/solana/AirdropService.js +34 -0
  79. package/dist/esm/airdrop/contracts/solana/AirdropService.js.map +1 -0
  80. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.d.ts +3 -2
  81. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js +11 -10
  82. package/dist/esm/airdrop/contracts/solana/AirdropSignatureClient.js.map +1 -1
  83. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.d.ts +3 -2
  84. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js +7 -3
  85. package/dist/esm/airdrop/contracts/solana/FeeCollectorClient.js.map +1 -1
  86. package/dist/esm/airdrop/contracts/solana/MerkleDistributorClient.d.ts +49 -0
  87. package/dist/esm/airdrop/contracts/solana/MerkleDistributorClient.js +212 -0
  88. package/dist/esm/airdrop/contracts/solana/MerkleDistributorClient.js.map +1 -0
  89. package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.d.ts +1 -0
  90. package/dist/esm/airdrop/contracts/solana/SignatureAirdropService.js.map +1 -1
  91. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.d.ts +1 -0
  92. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js +3 -0
  93. package/dist/esm/airdrop/contracts/solana/SolanaContractClient.js.map +1 -1
  94. package/dist/esm/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.d.ts +1668 -0
  95. package/dist/esm/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.js +2 -0
  96. package/dist/esm/airdrop/contracts/solana/eddsa_token_with_fees_distributor_solana.js.map +1 -0
  97. package/dist/esm/airdrop/contracts/solana/{fungible_token_distributor_solana.json → eddsa_token_with_fees_distributor_solana.json} +127 -38
  98. package/dist/esm/airdrop/contracts/solana/fee_collector.d.ts +198 -1
  99. package/dist/esm/airdrop/contracts/solana/fee_collector.json +200 -3
  100. package/dist/esm/airdrop/contracts/solana/merkle_token_distributor_solana.d.ts +1695 -0
  101. package/dist/esm/airdrop/contracts/solana/merkle_token_distributor_solana.js +2 -0
  102. package/dist/esm/airdrop/contracts/solana/merkle_token_distributor_solana.js.map +1 -0
  103. package/dist/esm/airdrop/contracts/solana/merkle_token_distributor_solana.json +1689 -0
  104. package/dist/esm/airdrop/services/index.d.ts +3 -2
  105. package/dist/esm/airdrop/services/index.js +6 -0
  106. package/dist/esm/airdrop/services/index.js.map +1 -1
  107. package/dist/esm/airdrop/strategies/AirdropStrategyFactory.d.ts +1 -0
  108. package/dist/esm/airdrop/strategies/AirdropStrategyFactory.js +2 -1
  109. package/dist/esm/airdrop/strategies/AirdropStrategyFactory.js.map +1 -1
  110. package/dist/esm/airdrop/strategies/IAirdropStrategy.d.ts +1 -0
  111. package/dist/esm/airdrop/strategies/SolanaAirdropStrategy.d.ts +25 -0
  112. package/dist/esm/airdrop/strategies/SolanaAirdropStrategy.js +58 -0
  113. package/dist/esm/airdrop/strategies/SolanaAirdropStrategy.js.map +1 -0
  114. package/dist/esm/airdrop/types/index.d.ts +8 -1
  115. package/dist/esm/airdrop/types/index.js +1 -0
  116. package/dist/esm/airdrop/types/index.js.map +1 -1
  117. package/package.json +2 -9
  118. package/src/airdrop/AirdropClient.ts +0 -307
  119. package/src/airdrop/SignatureAirdropClient.ts +0 -337
  120. package/src/airdrop/common/index.ts +0 -54
  121. package/src/airdrop/common/projectDataForTon.ts +0 -79
  122. package/src/airdrop/constants/chain-config.ts +0 -107
  123. package/src/airdrop/constants/index.ts +0 -8
  124. package/src/airdrop/constants/network.ts +0 -78
  125. package/src/airdrop/contracts/evm/AirdropService.ts +0 -181
  126. package/src/airdrop/contracts/evm/SignatureAirdropService.ts +0 -114
  127. package/src/airdrop/contracts/evm/contracts/AirdropSignatureClient.ts +0 -63
  128. package/src/airdrop/contracts/evm/contracts/AirdropSignatureFeeClient.ts +0 -61
  129. package/src/airdrop/contracts/evm/contracts/AirdropV2Client.ts +0 -37
  130. package/src/airdrop/contracts/evm/contracts/AirdropV3Client.ts +0 -49
  131. package/src/airdrop/contracts/evm/contracts/AirdropV3FeeClient.ts +0 -16
  132. package/src/airdrop/contracts/evm/contracts/AirdropV4Client.ts +0 -36
  133. package/src/airdrop/contracts/evm/contracts/ContractBaseClient.ts +0 -85
  134. package/src/airdrop/contracts/evm/contracts/DeployClient.ts +0 -35
  135. package/src/airdrop/contracts/evm/contracts/FeeCollectorClient.ts +0 -21
  136. package/src/airdrop/contracts/evm/contracts/KycClient.ts +0 -21
  137. package/src/airdrop/contracts/evm/contracts/abis/Airdrop.json +0 -674
  138. package/src/airdrop/contracts/evm/contracts/abis/AirdropV2.json +0 -676
  139. package/src/airdrop/contracts/evm/contracts/abis/AirdropV3.json +0 -740
  140. package/src/airdrop/contracts/evm/contracts/abis/AirdropV3_Fee.json +0 -678
  141. package/src/airdrop/contracts/evm/contracts/abis/CustomFeeNativeAirdropV4.json +0 -701
  142. package/src/airdrop/contracts/evm/contracts/abis/Deployer.json +0 -271
  143. package/src/airdrop/contracts/evm/contracts/abis/ERC721.json +0 -737
  144. package/src/airdrop/contracts/evm/contracts/abis/FeeCollector.json +0 -322
  145. package/src/airdrop/contracts/evm/contracts/abis/FungibleTokenECDSADistributor.json +0 -564
  146. package/src/airdrop/contracts/evm/contracts/abis/FungibleTokenWithFeesECDSADistributor.json +0 -260
  147. package/src/airdrop/contracts/evm/contracts/abis/KycHook.json +0 -312
  148. package/src/airdrop/contracts/index.ts +0 -4
  149. package/src/airdrop/contracts/solana/AirdropSignatureClient.ts +0 -242
  150. package/src/airdrop/contracts/solana/FeeCollectorClient.ts +0 -43
  151. package/src/airdrop/contracts/solana/SignatureAirdropService.ts +0 -51
  152. package/src/airdrop/contracts/solana/SolanaContractClient.ts +0 -126
  153. package/src/airdrop/contracts/solana/fee_collector.json +0 -1063
  154. package/src/airdrop/contracts/solana/fee_collector.ts +0 -1069
  155. package/src/airdrop/contracts/solana/fungible_token_distributor_solana.json +0 -1573
  156. package/src/airdrop/contracts/solana/fungible_token_distributor_solana.ts +0 -1579
  157. package/src/airdrop/contracts/ton/AirdropClientV1.ts +0 -122
  158. package/src/airdrop/contracts/ton/AirdropClientV2.ts +0 -118
  159. package/src/airdrop/contracts/ton/AirdropClientV21.ts +0 -131
  160. package/src/airdrop/contracts/ton/AirdropClientV3.ts +0 -127
  161. package/src/airdrop/contracts/ton/AirdropService.ts +0 -150
  162. package/src/airdrop/contracts/ton/TonContractBaseClient.ts +0 -236
  163. package/src/airdrop/contracts/ton/v1/build/Leaf.compiled.json +0 -1
  164. package/src/airdrop/contracts/ton/v1/build/MerkleTokenDistributor.compiled.json +0 -1
  165. package/src/airdrop/contracts/ton/v1/utils/constants.ts +0 -42
  166. package/src/airdrop/contracts/ton/v1/utils/date.utils.ts +0 -11
  167. package/src/airdrop/contracts/ton/v1/utils/index.ts +0 -3
  168. package/src/airdrop/contracts/ton/v1/utils/ton.utils.ts +0 -84
  169. package/src/airdrop/contracts/ton/v1/wrappers/JettonMinter.ts +0 -81
  170. package/src/airdrop/contracts/ton/v1/wrappers/JettonWallet.ts +0 -73
  171. package/src/airdrop/contracts/ton/v1/wrappers/Leaf.ts +0 -88
  172. package/src/airdrop/contracts/ton/v1/wrappers/MerkleTokenDistributor.ts +0 -317
  173. package/src/airdrop/contracts/ton/v1/wrappers/index.ts +0 -2
  174. package/src/airdrop/contracts/ton/v2/build/Leaf.compiled.json +0 -1
  175. package/src/airdrop/contracts/ton/v2/build/MerkleTokenDistributor.compiled.json +0 -1
  176. package/src/airdrop/contracts/ton/v2/utils/constants.ts +0 -43
  177. package/src/airdrop/contracts/ton/v2/utils/date.utils.ts +0 -11
  178. package/src/airdrop/contracts/ton/v2/utils/index.ts +0 -3
  179. package/src/airdrop/contracts/ton/v2/utils/ton.utils.ts +0 -102
  180. package/src/airdrop/contracts/ton/v2/wrappers/Leaf.ts +0 -69
  181. package/src/airdrop/contracts/ton/v2/wrappers/MerkleTokenDistributor.ts +0 -340
  182. package/src/airdrop/contracts/ton/v2/wrappers/index.ts +0 -2
  183. package/src/airdrop/contracts/ton/v21/build/Leaf.compiled.json +0 -1
  184. package/src/airdrop/contracts/ton/v21/build/MerkleTokenDistributor.compiled.json +0 -1
  185. package/src/airdrop/contracts/ton/v21/utils/constants.ts +0 -48
  186. package/src/airdrop/contracts/ton/v21/utils/date.utils.ts +0 -11
  187. package/src/airdrop/contracts/ton/v21/utils/index.ts +0 -3
  188. package/src/airdrop/contracts/ton/v21/utils/ton.utils.ts +0 -84
  189. package/src/airdrop/contracts/ton/v21/wrappers/Leaf.ts +0 -69
  190. package/src/airdrop/contracts/ton/v21/wrappers/MerkleTokenDistributor.ts +0 -346
  191. package/src/airdrop/contracts/ton/v21/wrappers/index.ts +0 -2
  192. package/src/airdrop/contracts/ton/v3/build/Leaf.compiled.json +0 -1
  193. package/src/airdrop/contracts/ton/v3/build/MerkleTokenDistributor.compiled.json +0 -1
  194. package/src/airdrop/contracts/ton/v3/utils/constants.ts +0 -43
  195. package/src/airdrop/contracts/ton/v3/utils/date.utils.ts +0 -11
  196. package/src/airdrop/contracts/ton/v3/utils/index.ts +0 -3
  197. package/src/airdrop/contracts/ton/v3/utils/ton.utils.ts +0 -84
  198. package/src/airdrop/contracts/ton/v3/wrappers/Leaf.ts +0 -68
  199. package/src/airdrop/contracts/ton/v3/wrappers/MerkleTokenDistributor.ts +0 -316
  200. package/src/airdrop/contracts/ton/v3/wrappers/index.ts +0 -2
  201. package/src/airdrop/index.ts +0 -10
  202. package/src/airdrop/services/index.ts +0 -159
  203. package/src/airdrop/services/wallet-service/ton/WalletService.ts +0 -226
  204. package/src/airdrop/services/wallet-service/ton/index.ts +0 -1
  205. package/src/airdrop/strategies/AirdropStrategyFactory.ts +0 -31
  206. package/src/airdrop/strategies/EvmAirdropStrategy.ts +0 -81
  207. package/src/airdrop/strategies/IAirdropStrategy.ts +0 -26
  208. package/src/airdrop/strategies/StrategyCache.ts +0 -34
  209. package/src/airdrop/strategies/TonAirdropStrategy.ts +0 -77
  210. package/src/airdrop/tests/index.test.ts +0 -387
  211. package/src/airdrop/types/index.ts +0 -199
  212. package/src/index.ts +0 -3
  213. package/src/utils/api-client.ts +0 -69
  214. package/src/utils/index.ts +0 -3
  215. package/src/utils/utils.ts +0 -45
  216. package/src/utils/web3.ts +0 -172
  217. package/src/wallets/WalletBase.ts +0 -92
  218. package/src/wallets/WalletFactory.tsx +0 -35
  219. package/src/wallets/index.ts +0 -3
  220. package/src/wallets/providers/evm/EvmWallet.ts +0 -101
  221. package/src/wallets/providers/evm/index.tsx +0 -56
  222. package/src/wallets/providers/index.ts +0 -4
  223. package/src/wallets/providers/solana/index.tsx +0 -133
  224. package/src/wallets/providers/ton/TonWallet.ts +0 -153
  225. package/src/wallets/providers/ton/index.tsx +0 -41
  226. package/src/wallets/types.ts +0 -45
  227. package/src/wallets/utils/index.ts +0 -61
@@ -1,101 +0,0 @@
1
- import { useConnectModal } from '@rainbow-me/rainbowkit';
2
- import { ResolvedRegister, useAccount, useWalletClient } from 'wagmi';
3
- import { WalletBase } from '../../WalletBase';
4
- import { disconnect, getAccount, signMessage } from 'wagmi/actions';
5
- import { EventEmitter } from 'events';
6
- import { ISignResult } from '../../types';
7
- import { get4361Message, prepareSignMessage } from '../../utils';
8
-
9
- export const eventBus = new EventEmitter();
10
-
11
- const EVM_EVENT_KEY = 'evm_signin';
12
-
13
- export interface EVMStoreType {
14
- account: ReturnType<typeof useAccount> | null;
15
- connectModal: ReturnType<typeof useConnectModal> | undefined;
16
- walletClient: ReturnType<typeof useWalletClient> | undefined;
17
- config: ResolvedRegister['config'] | undefined;
18
- counter: number;
19
- }
20
-
21
- export const evmStore: EVMStoreType = {
22
- account: null,
23
- connectModal: undefined,
24
- walletClient: undefined,
25
- config: undefined,
26
- counter: 0
27
- };
28
-
29
- export const getEventKey = () => {
30
- return `${EVM_EVENT_KEY}_${evmStore.counter}`;
31
- };
32
-
33
- export class EvmWallet extends WalletBase<EVMStoreType> {
34
- get isConnected() {
35
- return !!(evmStore.account?.address && evmStore.account?.isConnected);
36
- }
37
-
38
- connect() {
39
- evmStore?.connectModal?.openConnectModal?.();
40
- }
41
-
42
- async disconnect() {
43
- await disconnect(evmStore.config!);
44
- }
45
-
46
- async sign(_message: string) {
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
- }
58
- }
59
-
60
- override async signin(statement: string, prepare = true): Promise<ISignResult> {
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);
77
- }
78
- };
79
-
80
- const account = getAccount(evmStore.config!);
81
- this.provider = evmStore.walletClient;
82
-
83
- if (this.isConnected) {
84
- signCallback(account);
85
- return;
86
- }
87
-
88
- evmStore.counter++;
89
- this.connect();
90
- const eventKey = getEventKey();
91
- eventBus.once(eventKey, (data) => {
92
- console.log('listen event key success, event key = %s, data = %j', eventKey, data);
93
- signCallback(data);
94
- });
95
- });
96
- }
97
-
98
- getStore(): EVMStoreType {
99
- return evmStore;
100
- }
101
- }
@@ -1,56 +0,0 @@
1
- import '@rainbow-me/rainbowkit/styles.css';
2
- import { RainbowKitProvider, darkTheme, useConnectModal } from '@rainbow-me/rainbowkit';
3
- import { ResolvedRegister, WagmiProvider, useAccount, useWalletClient } from 'wagmi';
4
- import { ReactNode, useEffect } from 'react';
5
-
6
- import { evmStore, getEventKey, eventBus } from './EvmWallet';
7
-
8
- export { EvmWallet } from './EvmWallet';
9
-
10
- export const EVMConnector = () => {
11
- const connectModal = useConnectModal();
12
- const walletClient = useWalletClient();
13
- const account = useAccount();
14
-
15
- evmStore.connectModal = connectModal;
16
- evmStore.walletClient = walletClient;
17
- evmStore.account = account;
18
-
19
- useEffect(() => {
20
- if (account.isConnected) {
21
- const eventKey = getEventKey();
22
- eventBus.emit(eventKey, account);
23
- }
24
- }, [account]);
25
-
26
- return null;
27
- };
28
-
29
- export const EvmProvider = ({
30
- children,
31
- config,
32
- theme
33
- }: {
34
- children: ReactNode;
35
- config: ResolvedRegister['config'];
36
- theme?: any;
37
- }) => {
38
- evmStore.config = config;
39
- return (
40
- <WagmiProvider config={config}>
41
- <RainbowKitProvider
42
- locale="en-US"
43
- theme={
44
- theme ||
45
- darkTheme({
46
- accentColor: 'var(--t-primary)',
47
- accentColorForeground: 'var(--t-button-primary-foreground)'
48
- })
49
- }
50
- >
51
- {children}
52
- <EVMConnector />
53
- </RainbowKitProvider>
54
- </WagmiProvider>
55
- );
56
- };
@@ -1,4 +0,0 @@
1
- export { EvmWallet, EvmProvider } from './evm';
2
- export { SolWallet, SolanaProvider } from './solana';
3
- // export { StarknetWallet } from './starknet';
4
- export { TonWallet, TonProvider } from './ton';
@@ -1,133 +0,0 @@
1
- import { ReactNode, useCallback, useEffect, useMemo } from 'react';
2
- import { WalletBase } from '../../WalletBase';
3
- import { useWalletModal, WalletModalProvider } from '@solana/wallet-adapter-react-ui';
4
- import '@solana/wallet-adapter-react-ui/styles.css';
5
- import { ISignResult } from '../../types';
6
- import { ConnectionProvider, useWallet, WalletProvider } from '@solana/wallet-adapter-react';
7
- import { PhantomWalletAdapter, TrustWalletAdapter } from '@solana/wallet-adapter-wallets';
8
- import { Cluster, clusterApiUrl } from '@solana/web3.js';
9
- import bs58 from 'bs58';
10
- import { get4361Message, prepareSignMessage } from '../../utils';
11
- import EventEmitter from 'events';
12
-
13
- interface SolStoreType {
14
- connectModal: ReturnType<typeof useWalletModal> | null;
15
- account: ReturnType<typeof useWallet> | null;
16
- counter: number;
17
- }
18
-
19
- const solStore: SolStoreType = {
20
- connectModal: null,
21
- account: null,
22
- counter: 0
23
- };
24
-
25
- export const eventBus = new EventEmitter();
26
-
27
- const SOL_EVENT_KEY = 'sol_signin';
28
-
29
- export const getEventKey = () => {
30
- return `${SOL_EVENT_KEY}_${solStore.counter}`;
31
- };
32
-
33
- export class SolWallet extends WalletBase<SolStoreType> {
34
- getStore(): SolStoreType {
35
- return solStore;
36
- }
37
- get isConnected() {
38
- return !!solStore.account?.connected;
39
- }
40
- connect(): void {
41
- solStore.connectModal?.setVisible(true);
42
- }
43
-
44
- disconnect() {
45
- solStore.account?.disconnect();
46
- }
47
-
48
- async sign(message: string): Promise<ISignResult> {
49
- try {
50
- const provider = solStore.account!;
51
- const encodedMessage = new TextEncoder().encode(message);
52
- const signedMessage = await provider.signMessage?.(encodedMessage);
53
-
54
- return {
55
- message,
56
- signature: bs58.encode(signedMessage!)
57
- };
58
- } catch (error) {
59
- console.error(error);
60
- throw error;
61
- }
62
- }
63
-
64
- signin(statement: string, prepare = true): Promise<ISignResult> {
65
- return new Promise((resolve) => {
66
- const signCallback = (data: ReturnType<typeof useWallet>) => {
67
- this.publicKey = data.publicKey?.toString();
68
- this.address = this.publicKey;
69
- this.chainId = 1;
70
- let fullMessage = statement;
71
- if (prepare) {
72
- const msg = prepareSignMessage({ statement, chainId: '1', address: this.address! });
73
- fullMessage = get4361Message(msg);
74
- }
75
-
76
- const res = this.sign(fullMessage);
77
-
78
- resolve(res);
79
- };
80
-
81
- if (this.isConnected) {
82
- signCallback(solStore.account!);
83
- return;
84
- }
85
- solStore.counter++;
86
- this.connect();
87
- const eventKey = getEventKey();
88
- eventBus.once(eventKey, (data) => {
89
- console.log('listen event key success, event key = %s, data = %j', eventKey, data);
90
- signCallback(data);
91
- });
92
- });
93
- }
94
- }
95
-
96
- //Solana connection process: Open the modal first, then manually call wallet connect
97
- export const SolConnector = () => {
98
- const walletModal = useWalletModal();
99
- const wallet = useWallet();
100
-
101
- useEffect(() => {
102
- if (wallet.wallet) {
103
- if (wallet.connected) {
104
- const eventKey = getEventKey();
105
- eventBus.emit(eventKey, wallet);
106
- }
107
- }
108
- }, [wallet]);
109
-
110
- solStore.connectModal = walletModal;
111
- solStore.account = wallet;
112
- return null;
113
- };
114
-
115
- export const SolanaProvider = ({ children, cluster }: { children: ReactNode; cluster?: Cluster }) => {
116
- const endpoint = clusterApiUrl(cluster ? cluster : 'mainnet-beta');
117
-
118
- const wallets = useMemo(() => [new PhantomWalletAdapter(), new TrustWalletAdapter()], []);
119
-
120
- const onError = useCallback((error: any) => {
121
- console.error(error);
122
- }, []);
123
- return (
124
- <ConnectionProvider endpoint={endpoint}>
125
- <WalletProvider wallets={wallets} onError={onError} autoConnect>
126
- <WalletModalProvider>
127
- <SolConnector />
128
- {children}
129
- </WalletModalProvider>
130
- </WalletProvider>
131
- </ConnectionProvider>
132
- );
133
- };
@@ -1,153 +0,0 @@
1
- import {
2
- useTonConnectUI,
3
- useTonWallet,
4
- useTonConnectModal,
5
- WalletInfoRemote,
6
- TonConnectUIProviderProps
7
- } from '@tonconnect/ui-react';
8
- import { WalletBase } from '../../WalletBase';
9
- import { ISignResult } from '../../types';
10
- import { getCustomNaNoId } from '../../utils';
11
- import { hashSha256 } from '@ethsign/utils-web';
12
- import { CHAIN, TonConnectUI, TonProofItemReplySuccess, toUserFriendlyAddress, Wallet } from '@tonconnect/ui';
13
- import { EventEmitter } from 'events';
14
- import { Cell } from 'ton-core';
15
-
16
- export interface TonStoreType {
17
- account: ReturnType<typeof useTonWallet> | null;
18
- connectModal: ReturnType<typeof useTonConnectModal> | undefined;
19
- walletClient: ReturnType<typeof useTonConnectUI>[0] | undefined;
20
- config: TonConnectUIProviderProps | undefined;
21
- counter: number;
22
- }
23
-
24
- export const tonStore: TonStoreType = {
25
- account: null,
26
- connectModal: undefined,
27
- walletClient: undefined,
28
- config: undefined,
29
- counter: 0
30
- };
31
-
32
- export const eventBus = new EventEmitter();
33
-
34
- export const getEventKey = () => {
35
- return `ton_sign_${tonStore.counter}`;
36
- };
37
-
38
- export class TonWallet extends WalletBase<TonStoreType> {
39
- get isConnected() {
40
- return !!tonStore.account?.account;
41
- }
42
-
43
- connect() {
44
- tonStore?.connectModal?.open?.();
45
- }
46
-
47
- async disconnect() {
48
- await tonStore.walletClient?.disconnect();
49
- }
50
-
51
- private getPublicKey(stateInit: string): string {
52
- const state_init = Cell.fromBase64(stateInit);
53
- const bits = state_init.refs[1].bits;
54
- const pubKey = bits.toString().substring(16, 80).toLowerCase();
55
- return pubKey;
56
- }
57
-
58
- async sign(originMsg: string): Promise<ISignResult> {
59
- const message = await hashSha256(originMsg);
60
- const tonConnectUI = tonStore.walletClient as any;
61
- // const walletInfo = tonConnectUI?.wallet;
62
- const authType = '';
63
- // if (walletInfo?.jsBridgeKey && walletInfo?.openMethod !== 'qrcode') {
64
- // authType = walletInfo.jsBridgeKey;
65
- // }
66
-
67
- console.log(this.isConnected, tonConnectUI, 'connected');
68
- if (this.isConnected) {
69
- await tonConnectUI.disconnect();
70
- }
71
- tonStore.counter++;
72
- if (authType) {
73
- const wallets = await tonConnectUI.getWallets();
74
-
75
- const currentWallet = wallets.find((wallet: any) =>
76
- [wallet.name, wallet.appName].includes(authType)
77
- ) as WalletInfoRemote;
78
-
79
- const link = tonConnectUI.connector.connect(
80
- {
81
- bridgeUrl: currentWallet.bridgeUrl,
82
- universalLink: currentWallet.universalLink
83
- },
84
- {
85
- tonProof: message
86
- }
87
- );
88
-
89
- // tonspace在tg内部打开
90
- window.open(link);
91
- } else {
92
- console.log('first time, call setConnectRequestParameters');
93
- tonConnectUI.setConnectRequestParameters({
94
- state: 'ready',
95
- value: {
96
- tonProof: message // 不能有空格,特殊字符
97
- }
98
- });
99
- this.connect();
100
- }
101
-
102
- const connectedWallet: Wallet = await new Promise((resolve) => {
103
- const eventKey = getEventKey();
104
- console.log('start listen event key, key = %s', eventKey);
105
- eventBus.once(eventKey, (data) => {
106
- console.log('listen event key success, event key = %s, data = %j', eventKey, data);
107
- resolve(data);
108
- });
109
- });
110
-
111
- this.provider = tonStore.walletClient;
112
- const proof = (connectedWallet.connectItems?.tonProof as TonProofItemReplySuccess)?.proof;
113
- this.publicKey = connectedWallet.account.publicKey || this.getPublicKey(connectedWallet.account.walletStateInit); //使用walletStateInit,publicKey由后端计算
114
- this.address = toUserFriendlyAddress(connectedWallet.account.address);
115
- this.chainId = connectedWallet.account.chain;
116
- this.network = this.chainId === CHAIN.MAINNET ? 'TON_MAINNET' : 'TON_TESTNET';
117
- const fullMessage = JSON.stringify({
118
- timestamp: proof.timestamp,
119
- payload: proof.payload,
120
- domain: proof.domain
121
- });
122
- const signature = proof.signature;
123
-
124
- return {
125
- message: JSON.stringify({
126
- fullMessage,
127
- message: originMsg
128
- }),
129
- signature,
130
- tonProof: message
131
- };
132
- }
133
-
134
- override async signin(statement: string, prepare = true): Promise<ISignResult> {
135
- const fullMessage = prepare
136
- ? JSON.stringify(
137
- {
138
- statement: statement || 'Welcome to EthSign',
139
- issuedAt: new Date().toISOString(),
140
- nonce: getCustomNaNoId()
141
- },
142
- null,
143
- ' '
144
- )
145
- : statement;
146
- const signRes = await this.sign(fullMessage);
147
- return signRes;
148
- }
149
-
150
- getStore(): TonStoreType {
151
- return tonStore;
152
- }
153
- }
@@ -1,41 +0,0 @@
1
- import { ReactNode, useEffect } from 'react';
2
- import {
3
- TonConnectUIProvider,
4
- useTonConnectUI,
5
- useTonWallet,
6
- useTonConnectModal,
7
- TonConnectUIProviderProps
8
- } from '@tonconnect/ui-react';
9
-
10
- import { tonStore, eventBus, getEventKey, TonWallet } from './TonWallet';
11
-
12
- export { TonWallet };
13
-
14
- export const TonConnector = () => {
15
- const wallet = useTonWallet();
16
- const [tonConnectUI] = useTonConnectUI();
17
- const connectModal = useTonConnectModal();
18
-
19
- tonStore.connectModal = connectModal;
20
- tonStore.walletClient = tonConnectUI;
21
- tonStore.account = wallet;
22
-
23
- useEffect(() => {
24
- if (wallet) {
25
- eventBus.emit(getEventKey(), wallet);
26
- }
27
- }, [wallet]);
28
-
29
- return null;
30
- };
31
-
32
- export const TonProvider = ({ children, config }: { children: ReactNode; config: TonConnectUIProviderProps }) => {
33
- tonStore.config = config;
34
-
35
- return (
36
- <TonConnectUIProvider {...config}>
37
- {children}
38
- <TonConnector />
39
- </TonConnectUIProvider>
40
- );
41
- };
@@ -1,45 +0,0 @@
1
- export enum WalletType {
2
- EVM = 'evm',
3
- BITCOIN = 'bitcoin',
4
- SOLANA = 'solana',
5
- TON = 'ton',
6
- APTOS = 'aptos',
7
- PARTICLE = 'particle-evm',
8
- OKX = 'okx',
9
- Cyber = 'cyber',
10
- StarkNet = 'starknet',
11
- WALLETCONNECT = 'walletconnect',
12
- Cardano = 'cardano'
13
- }
14
-
15
- export enum ChainType {
16
- Evm = 'evm',
17
- Ton = 'ton',
18
- // Starknet = 'starknet',
19
- Solana = 'solana'
20
- }
21
- export enum ExtendedWalletType {
22
- UNISAT = 'unisat',
23
- OKXBTC = 'okx_btc'
24
- }
25
-
26
- export type ProviderType = WalletType | ExtendedWalletType;
27
-
28
- export type ISignResult =
29
- | {
30
- message: string;
31
- signature: string;
32
- [key: string]: any;
33
- }
34
- | undefined;
35
-
36
- export interface ISignInMessage {
37
- domain?: string;
38
- version?: string;
39
- nonce: string;
40
- issuedAt: string;
41
- statement: string;
42
- chainId?: number | string;
43
- uri?: string;
44
- address?: string;
45
- }
@@ -1,61 +0,0 @@
1
- import { ISignInMessage } from '../types';
2
- import { customAlphabet } from 'nanoid';
3
-
4
- export const getCustomNaNoId = (): string => {
5
- const nanoid = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 10);
6
- return nanoid();
7
- };
8
-
9
- export function prepareSignMessage({
10
- chainId,
11
- address,
12
- statement
13
- }: {
14
- address: string;
15
- chainId: number | string;
16
- statement?: string;
17
- }): ISignInMessage {
18
- return {
19
- statement: statement || 'Welcome to EthSign',
20
- chainId: chainId,
21
- address: address,
22
- issuedAt: new Date().toISOString(),
23
- domain: window.location.host,
24
- uri: window.location.origin,
25
- version: '1',
26
- nonce: getCustomNaNoId()
27
- };
28
- }
29
-
30
- export const get4361Message = ({
31
- domain,
32
- version,
33
- nonce,
34
- issuedAt,
35
- statement,
36
- chainId,
37
- uri,
38
- address
39
- }: ISignInMessage): string => {
40
- const header = `${domain} wants you to sign in with your Ethereum account:`;
41
- const uriField = `URI: ${uri}`;
42
- let prefix = [header, address].join('\n');
43
- const versionField = `Version: ${version}`;
44
-
45
- // const addressField = `Address: ` + address;
46
-
47
- const chainField = `Chain ID: ` + chainId || '1';
48
-
49
- const nonceField = `Nonce: ${nonce}`;
50
-
51
- const suffixArray = [uriField, versionField, chainField, nonceField];
52
-
53
- suffixArray.push(`Issued At: ${issuedAt}`);
54
-
55
- const suffix = suffixArray.join('\n');
56
- prefix = [prefix, statement].join('\n\n');
57
- if (statement) {
58
- prefix += '\n';
59
- }
60
- return [prefix, suffix].join('\n');
61
- };