UNPKG

@ledgerhq/coin-tezos

Version:
324 lines 10.5 kB
/** * Fields common to tzkt account types that own a manager key (`user` and `delegate`): * these types carry manager-key metadata — an on-chain reveal state (`revealed`), a counter, * a balance, and (un)staked balances, plus the public key once it has been revealed. * `publicKey` is optional: an unrevealed account (`revealed: false`) has not published one yet. * See https://api.tzkt.io/#operation/Accounts_GetByAddress (schemas `User` / `Delegate`). */ type APIManagerAccountBase = { address: string; /** Absent until the account is revealed (`revealed: false` → no public key on-chain yet). */ publicKey?: string; revealed: boolean; balance: number; stakedBalance?: number; unstakedBalance?: number; stakingUpdatesCount?: number; counter: number; /** * The baker this account delegates to, if any. Present on plain wallets that have set a * delegate. We do not rely on it for registered bakers: a `delegate` account is its own * baker (self-delegated), and staking logic keys off `type === "delegate"` rather than this * field, so it's fine whether or not tzkt populates it. */ delegate?: { alias: string; address: string; active: boolean; }; }; /** * tzkt's `/v1/accounts/{address}` returns a discriminated union on `type` with seven * variants: `user`, `delegate`, `contract`, `ghost`, `empty`, `rollup`, `smart_rollup`. * We model only the ones we consume: `empty` (never appeared on-chain) plus the two * manager-key variants, `user` (plain wallet) and `delegate` (registered baker). A baker * is reported as `type: "delegate"`, NOT `"user"` — so any manager-key logic must accept * both (see {@link hasManagerKey}). */ export type APIAccount = { type: 'empty'; address: string; counter: number; } | (APIManagerAccountBase & { type: 'user'; delegationLevel: number; delegationTime: string; numTransactions: number; firstActivityTime: string; }) | (APIManagerAccountBase & { type: 'delegate'; }); /** tzkt account variants that own a manager key — both `user` and `delegate` qualify. */ export type APIManagerAccount = Extract<APIAccount, { type: 'user' | 'delegate'; }>; /** * True for account *types* that own a manager key and therefore carry the `revealed`, * `publicKey`, `counter`, and `balance` fields: plain wallets (`user`) and registered bakers * (`delegate`). This narrows on the account type, not on whether the key is already published — * it returns true for unrevealed `user` accounts too (check `revealed` separately for that). * `empty` accounts (and the non-manager `contract` / `ghost` / `rollup` types we don't model) * do not qualify. Use this instead of a bare `type === "user"` check so baker accounts aren't * mistaken for non-manager ones. */ export declare function hasManagerKey(account: APIAccount): account is APIManagerAccount; type CommonOperationType = { id: number; hash?: string; storageFee?: number; allocationFee?: number; bakerFee?: number; timestamp: string; level: number; block: string; gasLimit?: number; storageLimit?: number; status?: 'applied' | 'failed' | 'backtracked' | 'skipped'; }; /** * Source: https://api.tzkt.io/#operation/Accounts_GetOperations */ export type APITransactionType = CommonOperationType & { type: 'transaction'; amount: number; initiator: { address: string; } | undefined | null; sender: { address: string; } | undefined | null; target: { address: string; } | undefined | null; counter: number; }; export declare function isAPITransactionType(op: APIOperation): op is APITransactionType; export type APIDelegationType = CommonOperationType & { type: 'delegation'; amount: number; sender: { address: string; } | undefined | null; counter: number; prevDelegate: { address: string; } | undefined | null; newDelegate: { address: string; } | undefined | null; }; export declare function isAPIDelegationType(op: APIOperation): op is APIDelegationType; export type APIRevealType = CommonOperationType & { type: 'reveal'; sender: { address: string; } | undefined | null; counter: number; }; export declare function isAPIRevealType(op: APIOperation): op is APIRevealType; export type APIStakingType = Omit<CommonOperationType, 'block'> & { type: 'staking'; action: 'stake' | 'unstake' | 'finalize'; /** Present on succeeded ops; failed ops omit `amount` and only carry `requestedAmount`. */ amount?: number; requestedAmount?: number; counter: number; sender: { address: string; } | undefined | null; staker?: { address: string; } | undefined | null; baker?: { address: string; alias?: string; } | undefined | null; stakingUpdatesCount?: number; /** * `/accounts/{addr}/operations` returns the full block object inline * (with `.hash` and other fields); `/operations/staking` returns the * hash as a plain string. Consumers must narrow before reading `.hash`. */ block?: string | APIBlock; }; export declare function isAPIStakingType(op: APIOperation): op is APIStakingType; export type APIOriginationType = CommonOperationType & { type: 'origination'; sender: { address: string; } | undefined | null; counter: number; contractBalance: number; originatedContract?: { address: string; }; }; export declare function isAPIOriginationType(op: APIOperation): op is APIOriginationType; export type AccountsGetOperationsOptions = { lastId?: number; limit?: number; sort?: 'Descending' | 'Ascending'; 'level.ge': number; /** Exclusive upper bound on block level (pagination window). */ 'level.lt'?: number; /** Exclusive lower bound on block level (pagination window). */ 'level.gt'?: number; }; export type APIOperation = APITransactionType | APIRevealType | APIDelegationType | (CommonOperationType & { type: 'activation'; balance: number; }) | APIOriginationType | (CommonOperationType & { type: 'migration'; balanceChange: number; }) | APIStakingType | (CommonOperationType & { type: ''; }); /** * Unstake request as returned by https://api.tzkt.io/#operation/Staking_GetUnstakeRequests. * `firstTime`: ISO timestamp the request was opened; the 4-day unlock window starts here. */ export type APIUnstakeRequest = { id: number; cycle: number; baker: { address: string; alias?: string; }; staker: { address: string; }; firstTime: string; status: 'pending' | 'finalizable' | 'finalized'; /** Net amount actually returnable (mutez), accounting for slashing/rounding. */ actualAmount: number; requestedAmount?: number; }; export type APIBlock = { cycle: number; level: number; hash: string; timestamp: string; proto: number; payloadRound: number; blockRound: number; validations: number; deposit: number; rewardDelegated: number; rewardStakedOwn: number; rewardStakedEdge: number; rewardStakedShared: number; bonusDelegated: number; bonusStakedOwn: number; bonusStakedEdge: number; bonusStakedShared: number; fees: number; nonceRevealed: boolean; proposer: { address: string; }; producer: { address: string; }; software: { date: string; }; lbToggle: boolean; lbToggleEma: number; aiToggleEma: number; rewardLiquid: number; bonusLiquid: number; reward: number; bonus: number; priority: number; baker: { address: string; }; lbEscapeVote: boolean; lbEscapeEma: number; /** Hash of the previous block. Not included by default; request via TzKT `select` param if needed. */ prevHash?: string; }; export type TokenTransfersGetOptions = { limit?: number; sort?: 'Descending' | 'Ascending'; 'level.ge'?: number; 'level.lt'?: number; 'level.gt'?: number; /** Exclusive upper bound on transfer id (TzKT `id.lt`). Used for intra-level pagination when sort is Descending. */ 'id.lt'?: number; /** Exclusive lower bound on transfer id (TzKT `id.gt`). Used for intra-level pagination when sort is Ascending. */ 'id.gt'?: number; }; /** * A FA1.2 / FA2 token transfer event returned by `GET /v1/tokens/transfers`. * https://api.tzkt.io/#operation/Tokens_GetTokenTransfers */ export type APITokenTransfer = { /** Unique transfer identifier (monotonically increasing, usable as cursor). */ id: number; level: number; timestamp: string; token: { id: number; contract: { address: string; }; /** Stringified token ID (FA2 only; "0" for FA1.2). */ tokenId: string; standard: 'fa1.2' | 'fa2'; metadata?: { name?: string; symbol?: string; decimals?: string; }; }; /** Sender address. Null/undefined for minting events. */ from: { address: string; } | undefined | null; /** Receiver address. Null/undefined for burning events. */ to: { address: string; } | undefined | null; /** Transfer amount as a decimal string (integer, no magnitude applied). */ amount: string; /** * The `id` of the `APITransactionType` operation that triggered this transfer. * Use this to join token transfers back to their parent on-chain operation hash. * Undefined for implicit/protocol-level transfers. */ transactionId?: number; originationId?: number; }; /** * A FA1.2 / FA2 token balance event returned by `GET /v1/tokens/balances`. * https://api.tzkt.io/#operation/Tokens_GetTokenBalances */ export type APITokenBalance = { id: number; account: { address: string; }; token: { id: number; contract: { address: string; alias?: string; }; tokenId: string; standard: 'fa1.2' | 'fa2'; metadata?: { name?: string; symbol: string; decimals: string; }; }; balance: string; transfersCount: number; firstLevel: number; firstTime: string; lastLevel: number; lastTime: string; }; export {}; //# sourceMappingURL=types.d.ts.map