@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
133 lines • 4.33 kB
TypeScript
import { CounterValuesState } from "@ledgerhq/live-countervalues/lib/types";
import { CryptoOrTokenCurrency, Currency, Unit } from "@ledgerhq/types-cryptoassets";
import { AccountLike } from "@ledgerhq/types-live";
import { ReactNode } from "react";
import { Observable } from "rxjs";
import { WalletAPIAccount } from "../../wallet-api/types";
import { EnhancedModularDrawerConfiguration } from "../../wallet-api/ModularDrawer/types";
import { InterestRate } from "../../dada-client/entities";
import { MarketItemResponse } from "../../market/utils/types";
import BigNumber from "bignumber.js";
import { ApyType } from "../../dada-client/types/trend";
export type AssetType = {
name: string;
ticker: string;
id: string;
leftElement?: React.ReactNode;
rightElement?: React.ReactNode;
};
export type ProviderBalanceAsset = {
id: string;
name: string;
ticker: string;
balance: string;
fiatValue: string;
sortValue: number;
};
export type ProviderBalanceResultsMap = Map<string, ProviderBalanceAsset>;
export type AssetWithBalance = AssetType & {
sortValue?: number;
};
export type UseBalanceDeps = () => {
flattenedAccounts: AccountLike[];
state: CounterValuesState;
counterValueCurrency: Currency;
locale: string;
};
export type BalanceUI = {
balance: BigNumber;
fiatValue?: number;
fiatUnit?: Unit;
currency: CryptoOrTokenCurrency;
locale?: string;
discreet?: boolean;
};
export type CreateBalanceItem = (x: BalanceUI) => React.ReactNode;
export type CreateAccountsCountAndApy = (args: {
label?: string;
value?: number;
type?: ApyType;
}) => ReactNode;
export type NetworkWithCount = CryptoOrTokenCurrency & {
leftElement?: ReactNode;
count: number;
};
export type AccountDataItem = {
asset: CryptoOrTokenCurrency;
label: string;
count: number;
};
export type AccountModuleParams = {
assets: CryptoOrTokenCurrency[];
accounts$?: Observable<WalletAPIAccount[]>;
};
export type CreateAccountsCount = (args: {
label: string;
}) => ReactNode;
export type UseAccountData = (params: AccountModuleParams) => AccountDataItem[];
export type NetworkHookParams = {
assets: CryptoOrTokenCurrency[];
networks: CryptoOrTokenCurrency[];
accounts$?: Observable<WalletAPIAccount[]>;
};
export type NetworkHook = (params: NetworkHookParams) => Array<CryptoOrTokenCurrency & Network & {
balanceData?: BalanceUI;
count?: number;
}>;
export type NetworkConfigurationDeps = {
useAccountData: UseAccountData;
accountsCount: CreateAccountsCount;
accountsCountAndApy: CreateAccountsCountAndApy;
useBalanceDeps: UseBalanceDeps;
balanceItem: CreateBalanceItem;
};
export type LeftElementKind = "numberOfAccounts" | "numberOfAccountsAndApy" | "undefined";
export type RightElementKind = "balance" | "undefined";
export type Network = {
name: string;
id: string;
ticker: string;
leftElement?: React.ReactNode;
rightElement?: React.ReactNode;
};
export type CreateNetworkConfigurationHookProps = {
networksConfig: EnhancedModularDrawerConfiguration["networks"];
accounts$?: Observable<WalletAPIAccount[]>;
};
type Props = {
assetsConfiguration: EnhancedModularDrawerConfiguration["assets"];
};
export type AssetConfigurationDeps = {
ApyIndicator: (args: {
value: number;
type: ApyType;
}) => ReactNode;
MarketPercentIndicator: (args: {
percent: number;
}) => ReactNode;
MarketPriceIndicator: (args: {
price: string;
percent: number;
}) => ReactNode;
useBalanceDeps: UseBalanceDeps;
balanceItem: CreateBalanceItem;
assetsMap: Map<string, {
mainCurrency: CryptoOrTokenCurrency;
currencies: CryptoOrTokenCurrency[];
}>;
};
export type CreateAssetConfigurationHook = (AssetConfigurationDeps: AssetConfigurationDeps) => (props: Props) => (assets: CryptoOrTokenCurrency[]) => (CryptoOrTokenCurrency & AssetType)[];
export type AssetData = {
asset: {
id: string;
ticker: string;
name: string;
assetsIds: Record<string, string>;
metaCurrencyId?: string;
};
networks: CryptoOrTokenCurrency[];
interestRates?: InterestRate;
market?: Partial<MarketItemResponse>;
};
export {};
//# sourceMappingURL=type.d.ts.map