@sign-global/tokentable 0.3.0 → 0.4.0-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 (148) hide show
  1. package/.github/workflows/beta.yml +28 -0
  2. package/dist/cjs/airdrop/AirdropClient.d.ts +46 -0
  3. package/dist/cjs/airdrop/AirdropClient.js +251 -0
  4. package/dist/cjs/airdrop/AirdropClient.js.map +1 -0
  5. package/dist/cjs/airdrop/SignatureAirdropClient.d.ts +24 -0
  6. package/dist/cjs/airdrop/SignatureAirdropClient.js +109 -0
  7. package/dist/cjs/airdrop/SignatureAirdropClient.js.map +1 -0
  8. package/dist/cjs/airdrop/common/index.d.ts +1 -1
  9. package/dist/cjs/airdrop/constants/index.d.ts +4 -0
  10. package/dist/cjs/airdrop/constants/index.js +5 -1
  11. package/dist/cjs/airdrop/constants/index.js.map +1 -1
  12. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.d.ts +15 -0
  13. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.js +51 -0
  14. package/dist/cjs/airdrop/core/evm/contracts/AirdropSignatureClient.js.map +1 -0
  15. package/dist/cjs/airdrop/core/evm/contracts/abis/FungibleTokenECDSADistributor.json +564 -0
  16. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletBase.d.ts +32 -0
  17. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletBase.js +71 -0
  18. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletBase.js.map +1 -0
  19. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletFactory.d.ts +8 -0
  20. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletFactory.js +38 -0
  21. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/WalletFactory.js.map +1 -0
  22. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/index.d.ts +2 -0
  23. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/index.js +21 -0
  24. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/index.js.map +1 -0
  25. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.d.ts +26 -0
  26. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.js +70 -0
  27. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.js.map +1 -0
  28. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/index.d.ts +9 -0
  29. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/index.js +35 -0
  30. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/evm/index.js.map +1 -0
  31. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/index.d.ts +3 -0
  32. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/index.js +14 -0
  33. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/index.js.map +1 -0
  34. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/solana/index.d.ts +27 -0
  35. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/solana/index.js +119 -0
  36. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/solana/index.js.map +1 -0
  37. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.d.ts +23 -0
  38. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.js +117 -0
  39. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.js.map +1 -0
  40. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/index.d.ts +9 -0
  41. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/index.js +29 -0
  42. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/providers/ton/index.js.map +1 -0
  43. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/types.d.ts +38 -0
  44. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/types.js +30 -0
  45. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/types.js.map +1 -0
  46. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/utils/index.d.ts +8 -0
  47. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/utils/index.js +41 -0
  48. package/dist/cjs/airdrop/core/useWeb3ConnectWallet/utils/index.js.map +1 -0
  49. package/dist/cjs/airdrop/index.d.ts +4 -46
  50. package/dist/cjs/airdrop/index.js +22 -241
  51. package/dist/cjs/airdrop/index.js.map +1 -1
  52. package/dist/cjs/airdrop/services/index.d.ts +15 -0
  53. package/dist/cjs/airdrop/services/index.js +16 -1
  54. package/dist/cjs/airdrop/services/index.js.map +1 -1
  55. package/dist/cjs/airdrop/types/index.d.ts +19 -4
  56. package/dist/cjs/airdrop/types/index.js +7 -1
  57. package/dist/cjs/airdrop/types/index.js.map +1 -1
  58. package/dist/cjs/index.d.ts +1 -1
  59. package/dist/cjs/index.js +7 -1
  60. package/dist/cjs/index.js.map +1 -1
  61. package/dist/cjs/utils/utils.d.ts +1 -0
  62. package/dist/cjs/utils/utils.js +2 -1
  63. package/dist/cjs/utils/utils.js.map +1 -1
  64. package/dist/esm/airdrop/AirdropClient.d.ts +46 -0
  65. package/dist/esm/airdrop/AirdropClient.js +247 -0
  66. package/dist/esm/airdrop/AirdropClient.js.map +1 -0
  67. package/dist/esm/airdrop/SignatureAirdropClient.d.ts +24 -0
  68. package/dist/esm/airdrop/SignatureAirdropClient.js +105 -0
  69. package/dist/esm/airdrop/SignatureAirdropClient.js.map +1 -0
  70. package/dist/esm/airdrop/common/index.d.ts +1 -1
  71. package/dist/esm/airdrop/constants/index.d.ts +4 -0
  72. package/dist/esm/airdrop/constants/index.js +4 -0
  73. package/dist/esm/airdrop/constants/index.js.map +1 -1
  74. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.d.ts +15 -0
  75. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.js +44 -0
  76. package/dist/esm/airdrop/core/evm/contracts/AirdropSignatureClient.js.map +1 -0
  77. package/dist/esm/airdrop/core/evm/contracts/abis/FungibleTokenECDSADistributor.json +564 -0
  78. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletBase.d.ts +32 -0
  79. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletBase.js +67 -0
  80. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletBase.js.map +1 -0
  81. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletFactory.d.ts +8 -0
  82. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletFactory.js +34 -0
  83. package/dist/esm/airdrop/core/useWeb3ConnectWallet/WalletFactory.js.map +1 -0
  84. package/dist/esm/airdrop/core/useWeb3ConnectWallet/index.d.ts +2 -0
  85. package/dist/esm/airdrop/core/useWeb3ConnectWallet/index.js +3 -0
  86. package/dist/esm/airdrop/core/useWeb3ConnectWallet/index.js.map +1 -0
  87. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.d.ts +26 -0
  88. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.js +65 -0
  89. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.js.map +1 -0
  90. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/index.d.ts +9 -0
  91. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/index.js +29 -0
  92. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/evm/index.js.map +1 -0
  93. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/index.d.ts +3 -0
  94. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/index.js +5 -0
  95. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/index.js.map +1 -0
  96. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/solana/index.d.ts +27 -0
  97. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/solana/index.js +109 -0
  98. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/solana/index.js.map +1 -0
  99. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.d.ts +23 -0
  100. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.js +112 -0
  101. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.js.map +1 -0
  102. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/index.d.ts +9 -0
  103. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/index.js +24 -0
  104. package/dist/esm/airdrop/core/useWeb3ConnectWallet/providers/ton/index.js.map +1 -0
  105. package/dist/esm/airdrop/core/useWeb3ConnectWallet/types.d.ts +38 -0
  106. package/dist/esm/airdrop/core/useWeb3ConnectWallet/types.js +27 -0
  107. package/dist/esm/airdrop/core/useWeb3ConnectWallet/types.js.map +1 -0
  108. package/dist/esm/airdrop/core/useWeb3ConnectWallet/utils/index.d.ts +8 -0
  109. package/dist/esm/airdrop/core/useWeb3ConnectWallet/utils/index.js +35 -0
  110. package/dist/esm/airdrop/core/useWeb3ConnectWallet/utils/index.js.map +1 -0
  111. package/dist/esm/airdrop/index.d.ts +4 -46
  112. package/dist/esm/airdrop/index.js +4 -239
  113. package/dist/esm/airdrop/index.js.map +1 -1
  114. package/dist/esm/airdrop/services/index.d.ts +15 -0
  115. package/dist/esm/airdrop/services/index.js +12 -0
  116. package/dist/esm/airdrop/services/index.js.map +1 -1
  117. package/dist/esm/airdrop/types/index.d.ts +19 -4
  118. package/dist/esm/airdrop/types/index.js +6 -0
  119. package/dist/esm/airdrop/types/index.js.map +1 -1
  120. package/dist/esm/index.d.ts +1 -1
  121. package/dist/esm/index.js +1 -1
  122. package/dist/esm/index.js.map +1 -1
  123. package/dist/esm/utils/utils.d.ts +1 -0
  124. package/dist/esm/utils/utils.js +1 -0
  125. package/dist/esm/utils/utils.js.map +1 -1
  126. package/package.json +15 -3
  127. package/src/airdrop/AirdropClient.ts +307 -0
  128. package/src/airdrop/SignatureAirdropClient.ts +120 -0
  129. package/src/airdrop/constants/index.ts +5 -0
  130. package/src/airdrop/core/evm/contracts/AirdropSignatureClient.ts +59 -0
  131. package/src/airdrop/core/evm/contracts/abis/FungibleTokenECDSADistributor.json +564 -0
  132. package/src/airdrop/core/useWeb3ConnectWallet/WalletBase.ts +92 -0
  133. package/src/airdrop/core/useWeb3ConnectWallet/WalletFactory.tsx +35 -0
  134. package/src/airdrop/core/useWeb3ConnectWallet/index.ts +3 -0
  135. package/src/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.ts +90 -0
  136. package/src/airdrop/core/useWeb3ConnectWallet/providers/evm/index.tsx +43 -0
  137. package/src/airdrop/core/useWeb3ConnectWallet/providers/index.ts +4 -0
  138. package/src/airdrop/core/useWeb3ConnectWallet/providers/solana/index.tsx +141 -0
  139. package/src/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.ts +149 -0
  140. package/src/airdrop/core/useWeb3ConnectWallet/providers/ton/index.tsx +41 -0
  141. package/src/airdrop/core/useWeb3ConnectWallet/types.ts +45 -0
  142. package/src/airdrop/core/useWeb3ConnectWallet/utils/index.ts +61 -0
  143. package/src/airdrop/index.ts +4 -304
  144. package/src/airdrop/services/index.ts +29 -1
  145. package/src/airdrop/types/index.ts +23 -5
  146. package/src/index.ts +9 -1
  147. package/src/utils/utils.ts +2 -0
  148. package/tsconfig.json +2 -2
