import type { TransferLog, TraceCall } from "./types";
import type { TokenBalanceChange } from "./types";
import { type TokenMetadataResponse } from "alchemy-sdk";
export declare let isFlashLoan: boolean;
export declare const revenueBalanceChanges: TokenBalanceChange;
export declare const costBalanceChanges: TokenBalanceChange;
export interface AddressParticipationData {
    toCount: number;
    fromCount: number;
    participation: number;
}
export declare const addressParticipation: {
    [address: string]: {
        [token: string]: AddressParticipationData;
    };
};
export declare let blockTimestamp: number;
export declare const detectedFlashloanContracts: string[];
/**
 * Update the builder address by fetching block information
 */
export declare const updateBuilderAddress: (blockNumber: number) => Promise<void>;
/**
 * Check if an address is a builder
 */
export declare const isBuilder: (address: string) => boolean;
/**
 * Initialize balance changes for a token and address
 */
export declare function initializeBalanceChanges(token: string, address: string, isRevenue: boolean, isSenderOrContract: boolean): void;
/**
 * Track address participation in transfers
 */
export declare function trackAddressParticipation(from: string, to: string, token: string): void;
/**
 * Process a transfer of tokens between addresses
 */
export declare function processTransfer(token: string, from: string, to: string, amount: bigint): void;
/**
 * Process a transfer log with error handling
 */
export declare function processTransferLog(log: TransferLog): void;
/**
 * Process trace calls recursively to catch ETH transfers
 */
export declare const processTraceCall: (calls: TraceCall[]) => Promise<void>;
/**
 * Setup the processor with contract and sender addresses
 */
export declare function setupProcessor(contract: string, sender: string): void;
export declare const getTokenMetadata: (contract: string) => Promise<TokenMetadataResponse>;
/**
 * Reset all state
 */
export declare function resetState(): void;
/**
 * Get transaction details from a transaction hash
 */
export declare function getTransactionDetails(txHash: string): Promise<{
    blockNumber: number;
    senderAddress: any;
    contractAddress: any;
    trace: unknown[];
    logs: TransferLog[];
    gasCostETH: number;
    gasCostWei: string;
}>;
