@txnlab/use-wallet 1.3.1 → 2.0.0-alpha.0

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 (108) hide show
  1. package/README.md +490 -188
  2. package/dist/cjs/index.js +231 -129
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/jest.config.d.ts +7 -0
  5. package/dist/cjs/src/clients/algosigner/client.d.ts +3 -3
  6. package/dist/cjs/src/clients/algosigner/types.d.ts +2 -8
  7. package/dist/cjs/src/clients/base/base.d.ts +3 -2
  8. package/dist/cjs/src/clients/base/index.d.ts +2 -2
  9. package/dist/cjs/src/clients/daffi/client.d.ts +5 -4
  10. package/dist/cjs/src/clients/daffi/types.d.ts +5 -7
  11. package/dist/cjs/src/clients/defly/client.d.ts +6 -5
  12. package/dist/cjs/src/clients/defly/types.d.ts +5 -7
  13. package/dist/cjs/src/clients/exodus/client.d.ts +6 -5
  14. package/dist/cjs/src/clients/exodus/types.d.ts +5 -10
  15. package/dist/cjs/src/clients/index.d.ts +1 -1
  16. package/dist/cjs/src/clients/kmd/client.d.ts +4 -5
  17. package/dist/cjs/src/clients/kmd/types.d.ts +4 -9
  18. package/dist/cjs/src/clients/mnemonic/client.d.ts +4 -5
  19. package/dist/cjs/src/clients/mnemonic/types.d.ts +2 -9
  20. package/dist/cjs/src/clients/myalgo/client.d.ts +6 -5
  21. package/dist/cjs/src/clients/myalgo/types.d.ts +10 -12
  22. package/dist/cjs/src/clients/pera/client.d.ts +6 -5
  23. package/dist/cjs/src/clients/pera/types.d.ts +5 -7
  24. package/dist/cjs/src/clients/{walletconnect → walletconnect2}/client.d.ts +8 -7
  25. package/dist/cjs/src/clients/walletconnect2/constants.d.ts +6 -0
  26. package/dist/cjs/src/clients/walletconnect2/index.d.ts +2 -0
  27. package/dist/cjs/src/clients/walletconnect2/types.d.ts +38 -0
  28. package/dist/cjs/src/clients/walletconnect2/utils.d.ts +2 -0
  29. package/dist/cjs/src/hooks/index.d.ts +1 -0
  30. package/dist/cjs/src/hooks/useInitializeProviders.d.ts +9 -0
  31. package/dist/cjs/src/hooks/useInitializeProviders.test.d.ts +4 -0
  32. package/dist/cjs/src/hooks/useWallet.d.ts +4 -13
  33. package/dist/cjs/src/hooks/useWallet.test.d.ts +4 -0
  34. package/dist/cjs/src/index.d.ts +1 -1
  35. package/dist/cjs/src/store/state/clientStore.d.ts +2 -23
  36. package/dist/cjs/src/testUtils/createWrapper.d.ts +6 -0
  37. package/dist/cjs/src/testUtils/mockAccounts.d.ts +3 -0
  38. package/dist/cjs/src/testUtils/mockClients.d.ts +33 -0
  39. package/dist/cjs/src/types/index.d.ts +1 -0
  40. package/dist/cjs/src/types/node.d.ts +2 -1
  41. package/dist/cjs/src/types/providers.d.ts +71 -0
  42. package/dist/cjs/src/types/wallet.d.ts +5 -3
  43. package/dist/cjs/src/utils/clearAccounts.d.ts +1 -1
  44. package/dist/cjs/src/utils/encodeNFDTransactionArray.spec.d.ts +1 -0
  45. package/dist/cjs/src/utils/initializeProviders.d.ts +2 -12
  46. package/dist/cjs/src/utils/initializeProviders.test.d.ts +4 -0
  47. package/dist/cjs/src/utils/providers.d.ts +1 -1
  48. package/dist/cjs/src/utils/providers.spec.d.ts +1 -0
  49. package/dist/cjs/src/utils/reconnectProviders.d.ts +1 -5
  50. package/dist/cjs/src/utils/reconnectProviders.test.d.ts +1 -0
  51. package/dist/cjs/src/utils/types.d.ts +2 -0
  52. package/dist/esm/index.js +231 -130
  53. package/dist/esm/jest.config.d.ts +7 -0
  54. package/dist/esm/src/clients/algosigner/client.d.ts +3 -3
  55. package/dist/esm/src/clients/algosigner/types.d.ts +2 -8
  56. package/dist/esm/src/clients/base/base.d.ts +3 -2
  57. package/dist/esm/src/clients/base/index.d.ts +2 -2
  58. package/dist/esm/src/clients/daffi/client.d.ts +5 -4
  59. package/dist/esm/src/clients/daffi/types.d.ts +5 -7
  60. package/dist/esm/src/clients/defly/client.d.ts +6 -5
  61. package/dist/esm/src/clients/defly/types.d.ts +5 -7
  62. package/dist/esm/src/clients/exodus/client.d.ts +6 -5
  63. package/dist/esm/src/clients/exodus/types.d.ts +5 -10
  64. package/dist/esm/src/clients/index.d.ts +1 -1
  65. package/dist/esm/src/clients/kmd/client.d.ts +4 -5
  66. package/dist/esm/src/clients/kmd/types.d.ts +4 -9
  67. package/dist/esm/src/clients/mnemonic/client.d.ts +4 -5
  68. package/dist/esm/src/clients/mnemonic/types.d.ts +2 -9
  69. package/dist/esm/src/clients/myalgo/client.d.ts +6 -5
  70. package/dist/esm/src/clients/myalgo/types.d.ts +10 -12
  71. package/dist/esm/src/clients/pera/client.d.ts +6 -5
  72. package/dist/esm/src/clients/pera/types.d.ts +5 -7
  73. package/dist/esm/src/clients/{walletconnect → walletconnect2}/client.d.ts +8 -7
  74. package/dist/esm/src/clients/walletconnect2/constants.d.ts +6 -0
  75. package/dist/esm/src/clients/walletconnect2/index.d.ts +2 -0
  76. package/dist/esm/src/clients/walletconnect2/types.d.ts +38 -0
  77. package/dist/esm/src/clients/walletconnect2/utils.d.ts +2 -0
  78. package/dist/esm/src/hooks/index.d.ts +1 -0
  79. package/dist/esm/src/hooks/useInitializeProviders.d.ts +9 -0
  80. package/dist/esm/src/hooks/useInitializeProviders.test.d.ts +4 -0
  81. package/dist/esm/src/hooks/useWallet.d.ts +4 -13
  82. package/dist/esm/src/hooks/useWallet.test.d.ts +4 -0
  83. package/dist/esm/src/index.d.ts +1 -1
  84. package/dist/esm/src/store/state/clientStore.d.ts +2 -23
  85. package/dist/esm/src/testUtils/createWrapper.d.ts +6 -0
  86. package/dist/esm/src/testUtils/mockAccounts.d.ts +3 -0
  87. package/dist/esm/src/testUtils/mockClients.d.ts +33 -0
  88. package/dist/esm/src/types/index.d.ts +1 -0
  89. package/dist/esm/src/types/node.d.ts +2 -1
  90. package/dist/esm/src/types/providers.d.ts +71 -0
  91. package/dist/esm/src/types/wallet.d.ts +5 -3
  92. package/dist/esm/src/utils/clearAccounts.d.ts +1 -1
  93. package/dist/esm/src/utils/encodeNFDTransactionArray.spec.d.ts +1 -0
  94. package/dist/esm/src/utils/initializeProviders.d.ts +2 -12
  95. package/dist/esm/src/utils/initializeProviders.test.d.ts +4 -0
  96. package/dist/esm/src/utils/providers.d.ts +1 -1
  97. package/dist/esm/src/utils/providers.spec.d.ts +1 -0
  98. package/dist/esm/src/utils/reconnectProviders.d.ts +1 -5
  99. package/dist/esm/src/utils/reconnectProviders.test.d.ts +1 -0
  100. package/dist/esm/src/utils/types.d.ts +2 -0
  101. package/dist/index.d.ts +240 -254
  102. package/package.json +17 -18
  103. package/dist/cjs/src/clients/walletconnect/constants.d.ts +0 -2
  104. package/dist/cjs/src/clients/walletconnect/index.d.ts +0 -2
  105. package/dist/cjs/src/clients/walletconnect/types.d.ts +0 -55
  106. package/dist/esm/src/clients/walletconnect/constants.d.ts +0 -2
  107. package/dist/esm/src/clients/walletconnect/index.d.ts +0 -2
  108. package/dist/esm/src/clients/walletconnect/types.d.ts +0 -55
