import { Database } from './database.js';
import { type HostBase } from './HostBase.js';
import { type databaseOptionsWithExternalSources, type FMHostMetadata, type loginOptionsClaris, type loginOptionsFileMaker, type loginOptionsOAuth } from '../types.js';
import { type DatabaseStructure } from '../databaseStructure.js';
import { type Moment } from 'moment';
/**
 * Represents a FileMaker host.
 * @implements {HostBase}
 */
export default class FMHost implements HostBase {
    readonly hostname: string;
    readonly timezoneOffsetFunc: (moment: Moment) => number;
    readonly verify: boolean;
    readonly protocol: 'http:' | 'https:';
    _metadata: FMHostMetadata | null;
    constructor(_hostname: string, timezoneOffset?: (moment: Moment) => number, verify?: boolean);
    get metadata(): FMHostMetadata;
    get dateFormat(): string;
    get timeFormat(): string;
    get timeStampFormat(): string;
    /**
     * Retrieves a list of databases from the FileMaker Server.
     *
     * @param {loginOptionsOAuth | loginOptionsFileMaker | loginOptionsClaris} [credentials] - Optional credentials required for authentication.
     * @throws {FMError} If the request to the FileMaker Server fails or if the response contains an error.
     * @returns {Promise<any[]>} A promise that resolves to an array of database objects if successful.
     */
    listDatabases(credentials?: loginOptionsOAuth | loginOptionsFileMaker | loginOptionsClaris): Promise<any>;
    /**
     * Creates a new database connection with the specified options.
     *
     * @template T - The type of the database structure.
     * @param {databaseOptionsWithExternalSources} data - The options for the database, including external sources.
     * @return {Database<T>} A new Database instance.
     */
    database<T extends DatabaseStructure>(data: databaseOptionsWithExternalSources): Database<T>;
    getMetadata(): Promise<FMHostMetadata>;
}
