@talismn/balances-react 0.6.1 → 0.7.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 (37) hide show
  1. package/dist/declarations/src/atoms/allAddresses.d.ts +4 -0
  2. package/dist/declarations/src/atoms/balanceModules.d.ts +2 -0
  3. package/dist/declarations/src/atoms/balances.d.ts +6 -0
  4. package/dist/declarations/src/atoms/chainConnectors.d.ts +2 -0
  5. package/dist/declarations/src/atoms/chaindata.d.ts +34 -0
  6. package/dist/declarations/src/atoms/chaindataProvider.d.ts +5 -0
  7. package/dist/declarations/src/atoms/config.d.ts +18 -0
  8. package/dist/declarations/src/atoms/cryptoWaitReady.d.ts +1 -0
  9. package/dist/declarations/src/atoms/tokenRates.d.ts +3 -0
  10. package/dist/declarations/src/hooks/useBalances.d.ts +27 -3
  11. package/dist/declarations/src/hooks/useChainConnectors.d.ts +1 -12
  12. package/dist/declarations/src/hooks/useChaindata.d.ts +23 -7
  13. package/dist/declarations/src/hooks/useTokenRates.d.ts +4 -2
  14. package/dist/declarations/src/index.d.ts +80 -2
  15. package/dist/declarations/src/util/balancesPersist.d.ts +10 -0
  16. package/dist/declarations/src/util/dexieToRxjs.d.ts +6 -0
  17. package/dist/talismn-balances-react.cjs.dev.js +603 -631
  18. package/dist/talismn-balances-react.cjs.prod.js +603 -631
  19. package/dist/talismn-balances-react.esm.js +547 -611
  20. package/package.json +30 -24
  21. package/CHANGELOG.md +0 -477
  22. package/dist/declarations/src/hooks/index.d.ts +0 -49
  23. package/dist/declarations/src/hooks/useAllAddresses.d.ts +0 -4
  24. package/dist/declarations/src/hooks/useBalanceModules.d.ts +0 -8
  25. package/dist/declarations/src/hooks/useBalancesHydrate.d.ts +0 -1
  26. package/dist/declarations/src/hooks/useBalancesStatus.d.ts +0 -17
  27. package/dist/declarations/src/hooks/useChains.d.ts +0 -3
  28. package/dist/declarations/src/hooks/useDbCache.d.ts +0 -24
  29. package/dist/declarations/src/hooks/useDbCacheSubscription.d.ts +0 -13
  30. package/dist/declarations/src/hooks/useEnabledChains.d.ts +0 -8
  31. package/dist/declarations/src/hooks/useEvmNetworks.d.ts +0 -3
  32. package/dist/declarations/src/hooks/useTokens.d.ts +0 -3
  33. package/dist/declarations/src/hooks/useWithTestnets.d.ts +0 -8
  34. package/dist/declarations/src/util/index.d.ts +0 -2
  35. package/dist/declarations/src/util/provideContext.d.ts +0 -9
  36. package/dist/declarations/src/util/useMulticastSubscription.d.ts +0 -16
  37. package/dist/declarations/src/util/useSharedSubscription.d.ts +0 -9