@@ -1,26 +1,5 @@
1
1
  /// <reference types="react" />
2
- import BaseWallet from '../../clients/base';
3
- declare const ClientContext: import("react").Context<Partial<{
4
- kmd: Promise<BaseWallet | null>;
5
- pera: Promise<BaseWallet | null>;
6
- daffi: Promise<BaseWallet | null>;
7
- myalgo: Promise<BaseWallet | null>;
8
- algosigner: Promise<BaseWallet | null>;
9
- defly: Promise<BaseWallet | null>;
10
- exodus: Promise<BaseWallet | null>;
11
- walletconnect: Promise<BaseWallet | null>;
12
- mnemonic: Promise<BaseWallet | null>;
13
- }> | null>;
2
+ declare const ClientContext: import("react").Context<Partial<Record<import("../..").PROVIDER_ID, import("../../clients/base/base").default | null>> | null>;
14
3
  export { ClientContext };
15
- declare const _default: import("react").Provider<Partial<{
16
- kmd: Promise<BaseWallet | null>;
17
- pera: Promise<BaseWallet | null>;
18
- daffi: Promise<BaseWallet | null>;
19
- myalgo: Promise<BaseWallet | null>;
20
- algosigner: Promise<BaseWallet | null>;
21
- defly: Promise<BaseWallet | null>;
22
- exodus: Promise<BaseWallet | null>;
23
- walletconnect: Promise<BaseWallet | null>;
24
- mnemonic: Promise<BaseWallet | null>;
25
- }> | null>;
4
+ declare const _default: import("react").Provider<Partial<Record<import("../..").PROVIDER_ID, import("../../clients/base/base").default | null>> | null>;
26
5
  export default _default;
