import { Amount, BlockchainAddress, IsoDatetime } from '@dfns/datamodel/dist/Foundations'; import { BalanceKind, MetadataKind, SignatureKind, TransactionKind, TransactionStatus, TransferKind } from '..'; export type GetErc20BalanceRequest = { kind: BalanceKind.Erc20; contract: BlockchainAddress; blockNumber?: number; }; export type GetErc721BalanceRequest = { kind: BalanceKind.Erc721; contract: BlockchainAddress; blockNumber?: number; }; export type Erc721Balance = { count: number; tokenIds: string[]; blockNumber: number; }; export type TransferErc20Request = { kind: TransferKind.Erc20; contract: BlockchainAddress; to: BlockchainAddress; amount: Amount; }; export type TransferErc721Request = { kind: TransferKind.Erc721; contract: BlockchainAddress; to: BlockchainAddress; tokenId: string; }; export type BroadcastEvmTransactionRequest = { kind: TransactionKind.Evm; to?: BlockchainAddress; value?: Amount; data?: string; nonce?: number; }; export type BroadcastEip1559TransactionRequest = Omit & { kind: TransactionKind.Eip1559; gasLimit?: Amount; maxPriorityFeePerGas?: Amount; maxFeePerGas?: Amount; }; export type BroadcastEvmLegacyTransactionRequest = Omit & { kind: TransactionKind.EvmLegacy; gasLimit?: Amount; gasPrice?: Amount; }; export type Eip712Domain = { name?: string; version?: string; chainId?: number; verifyingContract?: BlockchainAddress; salt?: string; }; export type TypedDataField = { name: string; type: string; }; export type SignEip712TypedDataRequest = { kind: SignatureKind.Eip712; types: Record; domain: Eip712Domain; message: any; }; export type GetErc20MetadataRequest = { kind: MetadataKind.Erc20; contract: BlockchainAddress; }; export type Erc20Metadata = { kind: MetadataKind.Erc20; contract: BlockchainAddress; name?: string; symbol?: string; decimals: number; }; export type GetErc721MetadataRequest = { kind: MetadataKind.Erc721; contract: BlockchainAddress; }; export type Erc721Metadata = { kind: MetadataKind.Erc721; contract: BlockchainAddress; name?: string; symbol?: string; enumerable: boolean; }; export declare enum EvmLogKind { Erc20 = "Erc20", Erc721 = "Erc721", Unknown = "Unknown" } export type Erc20Log = { kind: EvmLogKind.Erc20; index: number; address: BlockchainAddress; from: BlockchainAddress; to: BlockchainAddress; value: Amount; }; export type Erc721Log = { kind: EvmLogKind.Erc721; index: number; address: BlockchainAddress; from: BlockchainAddress; to: BlockchainAddress; tokenId: string; }; export type EvmUntypedLog = { kind: EvmLogKind.Unknown; index: number; address: BlockchainAddress; topics: string[]; data: string; }; export type EvmLog = Erc20Log | Erc721Log | EvmUntypedLog; export type EvmTransactionReceipt = { gasUsed: Amount; effectiveGasPrice: Amount; fee: Amount; status: TransactionStatus; error?: string; }; export type EvmTransaction = { hash: string; blockNumber: number; timestamp: IsoDatetime; nonce: number; from: BlockchainAddress; to?: BlockchainAddress; value: Amount; data?: string; signature: string; gasLimit: Amount; gasPrice?: Amount; maxFeePerGas?: Amount; maxPriorityFeePerGas?: Amount; receipt?: EvmTransactionReceipt; logs?: EvmLog[]; }; export type EvmBlock = { hash: string; number: number; timestamp: IsoDatetime; transactions: EvmTransaction[]; };