import { type Fr, type PrivateLog } from '@aztec/circuits.js';
import { type GetUnencryptedLogsResponse, type TxScopedL2Log } from './get_logs_response.js';
import { type LogFilter } from './log_filter.js';
/**
 * Interface of classes allowing for the retrieval of logs.
 */
export interface L2LogsSource {
    /**
     * Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
     * @param from - The block number from which to begin retrieving logs.
     * @param limit - The maximum number of blocks to retrieve logs from.
     * @returns An array of private logs from the specified range of blocks.
     */
    getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]>;
    /**
     * Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
     * @param tags - The tags to filter the logs by.
     * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
     * that tag.
     */
    getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
    /**
     * Gets unencrypted logs based on the provided filter.
     * @param filter - The filter to apply to the logs.
     * @returns The requested logs.
     */
    getUnencryptedLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse>;
    /**
     * Gets contract class logs based on the provided filter.
     * @param filter - The filter to apply to the logs.
     * @returns The requested logs.
     */
    getContractClassLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse>;
    /**
     * Gets the number of the latest L2 block processed by the implementation.
     * @returns The number of the latest L2 block processed by the implementation.
     */
    getBlockNumber(): Promise<number>;
}
//# sourceMappingURL=l2_logs_source.d.ts.map