@@ -0,0 +1,6 @@
1
+ import React, { ComponentType, ReactNode } from 'react';
2
+ interface CreatedWrapperProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare function createWrapper<P>(Wrapper: ComponentType<P>, props: P): React.FC<CreatedWrapperProps>;
6
+ export {};
@@ -0,0 +1,3 @@
1
+ import { Account } from 'src/types';
2
+ import { PROVIDER_ID } from 'src/constants';
3
+ export declare const mockAccounts: (providerId: PROVIDER_ID, qty?: number) => Account[];
@@ -0,0 +1,33 @@
1
+ import AlgoSignerClient from '../clients/algosigner/client';
2
+ import DaffiWalletClient from '../clients/daffi/client';
3
+ import DeflyWalletClient from '../clients/defly/client';
4
+ import ExodusClient from '../clients/exodus/client';
5
+ import KMDWalletClient from '../clients/kmd/client';
6
+ import MnemonicWalletClient from '../clients/mnemonic/client';
7
+ import MyAlgoWalletClient from '../clients/myalgo/client';
8
+ import PeraWalletClient from '../clients/pera/client';
9
+ import WalletConnectClient from '../clients/walletconnect2/client';
10
+ import { PROVIDER_ID } from '../constants';
11
+ import type { Account, ClientOptions } from '../types';
12
+ declare type ClientTypeMap = {
13
+ [PROVIDER_ID.ALGOSIGNER]: AlgoSignerClient;
14
+ [PROVIDER_ID.DAFFI]: DaffiWalletClient;
15
+ [PROVIDER_ID.DEFLY]: DeflyWalletClient;
16
+ [PROVIDER_ID.EXODUS]: ExodusClient;
17
+ [PROVIDER_ID.KMD]: KMDWalletClient;
18
+ [PROVIDER_ID.MNEMONIC]: MnemonicWalletClient;
19
+ [PROVIDER_ID.MYALGO]: MyAlgoWalletClient;
20
+ [PROVIDER_ID.PERA]: PeraWalletClient;
21
+ [PROVIDER_ID.WALLETCONNECT]: WalletConnectClient;
22
+ };
23
+ export declare const createMockClient: <T extends PROVIDER_ID>(providerId: T, clientOptions?: ClientOptions, accounts?: Array<Account>) => ClientTypeMap[T];
24
+ export declare const createAlgoSignerMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => AlgoSignerClient;
25
+ export declare const createDaffiMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => DaffiWalletClient;
26
+ export declare const createDeflyMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => DeflyWalletClient;
27
+ export declare const createExodusMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => ExodusClient;
28
+ export declare const createKmdMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => KMDWalletClient;
29
+ export declare const createMnemonicMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => MnemonicWalletClient;
30
+ export declare const createMyAlgoMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => MyAlgoWalletClient;
31
+ export declare const createPeraMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => PeraWalletClient;
32
+ export declare const createWalletConnectMockInstance: (clientOptions?: ClientOptions, accounts?: Array<Account>) => WalletConnectClient;
33
+ export {};
@@ -1,3 +1,4 @@
1
1
  export * from './api';
