import type { DNSimple, QueryParams } from "./main";
import type * as types from "./types";
export declare class SecondaryDns {
    private readonly _client;
    constructor(_client: DNSimple);
    /**
     * List the primary servers in the account.
     *
     * This API is paginated. Call `listPrimaryServers.iterateAll(account, params)` to get an asynchronous iterator over individual items across all pages. You can also use `await listPrimaryServers.collectAll(account, params)` to quickly retrieve all items across all pages into an array. We suggest using `iterateAll` when possible, as `collectAll` will make all requests at once, which may increase latency and trigger rate limits.
     *
     * GET /{account}/secondary_dns/primaries
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#listPrimaryServers
     *
     * @param account The account id
     * @param params Query parameters
     * @param params.sort Sort results. Default sorting is ascending by id.
     */
    listPrimaryServers: {
        (account: number, params?: QueryParams & {
            sort?: "id:asc" | "id:desc" | "name:asc" | "name:desc";
        }): Promise<{
            data: Array<types.PrimaryServer>;
            pagination: types.Pagination;
        }>;
        iterateAll(account: number, params?: QueryParams & {
            sort?: "id:asc" | "id:desc" | "name:asc" | "name:desc";
        }): AsyncGenerator<types.PrimaryServer, any, any>;
        collectAll(account: number, params?: QueryParams & {
            sort?: "id:asc" | "id:desc" | "name:asc" | "name:desc";
        }): Promise<types.PrimaryServer[]>;
    };
    /**
     * Creates a primary server into the account.
     *
     * POST /{account}/secondary_dns/primaries
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#createPrimaryServer
     *
     * @param account The account id
     * @param params Query parameters
     */
    createPrimaryServer: (account: number, data: Partial<{
        name: string;
        ip: string;
        port: string;
    }>, params?: QueryParams & {}) => Promise<{
        data: types.PrimaryServer;
    }>;
    /**
     * Retrieves the details of an existing primary server.
     *
     * GET /{account}/secondary_dns/primaries/{primaryserver}
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#getPrimaryServer
     *
     * @param account The account id
     * @param primaryserver The primary server id
     * @param params Query parameters
     */
    getPrimaryServer: (account: number, primaryserver: number, params?: QueryParams & {}) => Promise<{
        data: types.PrimaryServer;
    }>;
    /**
     * Permanently deletes a primary server.
     *
     * DELETE /{account}/secondary_dns/primaries/{primaryserver}
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#removePrimaryServer
     *
     * @param account The account id
     * @param primaryserver The primary server id
     * @param params Query parameters
     */
    removePrimaryServer: (account: number, primaryserver: number, params?: QueryParams & {}) => Promise<{}>;
    /**
     * Link the primary server to a secondary zone.
     *
     * PUT /{account}/secondary_dns/primaries/{primaryserver}/link
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#linkPrimaryServer
     *
     * @param account The account id
     * @param primaryserver The primary server id
     * @param params Query parameters
     */
    linkPrimaryServer: (account: number, primaryserver: number, params?: QueryParams & {}) => Promise<{
        data: types.PrimaryServer;
    }>;
    /**
     * Unlink the primary server from a secondary zone.
     *
     * PUT /{account}/secondary_dns/primaries/{primaryserver}/unlink
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#unlinkPrimaryServer
     *
     * @param account The account id
     * @param primaryserver The primary server id
     * @param params Query parameters
     */
    unlinkPrimaryServer: (account: number, primaryserver: number, params?: QueryParams & {}) => Promise<{
        data: types.PrimaryServer;
    }>;
    /**
     * Creates a secondary zone into the account.
     *
     * POST /{account}/secondary_dns/zones
     *
     * @see https://developer.dnsimple.com/v2/secondary-dns/#createSecondaryZone
     *
     * @param account The account id
     * @param params Query parameters
     */
    createSecondaryZone: (account: number, data: Partial<{
        name: string;
    }>, params?: QueryParams & {}) => Promise<{
        data: types.Zone;
    }>;
}
