@ledgerhq/coin-tezos
Version:
100 lines (84 loc) • 2.75 kB
text/typescript
import type {
Account,
AccountRaw,
Operation,
TransactionCommon,
TransactionCommonRaw,
TransactionStatusCommon,
TransactionStatusCommonRaw,
} from "@ledgerhq/types-live";
import type { BigNumber } from "bignumber.js";
import { TezosOperationMode } from "./model";
export type TezosResources = {
revealed: boolean;
counter: number;
};
export type TezosResourcesRaw = {
revealed: boolean;
counter: number;
};
export type NetworkInfo = {
family: "tezos";
fees: BigNumber;
};
export type NetworkInfoRaw = {
family: "tezos";
fees: string;
};
// TODO add a field for indicating if staking
export type Transaction = TransactionCommon & {
family: "tezos";
mode: TezosOperationMode;
networkInfo: NetworkInfo | null | undefined;
fees: BigNumber | null | undefined;
gasLimit: BigNumber | null | undefined;
storageLimit: BigNumber | null | undefined;
estimatedFees: BigNumber | null | undefined;
taquitoError: string | null | undefined;
};
export type TransactionRaw = TransactionCommonRaw & {
family: "tezos";
mode: TezosOperationMode;
networkInfo: NetworkInfoRaw | null | undefined;
fees: string | null | undefined;
gasLimit: string | null | undefined;
storageLimit: string | null | undefined;
estimatedFees: string | null | undefined;
taquitoError: string | null | undefined;
};
type CapacityStatus = "normal" | "full";
export type Baker = {
address: string;
name: string;
logoURL: string;
nominalYield: `${number} %`;
capacityStatus: CapacityStatus;
};
// type used by UI to facilitate business logic of current delegation data
export type Delegation = {
// delegator address
address: string;
// if not defined, we need to render "Unknown" on the UI. we don't know who is delegator.
baker: Baker | null | undefined;
// operation related to delegation (to know the date info)
operation: Operation;
// true if the delegation is pending (optimistic update)
isPending: boolean;
// true if a receive should inform it will top up the delegation
receiveShouldWarnDelegation: boolean;
// true if a send should inform it will top down the delegation
sendShouldWarnDelegation: boolean;
};
export type TezosAccount = Account & { tezosResources: TezosResources };
export function isTezosAccount(account: Account): account is TezosAccount {
return "tezosResources" in account;
}
export type TezosAccountRaw = AccountRaw & {
tezosResources: TezosResourcesRaw;
};
export type TransactionStatus = TransactionStatusCommon;
export type TransactionStatusRaw = TransactionStatusCommonRaw;
export type TezosOperation = Operation<TezosOperationExtra>;
export type TezosOperationExtra = {
id?: number; // Used as most recent operation id for incremental sync
};