@@ -0,0 +1,34 @@
1
+ import { EvmWallet } from './providers/evm';
2
+ import { ChainType } from './types';
3
+ import { TonWallet } from './providers/ton';
4
+ import { SolWallet } from './providers/solana';
5
+ export class WalletFactory {
6
+ static instances = {};
7
+ static getWallet(type, userAddress) {
8
+ if (!this.instances[type]) {
9
+ let WalletClass;
10
+ switch (type) {
11
+ case ChainType.Evm:
12
+ WalletClass = EvmWallet;
13
+ break;
14
+ case ChainType.Ton:
15
+ WalletClass = TonWallet;
16
+ break;
17
+ // case ChainType.Starknet:
18
+ // WalletClass = StarknetWallet;
19
+ // break;
20
+ case ChainType.Solana:
21
+ WalletClass = SolWallet;
22
+ break;
23
+ default:
24
+ throw new Error('Unsupported wallet type');
25
+ }
26
+ if (!WalletClass) {
27
+ throw new Error('Unsupported wallet type');
28
+ }
29
+ this.instances[type] = new WalletClass(type, userAddress);
30
+ }
31
+ return this.instances[type];
32
+ }
33
+ }
34
+ //# sourceMappingURL=WalletFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletFactory.js","sourceRoot":"","sources":["../../../../../src/airdrop/core/useWeb3ConnectWallet/WalletFactory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAgB,aAAa;IACzB,MAAM,CAAC,SAAS,GAAsD,EAAE,CAAC;IACjF,MAAM,CAAC,SAAS,CAAC,IAAe,EAAE,WAAoB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,WAAW,CAAC;YAChB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,SAAS,CAAC,GAAG;oBAChB,WAAW,GAAG,SAAS,CAAC;oBACxB,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG;oBAChB,WAAW,GAAG,SAAS,CAAC;oBACxB,MAAM;gBACR,2BAA2B;gBAC3B,kCAAkC;gBAClC,WAAW;gBACX,KAAK,SAAS,CAAC,MAAM;oBACnB,WAAW,GAAG,SAAS,CAAC;oBACxB,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { WalletFactory } from './WalletFactory';
2
+ export * from './providers';
@@ -0,0 +1,3 @@
1
+ export { WalletFactory } from './WalletFactory';
2
+ export * from './providers';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/airdrop/core/useWeb3ConnectWallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,cAAc,aAAa,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { useConnectModal } from '@rainbow-me/rainbowkit';
2
+ import { ResolvedRegister, useAccount, useWalletClient } from 'wagmi';
3
+ import { WalletBase } from '../../WalletBase';
4
+ import { EventEmitter } from 'events';
5
+ import { ISignResult } from '../../types';
6
+ export declare const eventBus: EventEmitter<[never]>;
7
+ export interface EVMStoreType {
8
+ account: ReturnType<typeof useAccount> | null;
9
+ connectModal: ReturnType<typeof useConnectModal> | undefined;
10
+ walletClient: ReturnType<typeof useWalletClient> | undefined;
11
+ config: ResolvedRegister['config'] | undefined;
12
+ counter: number;
13
+ }
14
+ export declare const evmStore: EVMStoreType;
15
+ export declare const getEventKey: () => string;
16
+ export declare class EvmWallet extends WalletBase<EVMStoreType> {
17
+ get isConnected(): boolean;
18
+ connect(): void;
19
+ disconnect(): Promise<void>;
20
+ sign(_message: string): Promise<{
21
+ message: string;
22
+ signature: `0x${string}`;
23
+ }>;
24
+ signin(statement?: string): Promise<ISignResult>;
25
+ getStore(): EVMStoreType;
26
+ }
@@ -0,0 +1,65 @@
1
+ import { WalletBase } from '../../WalletBase';
2
+ import { disconnect, getAccount, signMessage } from 'wagmi/actions';
3
+ import { EventEmitter } from 'events';
4
+ import { get4361Message, prepareSignMessage } from '../../utils';
5
+ export const eventBus = new EventEmitter();
6
+ const EVM_EVENT_KEY = 'evm_signin';
7
+ export const evmStore = {
8
+ account: null,
9
+ connectModal: undefined,
10
+ walletClient: undefined,
11
+ config: undefined,
12
+ counter: 0
13
+ };
14
+ export const getEventKey = () => {
15
+ return `${EVM_EVENT_KEY}_${evmStore.counter}`;
16
+ };
17
+ export class EvmWallet extends WalletBase {
18
+ get isConnected() {
19
+ return !!(evmStore.account?.address && evmStore.account?.isConnected);
20
+ }
21
+ connect() {
22
+ evmStore?.connectModal?.openConnectModal?.();
23
+ }
24
+ async disconnect() {
25
+ await disconnect(evmStore.config);
26
+ }
27
+ async sign(_message) {
28
+ const sign = await signMessage(evmStore.config, {
29
+ message: _message
30
+ });
31
+ return {
32
+ message: _message,
33
+ signature: sign
34
+ };
35
+ }
36
+ async signin(statement) {
37
+ return new Promise((resolve) => {
38
+ const signCallback = (data) => {
39
+ this.address = data.address;
40
+ this.chainId = data.chainId;
41
+ const msg = prepareSignMessage({ statement, chainId: data.chainId, address: data.address });
42
+ const fullMessage = get4361Message(msg);
43
+ const res = this.sign(fullMessage);
44
+ resolve(res);
45
+ };
46
+ const account = getAccount(evmStore.config);
47
+ this.provider = evmStore.walletClient;
48
+ if (this.isConnected) {
49
+ signCallback(account);
50
+ return;
51
+ }
52
+ evmStore.counter++;
53
+ this.connect();
54
+ const eventKey = getEventKey();
55
+ eventBus.once(eventKey, (data) => {
56
+ console.log('listen event key success, event key = %s, data = %j', eventKey, data);
57
+ signCallback(data);
58
+ });
59
+ });
60
+ }
61
+ getStore() {
62
+ return evmStore;
63
+ }
64
+ }
65
+ //# sourceMappingURL=EvmWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmWallet.js","sourceRoot":"","sources":["../../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/evm/EvmWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import '@rainbow-me/rainbowkit/styles.css';
2
+ import { ResolvedRegister } from 'wagmi';
3
+ import { ReactNode } from 'react';
4
+ export { EvmWallet } from './EvmWallet';
5
+ export declare const EVMConnector: () => null;
6
+ export declare const EvmProvider: ({ children, config }: {
7
+ children: ReactNode;
8
+ config: ResolvedRegister["config"];
9
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import '@rainbow-me/rainbowkit/styles.css';
3
+ import { RainbowKitProvider, lightTheme, useConnectModal } from '@rainbow-me/rainbowkit';
4
+ import { WagmiProvider, useAccount, useWalletClient } from 'wagmi';
5
+ import { useEffect } from 'react';
6
+ import { evmStore, getEventKey, eventBus } from './EvmWallet';
7
+ export { EvmWallet } from './EvmWallet';
8
+ export const EVMConnector = () => {
9
+ const connectModal = useConnectModal();
10
+ const walletClient = useWalletClient();
11
+ const account = useAccount();
12
+ evmStore.connectModal = connectModal;
13
+ evmStore.walletClient = walletClient;
14
+ evmStore.account = account;
15
+ useEffect(() => {
16
+ if (account.isConnected) {
17
+ const eventKey = getEventKey();
18
+ eventBus.emit(eventKey, account);
19
+ }
20
+ }, [account]);
21
+ return null;
22
+ };
23
+ export const EvmProvider = ({ children, config }) => {
24
+ evmStore.config = config;
25
+ return (_jsx(WagmiProvider, { config: config, children: _jsxs(RainbowKitProvider, { theme: lightTheme({
26
+ accentColor: '#DD8D58'
27
+ }), children: [children, _jsx(EVMConnector, {})] }) }));
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/evm/index.tsx"],"names":[],"mappings":";AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAA+D,EAAE,EAAE;IAC/G,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CACL,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,YAC3B,MAAC,kBAAkB,IACjB,KAAK,EAAE,UAAU,CAAC;gBAChB,WAAW,EAAE,SAAS;aACvB,CAAC,aAED,QAAQ,EACT,KAAC,YAAY,KAAG,IACG,GACP,CACjB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { EvmWallet, EvmProvider } from './evm';
2
+ export { SolWallet, SolanaProvider } from './solana';
3
+ export { TonWallet, TonProvider } from './ton';
@@ -0,0 +1,5 @@
1
+ export { EvmWallet, EvmProvider } from './evm';
2
+ export { SolWallet, SolanaProvider } from './solana';
3
+ // export { StarknetWallet } from './starknet';
4
+ export { TonWallet, TonProvider } from './ton';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACrD,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { WalletBase } from '../../WalletBase';
3
+ import { useWalletModal } from '@solana/wallet-adapter-react-ui';
4
+ import '@solana/wallet-adapter-react-ui/styles.css';
5
+ import { ISignResult } from '../../types';
6
+ import { useWallet } from '@solana/wallet-adapter-react';
7
+ import EventEmitter from 'events';
8
+ interface SolStoreType {
9
+ connectModal: ReturnType<typeof useWalletModal> | null;
10
+ account: ReturnType<typeof useWallet> | null;
11
+ counter: number;
12
+ }
13
+ export declare const eventBus: EventEmitter<[never]>;
14
+ export declare const getEventKey: () => string;
15
+ export declare class SolWallet extends WalletBase<SolStoreType> {
16
+ getStore(): SolStoreType;
17
+ get isConnected(): boolean;
18
+ connect(): void;
19
+ disconnect(): void;
20
+ sign(message: string): Promise<ISignResult>;
21
+ signin(statement?: string): Promise<ISignResult>;
22
+ }
23
+ export declare const SolConnector: () => null;
24
+ export declare const SolanaProvider: ({ children }: {
25
+ children: ReactNode;
26
+ }) => import("react/jsx-runtime").JSX.Element;
27
+ export {};
@@ -0,0 +1,109 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo } from 'react';
3
+ import { WalletBase } from '../../WalletBase';
4
+ import { useWalletModal, WalletModalProvider } from '@solana/wallet-adapter-react-ui';
5
+ import '@solana/wallet-adapter-react-ui/styles.css';
6
+ import { ConnectionProvider, useWallet, WalletProvider } from '@solana/wallet-adapter-react';
7
+ import { PhantomWalletAdapter } from '@solana/wallet-adapter-wallets';
8
+ import { clusterApiUrl } from '@solana/web3.js';
9
+ import bs58 from 'bs58';
10
+ import { get4361Message, prepareSignMessage } from '../../utils';
11
+ import EventEmitter from 'events';
12
+ const solStore = {
13
+ connectModal: null,
14
+ account: null,
15
+ counter: 0
16
+ };
17
+ export const eventBus = new EventEmitter();
18
+ const SOL_EVENT_KEY = 'sol_signin';
19
+ export const getEventKey = () => {
20
+ return `${SOL_EVENT_KEY}_${solStore.counter}`;
21
+ };
22
+ export class SolWallet extends WalletBase {
23
+ getStore() {
24
+ return solStore;
25
+ }
26
+ get isConnected() {
27
+ return !!solStore.account?.connected;
28
+ }
29
+ connect() {
30
+ solStore.connectModal?.setVisible(true);
31
+ }
32
+ disconnect() {
33
+ solStore.account?.disconnect();
34
+ }
35
+ async sign(message) {
36
+ try {
37
+ const provider = solStore.account;
38
+ const encodedMessage = new TextEncoder().encode(message);
39
+ const signedMessage = await provider.signMessage?.(encodedMessage);
40
+ console.log(signedMessage, 'signedMessage');
41
+ return {
42
+ message,
43
+ signature: bs58.encode(signedMessage)
44
+ };
45
+ }
46
+ catch (error) {
47
+ console.error(error);
48
+ throw error;
49
+ }
50
+ }
51
+ signin(statement) {
52
+ return new Promise((resolve) => {
53
+ const signCallback = (data) => {
54
+ this.publicKey = data.publicKey?.toString();
55
+ this.address = this.publicKey;
56
+ this.chainId = 1;
57
+ const msg = prepareSignMessage({ statement, chainId: '1', address: this.address });
58
+ const fullMessage = get4361Message(msg);
59
+ const res = this.sign(fullMessage);
60
+ resolve(res);
61
+ };
62
+ // const account = getAccount(evmStore.config!);
63
+ // this.provider = evmStore.walletClient;
64
+ if (this.isConnected) {
65
+ console.log(solStore);
66
+ signCallback(solStore.account);
67
+ return;
68
+ }
69
+ solStore.counter++;
70
+ this.connect();
71
+ const eventKey = getEventKey();
72
+ console.log(eventKey);
73
+ eventBus.once(eventKey, (data) => {
74
+ console.log('listen event key success, event key = %s, data = %j', eventKey, data);
75
+ signCallback(data);
76
+ });
77
+ });
78
+ }
79
+ }
80
+ export const SolConnector = () => {
81
+ const walletModal = useWalletModal();
82
+ const wallet = useWallet();
83
+ useEffect(() => {
84
+ console.log(wallet, 'wallet');
85
+ if (wallet.wallet) {
86
+ if (wallet.connected) {
87
+ const eventKey = getEventKey();
88
+ eventBus.emit(eventKey, wallet);
89
+ }
90
+ else {
91
+ wallet.connect().catch((error) => {
92
+ console.error(error);
93
+ });
94
+ }
95
+ }
96
+ }, [wallet]);
97
+ solStore.connectModal = walletModal;
98
+ solStore.account = wallet;
99
+ return null;
100
+ };
101
+ export const SolanaProvider = ({ children }) => {
102
+ const endpoint = clusterApiUrl('mainnet-beta');
103
+ const wallets = useMemo(() => [new PhantomWalletAdapter()], []);
104
+ const onError = useCallback((error) => {
105
+ console.error(error);
106
+ }, []);
107
+ return (_jsx(ConnectionProvider, { endpoint: endpoint, children: _jsx(WalletProvider, { wallets: wallets, onError: onError, children: _jsxs(WalletModalProvider, { children: [_jsx(SolConnector, {}), children] }) }) }));
108
+ };
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/solana/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { useTonConnectUI, useTonWallet, useTonConnectModal, TonConnectUIProviderProps } from '@tonconnect/ui-react';
2
+ import { WalletBase } from '../../WalletBase';
3
+ import { ISignResult } from '../../types';
4
+ import { EventEmitter } from 'events';
5
+ export interface TonStoreType {
6
+ account: ReturnType<typeof useTonWallet> | null;
7
+ connectModal: ReturnType<typeof useTonConnectModal> | undefined;
8
+ walletClient: ReturnType<typeof useTonConnectUI>[0] | undefined;
9
+ config: TonConnectUIProviderProps | undefined;
10
+ counter: number;
11
+ }
12
+ export declare const tonStore: TonStoreType;
13
+ export declare const eventBus: EventEmitter<[never]>;
14
+ export declare const getEventKey: () => string;
15
+ export declare class TonWallet extends WalletBase<TonStoreType> {
16
+ get isConnected(): boolean;
17
+ connect(): void;
18
+ disconnect(): Promise<void>;
19
+ private getPublicKey;
20
+ sign(originMsg: string): Promise<ISignResult>;
21
+ signin(statement?: string): Promise<ISignResult>;
22
+ getStore(): TonStoreType;
23
+ }
@@ -0,0 +1,112 @@
1
+ import { WalletBase } from '../../WalletBase';
2
+ import { getCustomNaNoId } from '../../utils';
3
+ import { hashSha256 } from '@ethsign/utils-web';
4
+ import { CHAIN, toUserFriendlyAddress } from '@tonconnect/ui';
5
+ import { EventEmitter } from 'events';
6
+ import { Cell } from 'ton-core';
7
+ export const tonStore = {
8
+ account: null,
9
+ connectModal: undefined,
10
+ walletClient: undefined,
11
+ config: undefined,
12
+ counter: 0
13
+ };
14
+ export const eventBus = new EventEmitter();
15
+ export const getEventKey = () => {
16
+ return `ton_sign_${tonStore.counter}`;
17
+ };
18
+ export class TonWallet extends WalletBase {
19
+ get isConnected() {
20
+ return !!tonStore.account?.account;
21
+ }
22
+ connect() {
23
+ tonStore?.connectModal?.open?.();
24
+ }
25
+ async disconnect() {
26
+ await tonStore.walletClient?.disconnect();
27
+ }
28
+ getPublicKey(stateInit) {
29
+ const state_init = Cell.fromBase64(stateInit);
30
+ const bits = state_init.refs[1].bits;
31
+ const pubKey = bits.toString().substring(16, 80).toLowerCase();
32
+ return pubKey;
33
+ }
34
+ async sign(originMsg) {
35
+ const message = await hashSha256(originMsg);
36
+ const tonConnectUI = tonStore.walletClient;
37
+ // const walletInfo = tonConnectUI?.wallet;
38
+ const authType = '';
39
+ // if (walletInfo?.jsBridgeKey && walletInfo?.openMethod !== 'qrcode') {
40
+ // authType = walletInfo.jsBridgeKey;
41
+ // }
42
+ console.log(this.isConnected, tonConnectUI, 'connected');
43
+ if (this.isConnected) {
44
+ await tonConnectUI.disconnect();
45
+ }
46
+ tonStore.counter++;
47
+ if (authType) {
48
+ const wallets = await tonConnectUI.getWallets();
49
+ const currentWallet = wallets.find((wallet) => [wallet.name, wallet.appName].includes(authType));
50
+ console.log(wallets, currentWallet, 'ww');
51
+ const link = tonConnectUI.connector.connect({
52
+ bridgeUrl: currentWallet.bridgeUrl,
53
+ universalLink: currentWallet.universalLink
54
+ }, {
55
+ tonProof: message
56
+ });
57
+ // tonspace在tg内部打开
58
+ window.open(link);
59
+ }
60
+ else {
61
+ console.log('first time, call setConnectRequestParameters');
62
+ tonConnectUI.setConnectRequestParameters({
63
+ state: 'ready',
64
+ value: {
65
+ tonProof: message // 不能有空格,特殊字符
66
+ }
67
+ });
68
+ this.connect();
69
+ }
70
+ const connectedWallet = await new Promise((resolve) => {
71
+ const eventKey = getEventKey();
72
+ console.log('start listen event key, key = %s', eventKey);
73
+ eventBus.once(eventKey, (data) => {
74
+ console.log('listen event key success, event key = %s, data = %j', eventKey, data);
75
+ resolve(data);
76
+ });
77
+ });
78
+ this.provider = tonStore.walletClient;
79
+ const proof = connectedWallet.connectItems?.tonProof?.proof;
80
+ this.publicKey = connectedWallet.account.publicKey || this.getPublicKey(connectedWallet.account.walletStateInit); //使用walletStateInit,publicKey由后端计算
81
+ this.address = toUserFriendlyAddress(connectedWallet.account.address);
82
+ this.chainId = connectedWallet.account.chain;
83
+ this.network = this.chainId === CHAIN.MAINNET ? 'TON_MAINNET' : 'TON_TESTNET';
84
+ const fullMessage = JSON.stringify({
85
+ timestamp: proof.timestamp,
86
+ payload: proof.payload,
87
+ domain: proof.domain
88
+ });
89
+ const signature = proof.signature;
90
+ return {
91
+ message: JSON.stringify({
92
+ fullMessage,
93
+ message: originMsg
94
+ }),
95
+ signature,
96
+ tonProof: message
97
+ };
98
+ }
99
+ async signin(statement) {
100
+ const fullMessage = {
101
+ statement: statement || 'Welcome to EthSign',
102
+ issuedAt: new Date().toISOString(),
103
+ nonce: getCustomNaNoId()
104
+ };
105
+ const signRes = await this.sign(JSON.stringify(fullMessage, null, ' '));
106
+ return signRes;
107
+ }
108
+ getStore() {
109
+ return tonStore;
110
+ }
111
+ }
112
+ //# sourceMappingURL=TonWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TonWallet.js","sourceRoot":"","sources":["../../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/ton/TonWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { TonConnectUIProviderProps } from '@tonconnect/ui-react';
3
+ import { TonWallet } from './TonWallet';
4
+ export { TonWallet };
5
+ export declare const TonConnector: () => null;
6
+ export declare const TonProvider: ({ children, config }: {
7
+ children: ReactNode;
8
+ config: TonConnectUIProviderProps;
9
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect } from 'react';
3
+ import { TonConnectUIProvider, useTonConnectUI, useTonWallet, useTonConnectModal } from '@tonconnect/ui-react';
4
+ import { tonStore, eventBus, getEventKey, TonWallet } from './TonWallet';
5
+ export { TonWallet };
6
+ export const TonConnector = () => {
7
+ const wallet = useTonWallet();
8
+ const [tonConnectUI] = useTonConnectUI();
9
+ const connectModal = useTonConnectModal();
10
+ tonStore.connectModal = connectModal;
11
+ tonStore.walletClient = tonConnectUI;
12
+ tonStore.account = wallet;
13
+ useEffect(() => {
14
+ if (wallet) {
15
+ eventBus.emit(getEventKey(), wallet);
16
+ }
17
+ }, [wallet]);
18
+ return null;
19
+ };
20
+ export const TonProvider = ({ children, config }) => {
21
+ tonStore.config = config;
22
+ return (_jsxs(TonConnectUIProvider, { ...config, children: [children, _jsx(TonConnector, {})] }));
23
+ };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/airdrop/core/useWeb3ConnectWallet/providers/ton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAE1C,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAA8D,EAAE,EAAE;IAC9G,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IAEzB,OAAO,CACL,MAAC,oBAAoB,OAAK,MAAM,aAC7B,QAAQ,EACT,KAAC,YAAY,KAAG,IACK,CACxB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ export declare 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
+ export declare enum ChainType {
15
+ Evm = "evm",
16
+ Ton = "ton",
17
+ Solana = "solana"
18
+ }
19
+ export declare enum ExtendedWalletType {
20
+ UNISAT = "unisat",
21
+ OKXBTC = "okx_btc"
22
+ }
23
+ export type ProviderType = WalletType | ExtendedWalletType;
24
+ export type ISignResult = {
25
+ message: string;
26
+ signature: string;
27
+ [key: string]: any;
28
+ } | undefined;
29
+ export interface ISignInMessage {
30
+ domain?: string;
31
+ version?: string;
32
+ nonce: string;
33
+ issuedAt: string;
34
+ statement: string;
35
+ chainId?: number | string;
36
+ uri?: string;
37
+ address?: string;
38
+ }
@@ -0,0 +1,27 @@
1
+ export var WalletType;
2
+ (function (WalletType) {
3
+ WalletType["EVM"] = "evm";
4
+ WalletType["BITCOIN"] = "bitcoin";
5
+ WalletType["SOLANA"] = "solana";
6
+ WalletType["TON"] = "ton";
7
+ WalletType["APTOS"] = "aptos";
8
+ WalletType["PARTICLE"] = "particle-evm";
9
+ WalletType["OKX"] = "okx";
10
+ WalletType["Cyber"] = "cyber";
11
+ WalletType["StarkNet"] = "starknet";
12
+ WalletType["WALLETCONNECT"] = "walletconnect";
13
+ WalletType["Cardano"] = "cardano";
14
+ })(WalletType || (WalletType = {}));
15
+ export var ChainType;
16
+ (function (ChainType) {
17
+ ChainType["Evm"] = "evm";
18
+ ChainType["Ton"] = "ton";
19
+ // Starknet = 'starknet',
20
+ ChainType["Solana"] = "solana";
21
+ })(ChainType || (ChainType = {}));
22
+ export var ExtendedWalletType;
23
+ (function (ExtendedWalletType) {
24
+ ExtendedWalletType["UNISAT"] = "unisat";
25
+ ExtendedWalletType["OKXBTC"] = "okx_btc";
26
+ })(ExtendedWalletType || (ExtendedWalletType = {}));
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/airdrop/core/useWeb3ConnectWallet/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,uCAAyB,CAAA;IACzB,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,mCAAqB,CAAA;IACrB,6CAA+B,CAAA;IAC/B,iCAAmB,CAAA;AACrB,CAAC,EAZW,UAAU,KAAV,UAAU,QAYrB;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,yBAAyB;IACzB,8BAAiB,CAAA;AACnB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AACD,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,wCAAkB,CAAA;AACpB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B"}
@@ -0,0 +1,8 @@
1
+ import { ISignInMessage } from '../types';
2
+ export declare const getCustomNaNoId: () => string;
3
+ export declare function prepareSignMessage({ chainId, address, statement }: {
4
+ address: string;
5
+ chainId: number | string;
6
+ statement?: string;
7
+ }): ISignInMessage;
8
+ export declare const get4361Message: ({ domain, version, nonce, issuedAt, statement, chainId, uri, address }: ISignInMessage) => string;