@@ -0,0 +1,4 @@
1
+ /** Sets the list of addresses for which token balances will be fetched by the balances subscription */
2
+ export declare const allAddressesAtom: import("jotai").PrimitiveAtom<string[]> & {
3
+ init: string[];
4
+ };
@@ -0,0 +1,2 @@
1
+ import { AnyBalanceModule } from "@talismn/balances";
2
+ export declare const balanceModulesAtom: import("jotai").Atom<AnyBalanceModule[]>;
@@ -0,0 +1,6 @@
1
+ import { Balances } from "@talismn/balances";
2
+ import { BalancesPersistBackend } from "../util/balancesPersist";
3
+ export declare const allBalancesAtom: import("jotai").Atom<Promise<Balances>>;
4
+ export declare const balancesPersistBackendAtom: import("jotai").PrimitiveAtom<BalancesPersistBackend> & {
5
+ init: BalancesPersistBackend;
6
+ };
@@ -0,0 +1,2 @@
1
+ import { ChainConnectors } from "@talismn/balances";
2
+ export declare const chainConnectorsAtom: import("jotai").Atom<ChainConnectors>;
@@ -0,0 +1,34 @@
1
+ import { Token } from "@talismn/chaindata-provider";
2
+ export declare const chainsAtom: import("jotai").Atom<Promise<(import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain)[]>>;
3
+ export declare const chainsByIdAtom: import("jotai").Atom<Promise<Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>>>;
4
+ export declare const chainsByGenesisHashAtom: import("jotai").Atom<Promise<Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>>>;
5
+ export declare const evmNetworksAtom: import("jotai").Atom<Promise<(import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork)[]>>;
6
+ export declare const evmNetworksByIdAtom: import("jotai").Atom<Promise<Record<string, import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork>>>;
7
+ export declare const tokensAtom: import("jotai").Atom<Promise<Token[]>>;
8
+ export declare const tokensByIdAtom: import("jotai").Atom<Promise<{
9
+ [k: string]: Token;
10
+ }>>;
11
+ export declare const miniMetadatasAtom: import("jotai").Atom<Promise<import("@talismn/balances").MiniMetadata[]>>;
12
+ export declare const chaindataAtom: import("jotai").Atom<{
13
+ chains: (import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain)[];
14
+ chainsById: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
15
+ chainsByGenesisHash: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
16
+ evmNetworks: (import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork)[];
17
+ evmNetworksById: Record<string, import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork>;
18
+ tokens: Token[];
19
+ tokensById: {
20
+ [k: string]: Token;
21
+ };
22
+ miniMetadatas: import("@talismn/balances").MiniMetadata[];
23
+ } | Promise<{
24
+ chains: (import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain)[];
25
+ chainsById: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
26
+ chainsByGenesisHash: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
27
+ evmNetworks: (import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork)[];
28
+ evmNetworksById: Record<string, import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork>;
29
+ tokens: Token[];
30
+ tokensById: {
31
+ [k: string]: Token;
32
+ };
33
+ miniMetadatas: import("@talismn/balances").MiniMetadata[];
34
+ }>>;
@@ -0,0 +1,5 @@
1
+ import { ChaindataProvider } from "@talismn/chaindata-provider";
2
+ export declare const chaindataProviderAtom: import("jotai").Atom<ChaindataProvider>;
3
+ export declare const miniMetadataHydratedAtom: import("jotai").PrimitiveAtom<boolean> & {
4
+ init: boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ import { AnyBalanceModule, Hydrate } from "@talismn/balances";
2
+ import { CoingeckoConfig } from "@talismn/token-rates";
3
+ export declare const balanceModuleCreatorsAtom: import("jotai").PrimitiveAtom<((hydrate: Hydrate) => AnyBalanceModule)[]> & {
4
+ init: ((hydrate: Hydrate) => AnyBalanceModule)[];
5
+ };
6
+ export declare const onfinalityApiKeyAtom: import("jotai").PrimitiveAtom<string | undefined> & {
7
+ init: string | undefined;
8
+ };
9
+ export declare const coingeckoConfigAtom: import("jotai").WritableAtom<CoingeckoConfig, [Partial<CoingeckoConfig>], void>;
10
+ export declare const enableTestnetsAtom: import("jotai").PrimitiveAtom<boolean> & {
11
+ init: boolean;
12
+ };
13
+ export declare const enabledChainsAtom: import("jotai").PrimitiveAtom<string[] | undefined> & {
14
+ init: string[] | undefined;
15
+ };
16
+ export declare const enabledTokensAtom: import("jotai").PrimitiveAtom<string[] | undefined> & {
17
+ init: string[] | undefined;
18
+ };
@@ -0,0 +1 @@
1
+ export declare const cryptoWaitReadyAtom: import("jotai").Atom<Promise<boolean>>;
@@ -0,0 +1,3 @@
1
+ export declare const tokenRatesAtom: import("jotai").Atom<Promise<{
2
+ [k: string]: import("@talismn/token-rates").TokenRates;
3
+ }>>;
@@ -1,3 +1,27 @@
1
- import { AddressesByToken } from "@talismn/balances";
2
- import { Token } from "@talismn/chaindata-provider";
3
- export declare function useBalances(addressesByToken: AddressesByToken<Token> | null): any;
1
+ import { Balances } from "@talismn/balances";
2
+ import { BalancesPersistBackend } from "../util/balancesPersist";
3
+ export declare const useSetBalancesAddresses: (addresses: string[]) => void;
4
+ /**
5
+ * @name useBalances
6
+ * @description Hook to get the current balances state.
7
+ * @param persistBackend an optional BalancesPersistBackend backend to use for persisting the balances state. By default, indexedDB is used.
8
+ * @returns a Balances object containing the current balances state.
9
+ */
10
+ export declare const useBalances: (persistBackend?: BalancesPersistBackend) => Balances;
11
+ export type BalancesStatus = {
12
+ status: "live";
13
+ } | {
14
+ status: "fetching";
15
+ } | {
16
+ status: "stale";
17
+ staleChains: string[];
18
+ };
19
+ /**
20
+ * Given a collection of `Balances`, this hook returns a `BalancesStatus` summary for the collection.
21
+ *
22
+ * @param balances The collection of balances to get the status from.
23
+ * @returns An instance of `BalancesStatus` which represents the status of the balances collection.
24
+
25
+ */
26
+ export declare const useBalancesStatus: (balances: Balances) => BalancesStatus;
27
+ export declare const getStaleChains: (balances: Balances) => string[];
@@ -1,12 +1 @@
1
- /// <reference types="react" />
2
- import { ChainConnector } from "@talismn/chain-connector";
3
- import { ChainConnectorEvm } from "@talismn/chain-connector-evm";
4
- export type ChainConnectorsProviderOptions = {
5
- onfinalityApiKey?: string;
6
- };
7
- export declare const ChainConnectorsProvider: import("react").FC<ChainConnectorsProviderOptions & {
8
- children?: import("react").ReactNode;
9
- }>, useChainConnectors: () => {
10
- substrate: ChainConnector;
11
- evm: ChainConnectorEvm;
12
- };
1
+ export declare const useChainConnectors: () => import("@talismn/balances").ChainConnectors;
@@ -1,8 +1,24 @@
1
- /// <reference types="react" />
2
- import { ChaindataProviderExtension } from "@talismn/chaindata-provider-extension";
3
- export type ChaindataProviderOptions = {
4
- onfinalityApiKey?: string;
1
+ import { ChainId, EvmNetworkId, TokenId } from "@talismn/chaindata-provider";
2
+ export declare const useChaindataProvider: () => import("@talismn/chaindata-provider").ChaindataProvider;
3
+ export declare const useChaindata: () => {
4
+ chains: (import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain)[];
5
+ chainsById: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
6
+ chainsByGenesisHash: Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
7
+ evmNetworks: (import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork)[];
8
+ evmNetworksById: Record<string, import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork>;
9
+ tokens: import("@talismn/chaindata-provider").Token[];
10
+ tokensById: {
11
+ [k: string]: import("@talismn/chaindata-provider").Token;
12
+ };
13
+ miniMetadatas: import("@talismn/balances").MiniMetadata[];
5
14
  };
6
- export declare const ChaindataProvider: import("react").FC<ChaindataProviderOptions & {
7
- children?: import("react").ReactNode;
8
- }>, useChaindata: () => ChaindataProviderExtension;
15
+ export declare const useChains: () => Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
16
+ export declare const useChainsByGenesisHash: () => Record<string, import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain>;
17
+ export declare const useEvmNetworks: () => Record<string, import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork>;
18
+ export declare const useTokens: () => {
19
+ [k: string]: import("@talismn/chaindata-provider").Token;
20
+ };
21
+ export declare const useMiniMetadatas: () => import("@talismn/balances").MiniMetadata[];
22
+ export declare const useChain: (chainId?: ChainId) => import("@talismn/chaindata-provider").Chain | import("@talismn/chaindata-provider").CustomChain;
23
+ export declare const useEvmNetwork: (evmNetworkId?: EvmNetworkId) => import("@talismn/chaindata-provider").EvmNetwork | import("@talismn/chaindata-provider").CustomEvmNetwork;
24
+ export declare const useToken: (tokenId?: TokenId) => import("@talismn/chaindata-provider").Token;
@@ -1,3 +1,5 @@
1
1
  import { TokenId } from "@talismn/chaindata-provider";
2
- export declare function useTokenRates(): Record<string, import("@talismn/token-rates").TokenRates>;
3
- export declare function useTokenRate(tokenId?: TokenId): import("@talismn/token-rates").TokenRates | undefined;
2
+ export declare const useTokenRates: () => {
3
+ [k: string]: import("@talismn/token-rates").TokenRates;
4
+ };
5
+ export declare const useTokenRate: (tokenId?: TokenId) => import("@talismn/token-rates").TokenRates;
@@ -1,2 +1,80 @@
1
- export * from "./hooks";
2
- export * from "./util";
1
+ import { AnyBalanceModule, Hydrate } from "@talismn/balances";
2
+ import { ReactNode } from "react";
3
+ export { evmErc20TokenId, evmNativeTokenId, subNativeTokenId, subEquilibriumTokenId, subAssetTokenId, subPsp22TokenId, subTokensTokenId, } from "@talismn/balances";
4
+ export * from "./hooks/useBalances";
5
+ export * from "./hooks/useChainConnectors";
6
+ export * from "./hooks/useChaindata";
7
+ export * from "./hooks/useTokenRates";
8
+ export * from "./atoms/allAddresses";
9
+ export * from "./atoms/balanceModules";
10
+ export * from "./atoms/balances";
11
+ export * from "./atoms/chainConnectors";
12
+ export * from "./atoms/chaindata";
13
+ export * from "./atoms/chaindataProvider";
14
+ export * from "./atoms/config";
15
+ export * from "./atoms/cryptoWaitReady";
16
+ export * from "./atoms/tokenRates";
17
+ export type BalancesConfig = {
18
+ /**
19
+ * Optionally provide your own array of BalanceModules, when you don't want to use the defaults.
20
+ */
21
+ balanceModules?: Array<(hydrate: Hydrate) => AnyBalanceModule>;
22
+ /**
23
+ * This key will be used in place of any public onfinality RPCs
24
+ */
25
+ onfinalityApiKey?: string;
26
+ coingeckoApiUrl?: string;
27
+ coingeckoApiKeyName?: string;
28
+ coingeckoApiKeyValue?: string;
29
+ /** Enables balances fetching for tokens on testnet chains. */
30
+ withTestnets?: boolean;
31
+ /**
32
+ * A list of chain genesisHashes to fetch balances for.
33
+ *
34
+ * If undefined, balances will be fetched for all chains.
35
+ *
36
+ * Only applies to built-in chains, custom chains will always fetch balances.
37
+ *
38
+ * NOTE: This is an allowlist to enable the dapp to disable balances for chains it does not care about.
39
+ * Adding a chain here which is not already supported by the library will not automagically begin to fetch balances.
40
+ * It will just be ignored.
41
+ *
42
+ * In a similar vein, if you add testnets here then make sure you've also set the `useTestnets` prop to `true`.
43
+ *
44
+ * @example
45
+ * enabledChains={[
46
+ * // polkadot
47
+ * "0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
48
+ * // kusama
49
+ * "0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",
50
+ * // rococo
51
+ * "0x6408de7737c59c238890533af25896a2c20608d8b380bb01029acb392781063e",
52
+ * // westend
53
+ * "0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e",
54
+ * ]}
55
+ */
56
+ enabledChains?: string[];
57
+ /**
58
+ * A list of token ids to fetch balances for.
59
+ *
60
+ * If undefined, balances will be fetched for all tokens.
61
+ *
62
+ * If `enabledChains` is also defined, both filters will be applied,
63
+ * such that only the intersection of enabledChains and enabledTokens will be fetched.
64
+ *
65
+ * @example
66
+ * enabledTokens={[
67
+ * // DOT (polkadot relay chain)
68
+ * "polkadot-substrate-native",
69
+ * // USDC (polkadot asset hub)
70
+ * "polkadot-asset-hub-substrate-assets-1337-usdc",
71
+ * // ETH (ethereum mainnet)
72
+ * "1-evm-native",
73
+ * // GM (gm chain)
74
+ * "gm-substrate-tokens-gm",
75
+ * ]}
76
+ */
77
+ enabledTokens?: string[];
78
+ children?: ReactNode;
79
+ };
80
+ export declare const BalancesProvider: ({ balanceModules, onfinalityApiKey, coingeckoApiUrl, coingeckoApiKeyName, coingeckoApiKeyValue, withTestnets, enabledChains, enabledTokens, children, }: BalancesConfig) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { BalanceJson } from "@talismn/balances";
2
+ type PersistFn = (balances: BalanceJson[]) => Promise<void>;
3
+ type RetrieveFn = () => Promise<BalanceJson[]>;
4
+ export type BalancesPersistBackend = {
5
+ persist: PersistFn;
6
+ retrieve: RetrieveFn;
7
+ };
8
+ export declare const indexedDbBalancesPersistBackend: BalancesPersistBackend;
9
+ export declare const localStorageBalancesPersistBackend: BalancesPersistBackend;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Observable as DexieObservable } from "dexie";
2
+ import { Observable as RxjsObservable } from "rxjs";
3
+ /**
4
+ * Converts a dexie Observable into an rxjs Observable.
5
+ */
6
+ export declare function dexieToRxjs<T>(o: DexieObservable<T>): RxjsObservable<T>;