2
2
  export * from './node';
3
3
  export * from './wallet';
4
+ export * from './providers';
@@ -1,5 +1,6 @@
1
1
  import type algosdk from 'algosdk';
2
- export declare type Network = 'betanet' | 'testnet' | 'mainnet' | string;
2
+ export declare type PublicNetwork = 'betanet' | 'testnet' | 'mainnet';
3
+ export declare type Network = PublicNetwork | string;
3
4
  export declare type Txn = {
4
5
  apaa: Uint8Array;
5
6
  apas: number[];
@@ -0,0 +1,71 @@
1
+ import { PROVIDER_ID } from '../constants';
2
+ import type { PeraWalletConnect } from '@perawallet/connect';
3
+ import type { DeflyWalletConnect } from '@blockshake/defly-connect';
4
+ import type { DaffiWalletConnect } from '@daffiwallet/connect';
5
+ import type SignClient from '@walletconnect/sign-client';
6
+ import type MyAlgoConnect from '@randlabs/myalgo-connect';
7
+ import type { WalletConnectModal } from '@walletconnect/modal';
8
+ import { AlgodClientOptions, Network } from './node';
9
+ import type algosdk from 'algosdk';
10
+ import type { PeraWalletConnectOptions } from '../clients/pera/types';
11
+ import { DeflyWalletConnectOptions } from '../clients/defly/types';
12
+ import { ExodusOptions } from '../clients/exodus/types';
13
+ import { KmdOptions } from '../clients/kmd/types';
14
+ import { MyAlgoConnectOptions } from '../clients/myalgo/types';
15
+ import { WalletConnectModalOptions, WalletConnectOptions } from '../clients/walletconnect2/types';
16
+ import { DaffiWalletConnectOptions } from '../clients/daffi/types';
17
+ export declare type ProviderConfigMapping = {
18
+ [PROVIDER_ID.PERA]: {
19
+ clientOptions?: PeraWalletConnectOptions;
20
+ clientStatic?: typeof PeraWalletConnect;
21
+ };
22
+ [PROVIDER_ID.DAFFI]: {
23
+ clientOptions?: DaffiWalletConnectOptions;
24
+ clientStatic?: typeof DaffiWalletConnect;
25
+ };
26
+ [PROVIDER_ID.DEFLY]: {
27
+ clientOptions?: DeflyWalletConnectOptions;
28
+ clientStatic?: typeof DeflyWalletConnect;
29
+ };
30
+ [PROVIDER_ID.WALLETCONNECT]: {
31
+ clientOptions?: WalletConnectOptions;
32
+ clientStatic?: typeof SignClient;
33
+ modalStatic?: typeof WalletConnectModal;
34
+ modalOptions?: WalletConnectModalOptions;
35
+ };
36
+ [PROVIDER_ID.MYALGO]: {
37
+ clientOptions?: MyAlgoConnectOptions;
38
+ clientStatic?: typeof MyAlgoConnect;
39
+ };
40
+ [PROVIDER_ID.EXODUS]: {
41
+ clientOptions?: ExodusOptions;
42
+ };
43
+ [PROVIDER_ID.KMD]: {
44
+ clientOptions?: KmdOptions;
45
+ };
46
+ [PROVIDER_ID.ALGOSIGNER]: Record<string, never>;
47
+ [PROVIDER_ID.MNEMONIC]: Record<string, never>;
48
+ };
49
+ /**
50
+ * Enforces correct configuration given for each provider. For example,
51
+ * if `id` is `PROVIDER_ID.PERA`, then `clientOptions` must be of type
52
+ * `PeraWalletConnectOptions`.
53
+ *
54
+ * @todo install `tsd` to test TypeScript type definitions in CI
55
+ */
56
+ export declare type ProviderConfig<T extends keyof ProviderConfigMapping> = {
57
+ [K in T]: {
58
+ id: K;
59
+ } & ProviderConfigMapping[K];
60
+ }[T];
61
+ export declare type CommonInitParams = {
62
+ network?: Network;
63
+ algodOptions?: AlgodClientOptions;
64
+ algosdkStatic?: typeof algosdk;
65
+ };
66
+ export declare type NodeConfig = {
67
+ network: Network;
68
+ nodeServer: string;
69
+ nodeToken?: string;
70
+ nodePort?: string;
71
+ };
@@ -1,5 +1,5 @@
1
1
  import { PROVIDER_ID } from '../constants';
2
- import type BaseWallet from '../clients/base';
2
+ import type BaseClient from '../clients/base';
3
3
  export interface Account {
4
4
  providerId: PROVIDER_ID;
5
5
  name: string;
@@ -50,5 +50,7 @@ export declare type Metadata = {
50
50
  icon: string;
51
51
  isWalletConnect: boolean;
52
52
  };
53
- export declare type WalletClient = BaseWallet;
54
- export { PROVIDER_ID };
53
+ export declare type ClientOptions = Record<string, any>;
54
+ export declare type WalletClient = BaseClient;
55
+ export declare type SupportedProviders = Partial<Record<PROVIDER_ID, WalletClient | null>>;
56
+ export {};
@@ -1,2 +1,2 @@
1
- import { PROVIDER_ID } from '../types';
1
+ import { PROVIDER_ID } from '../constants';
2
2
  export declare const clearAccounts: (id: PROVIDER_ID) => void;
@@ -1,13 +1,3 @@
1
1
  import type algosdk from 'algosdk';
2
- import { PROVIDER_ID, WalletClient, Network } from '../types';
3
- declare type SupportedProviders = {
4
- [x: string]: Promise<WalletClient | null>;
5
- };
6
- declare type NodeConfig = {
7
- network: Network;
8
- nodeServer: string;
9
- nodeToken?: string;
10
- nodePort?: string;
11
- };
12
- export declare const initializeProviders: (providers?: PROVIDER_ID[], nodeConfig?: NodeConfig, algosdkStatic?: typeof algosdk) => SupportedProviders;
13
- export {};
2
+ import { NodeConfig, ProviderConfig, ProviderConfigMapping, SupportedProviders } from '../types';
3
+ export declare const initializeProviders: <T extends keyof ProviderConfigMapping>(providers?: (T | ProviderConfig<T>)[] | undefined, nodeConfig?: NodeConfig, algosdkStatic?: typeof algosdk) => Promise<SupportedProviders>;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ export {};
@@ -1,3 +1,3 @@
1
- import { PROVIDER_ID } from 'src/constants';
1
+ import { PROVIDER_ID } from '../constants';
2
2
  export declare const getActiveProviders: () => PROVIDER_ID[];
3
3
  export declare const isActiveProvider: (id: PROVIDER_ID) => boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,2 @@
1
- import { WalletClient } from '../types';
2
- declare type SupportedProviders = {
3
- [x: string]: Promise<WalletClient | null>;
4
- };
1
+ import type { SupportedProviders } from '../types';
5
2
  export declare const reconnectProviders: (providers: SupportedProviders) => Promise<void>;
6
- export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { PublicNetwork } from 'src/types';
2
+ export declare const isPublicNetwork: (network: string) => network is PublicNetwork;