import type { ImapFlow } from '../imap-flow.js';
import type { MailboxObject, MailboxOpenOptions } from '../types.js';
/**
 * Options for SELECT/EXAMINE: the public open options plus the QRESYNC resynchronization
 * parameters, which are only honored when the QRESYNC extension has been enabled
 */
export interface SelectOptions extends MailboxOpenOptions {
    /** QRESYNC modseq value to fetch changes since */
    changedSince?: bigint | number | string | undefined;
    /** QRESYNC UID validity value */
    uidValidity?: bigint | number | string | undefined;
}
/**
 * Selects or examines a mailbox, making it the current mailbox for subsequent operations.
 *
 * @param connection - IMAP connection instance
 * @param path - Mailbox path to select
 * @param options - Select options
 * @param options.readOnly - If true, use EXAMINE instead of SELECT (read-only access)
 * @param options.changedSince - QRESYNC modseq value to fetch changes since
 * @param options.uidValidity - QRESYNC UID validity value
 * @returns Mailbox info object with path, flags, exists, uidNext, uidValidity, highestModseq, etc., or undefined if preconditions not met
 * @throws If the SELECT/EXAMINE command fails
 */
export default function select(connection: ImapFlow, pathInput: string | string[], options?: SelectOptions | undefined): Promise<MailboxObject | undefined>;
