import { Transaction } from '../../../domain/entities/transaction';
import { ITransactionRepository } from '../../../domain/repositories/transaction-repository';
import { INetworkRepository } from '../../../domain/repositories/network-repository';
import { IAddressRepository } from '../../../domain/repositories/address-repository';
import { ITokenRepository } from '../../../domain/repositories/token-repository';
import { CreateTransactionInput } from '../../dto/transaction.dto';
import { IDomainEventPublisher } from '../../ports/domain-event-publisher';
export declare class CreateTransactionUseCase {
    private readonly transactionRepository;
    private readonly networkRepository;
    private readonly addressRepository;
    private readonly tokenRepository;
    private readonly eventPublisher;
    constructor(transactionRepository: ITransactionRepository, networkRepository: INetworkRepository, addressRepository: IAddressRepository, tokenRepository: ITokenRepository, eventPublisher: IDomainEventPublisher);
    execute(input: CreateTransactionInput): Promise<Transaction>;
    /**
     * Resolves an address value to a known Address record.
     *
     * Third-party integrations often send the raw blockchain address, while the
     * rest of the system (balance calculation, notifications) expects the
     * internal address record id. This helper tries the id first, then falls
     * back to a lookup by raw address.
     */
    private resolveAddress;
    private normalizeData;
    private normalizeDataPath;
    private findKnownRecipientInData;
    private resolveFee;
}
//# sourceMappingURL=create-transaction.use-case.d.ts.map