type LogLevel = 'info' | 'warn' | 'error' | 'debug';
interface LoggerOptions {
    backend?: Record<LogLevel, (text: string) => void>;
    indentString?: string;
}
/**
 * Create a new logger
 * @param options Logger options
 * @returns a logger instance
 */
declare function logger({ backend, indentString, }?: LoggerOptions): {
    indent: (fn: () => void) => void;
    /**
     * Print an info message
     */
    info: (...args: unknown[]) => void;
    /**
     * Print a success message
     */
    success: (...args: unknown[]) => void;
    /**
     * Print a listening message
     */
    listening: (...args: unknown[]) => void;
    /**
     * Print a debug message
     */
    debug: (...args: unknown[]) => void;
    /**
     * Print a fatal message
     */
    fatal: (...args: unknown[]) => void;
    /**
     * Print an error message
     */
    error: (...args: unknown[]) => void;
    /**
     * Print a warning message
     */
    warn: (...args: unknown[]) => void;
};
/**
 * The default logger
 *
 * @example
 * ```ts
 * log.info('Started server')
 * log.listening('on 3000')
 * log.fatal(new Error('Failed to start server'))
 * log.indent(() => {
 * 	log.info('Listening for requests')
 * 	log.success('Request received')
 * 	log.error('Request failed', new Error('Failed to process request'))
 * })
 * log.warn('Server is not responding')
 * log.debug('Server is responding')
 * ```
 */
declare const log: {
    indent: (fn: () => void) => void;
    /**
     * Print an info message
     */
    info: (...args: unknown[]) => void;
    /**
     * Print a success message
     */
    success: (...args: unknown[]) => void;
    /**
     * Print a listening message
     */
    listening: (...args: unknown[]) => void;
    /**
     * Print a debug message
     */
    debug: (...args: unknown[]) => void;
    /**
     * Print a fatal message
     */
    fatal: (...args: unknown[]) => void;
    /**
     * Print an error message
     */
    error: (...args: unknown[]) => void;
    /**
     * Print a warning message
     */
    warn: (...args: unknown[]) => void;
};

export { type LogLevel, type LoggerOptions, log, logger };
