import { BaseContract, ContractFactory, ContractTransaction, TransactionReceipt, TransactionRequest } from 'ethers'; export interface TransactionProvider { estimateGas: (tx: TransactionRequest) => Promise; call: (tx: TransactionRequest) => Promise; resolveName: (name: string) => Promise; } export interface TransactionSigner extends TransactionProvider { sendTransaction: (tx: TransactionRequest) => Promise; } export declare function RequireSigner(_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor; export declare function RequireSigner any>(value: TFn, _context: ClassMethodDecoratorContext): TFn; export declare class Transaction { readonly data: ContractTransaction; receipt?: TransactionReceipt; private readonly signer; private readonly waitCallback; constructor(data: ContractTransaction, signer: TransactionSigner | TransactionProvider, waitCallback: (receipt: TransactionReceipt) => Promise); estimateGas(): Promise; wait(confirmations?: number): Promise; } export declare class Base { contract: C; protected signer?: TransactionSigner | TransactionProvider; constructor(factory: ContractFactory, address: string, signer?: TransactionSigner | TransactionProvider); connect(signer: TransactionSigner | TransactionProvider): this; getChainId(): Promise; }