import { Address, Message, Transaction, TransactionOnNetwork } from "."; export interface IAccount { readonly address: Address; sign(data: Uint8Array): Promise; signTransaction(transaction: Transaction): Promise; verifyTransactionSignature(transaction: Transaction, signature: Uint8Array): Promise; signMessage(message: Message): Promise; verifyMessageSignature(message: Message, signature: Uint8Array): Promise; } export interface ITransactionFetcher { /** * Fetches the state of a {@link Transaction}. */ getTransaction(txHash: string): Promise; } export interface IPlainTransactionObject { nonce: number; value: string; receiver: string; sender: string; receiverUsername?: string; senderUsername?: string; guardian?: string; relayer?: string; gasPrice: number; gasLimit: number; data?: string; chainID: string; version: number; options?: number; signature?: string; guardianSignature?: string; relayerSignature?: string; } export interface INetworkConfig { minGasLimit: bigint; gasPerDataByte: bigint; gasPriceModifier: number; chainID: string; } export interface IGasLimitEstimator { estimateGasLimit(options: { transaction: Transaction; }): Promise; }