UNPKG

viem

Version:

TypeScript Interface for Ethereum

251 lines (223 loc) • 6.31 kB
import type { Address } from 'abitype' import type { Block, BlockTag } from '../../types/block.js' import type { FeeValuesEIP1559 } from '../../types/fee.js' import type { Hex } from '../../types/misc.js' import type { Index, Quantity, RpcBlock, RpcTransaction as RpcTransaction_, RpcTransactionRequest as RpcTransactionRequest_, TransactionType, } from '../../types/rpc.js' import type { AccessList, Transaction as Transaction_, TransactionBase, TransactionRequest as TransactionRequest_, TransactionRequestBase, TransactionSerializable, TransactionSerializableBase, TransactionSerialized, } from '../../types/transaction.js' import type { NeverBy } from '../../types/utils.js' type CeloBlockExclude = | 'difficulty' | 'gasLimit' | 'mixHash' | 'nonce' | 'uncles' export type CeloBlockOverrides = { randomness: { committed: Hex revealed: Hex } } export type CeloBlock< TIncludeTransactions extends boolean = boolean, TBlockTag extends BlockTag = BlockTag, > = NeverBy< Block< bigint, TIncludeTransactions, TBlockTag, CeloTransaction<TBlockTag extends 'pending' ? true : false> >, CeloBlockExclude > & CeloBlockOverrides export type CeloRpcBlockOverrides = { randomness: { committed: Hex revealed: Hex } } export type CeloRpcBlock< TBlockTag extends BlockTag = BlockTag, TIncludeTransactions extends boolean = boolean, > = NeverBy< RpcBlock< TBlockTag, TIncludeTransactions, RpcTransaction<TBlockTag extends 'pending' ? true : false> >, CeloBlockExclude > & CeloRpcBlockOverrides export type CeloRpcTransaction<TPending extends boolean = boolean> = | RpcTransaction<TPending> | RpcTransactionCIP42<TPending> | RpcTransactionCIP64<TPending> export type CeloRpcTransactionRequest = | RpcTransactionRequest | RpcTransactionRequestCIP42 | RpcTransactionRequestCIP64 export type CeloTransaction<TPending extends boolean = boolean> = | Transaction<TPending> | TransactionCIP42<TPending> | TransactionCIP64<TPending> export type CeloTransactionRequest = | TransactionRequest | TransactionRequestCIP42 | TransactionRequestCIP64 export type CeloTransactionSerializable = | TransactionSerializableCIP42 | TransactionSerializableCIP64 | CeloTransactionSerializableBase export type CeloTransactionSerialized< TType extends CeloTransactionType = 'legacy', > = | TransactionSerialized<TType> | TransactionSerializedCIP42 | TransactionSerializedCIP64 export type CeloTransactionType = TransactionType | 'cip42' | 'cip64' type RpcTransaction<TPending extends boolean = boolean> = RpcTransaction_<TPending> & { feeCurrency: Address | null gatewayFee: Hex | null gatewayFeeRecipient: Address | null } type RpcTransactionRequest = RpcTransactionRequest_ & { feeCurrency?: Address gatewayFee?: Hex gatewayFeeRecipient?: Address } export type RpcTransactionCIP42<TPending extends boolean = boolean> = Omit< TransactionBase<Quantity, Index, TPending>, 'typeHex' > & FeeValuesEIP1559<Quantity> & { feeCurrency: Address | null gatewayFee: Hex | null gatewayFeeRecipient: Address | null type: '0x7c' } export type RpcTransactionCIP64<TPending extends boolean = boolean> = Omit< TransactionBase<Quantity, Index, TPending>, 'typeHex' > & FeeValuesEIP1559<Quantity> & { feeCurrency: Address | null gatewayFee?: undefined gatewayFeeRecipient?: undefined type: '0x7b' } export type RpcTransactionRequestCIP42 = TransactionRequestBase< Quantity, Index > & Partial<FeeValuesEIP1559<Quantity>> & { accessList?: AccessList feeCurrency?: Address gatewayFee?: Hex gatewayFeeRecipient?: Address type?: '0x7c' } export type RpcTransactionRequestCIP64 = TransactionRequestBase< Quantity, Index > & Partial<FeeValuesEIP1559<Quantity>> & { accessList?: AccessList feeCurrency?: Address gatewayFee?: undefined gatewayFeeRecipient?: undefined type?: '0x7b' } type Transaction<TPending extends boolean = boolean> = Transaction_< bigint, number, TPending > & { feeCurrency: Address | null gatewayFee: bigint | null gatewayFeeRecipient: Address | null } export type TransactionCIP42<TPending extends boolean = boolean> = TransactionBase<bigint, number, TPending> & FeeValuesEIP1559 & { feeCurrency: Address | null gatewayFee: bigint | null gatewayFeeRecipient: Address | null type: 'cip42' } export type TransactionCIP64<TPending extends boolean = boolean> = TransactionBase<bigint, number, TPending> & FeeValuesEIP1559 & { feeCurrency: Address | null gatewayFee?: undefined gatewayFeeRecipient?: undefined type: 'cip64' } type TransactionRequest = TransactionRequest_ & { feeCurrency?: Address gatewayFee?: bigint gatewayFeeRecipient?: Address } export type TransactionRequestCIP42 = TransactionRequestBase & Partial<FeeValuesEIP1559> & { accessList?: AccessList feeCurrency?: Address gatewayFee?: bigint gatewayFeeRecipient?: Address type?: 'cip42' } export type TransactionRequestCIP64 = TransactionRequestBase & Partial<FeeValuesEIP1559> & { accessList?: AccessList feeCurrency?: Address gatewayFee?: undefined gatewayFeeRecipient?: undefined type?: 'cip64' } export type TransactionSerializableCIP42< TQuantity = bigint, TIndex = number, > = TransactionSerializableBase<TQuantity, TIndex> & Partial<FeeValuesEIP1559<TQuantity>> & { accessList?: AccessList feeCurrency?: Address gatewayFeeRecipient?: Address gatewayFee?: TQuantity chainId: number type?: 'cip42' } export type TransactionSerializableCIP64< TQuantity = bigint, TIndex = number, > = TransactionSerializableBase<TQuantity, TIndex> & Partial<FeeValuesEIP1559<TQuantity>> & { accessList?: AccessList feeCurrency?: Address gatewayFee?: undefined gatewayFeeRecipient?: undefined chainId: number type?: 'cip64' } export type CeloTransactionSerializableBase = TransactionSerializable & { feeCurrency?: undefined gatewayFee?: undefined gatewayFeeRecipient?: undefined } export type TransactionSerializedCIP42 = `0x7c${string}` export type TransactionSerializedCIP64 = `0x7b${string}`