import { UriBuilder } from './uri-builder';
/** Represents the defined API versions. */
export declare enum ApiVersion {
    /** Gets the API version for 2018-04-01. */
    v2018_04_01 = "2018-04-01",
    /** Gets the API version for 2019-02-01. */
    v2019_02_01 = "2019-02-01",
    /** Gets the intial API version (2018-04-01). */
    Initial = "2018-04-01",
    /** Gets the latest API version (2019-02-01). */
    Latest = "2019-02-01"
}
/** Represents an object that can build URL to the gateway. */
export declare class GatewayUrlBuilder {
    private builder;
    /**
     * Initializes a new instance of the GatewayUrlBuilder class.
     * @param uri The string or URL to initialize the builder from.
     */
    constructor(uri: string | URL);
    /**
     * Indicates the builder should use a specified API version.
     * @param apiVersion The API version to use.
     * @returns The original builder.
     */
    useApiVersion(apiVersion: ApiVersion): GatewayUrlBuilder;
    /**
     * Creates and returns a builder for a specific node.
     * @param name The name of the node to create a builder for.
     * @returns A new node URL builder.
     */
    node(name: string): NodeUrlBuilder;
}
/** Represents an object that can build URLs for a particular node. */
export declare class NodeUrlBuilder {
    private builder;
    /**
     * Initializes a new instance of the NodeUrlBuilder class.
     * @param builder The current UriBuilder.
     * @param node The name of the node the URL is being built for.
     */
    constructor(builder: UriBuilder, node: string);
    /** Makes the current URL builder relative from this point forward. */
    makeRelative(): NodeUrlBuilder;
    /** Gets a builder for the file transfer feature. **/
    fileTransfer(): FileTransferUrlBuilder;
}
/** Represents an object that builds the file URL for an API. */
export declare class ApiUrlBuilder {
    private builder;
    /**
     * Initializes a new instance of the ApiUrlBuilder class.
     * @param builder The current UriBuilder.
     */
    constructor(builder: UriBuilder);
    /** Builds and returns the current URL. */
    build(): string;
}
/** Represents an object that can build URLs for a particular feature. */
export declare abstract class FeatureUrlBuilder {
    protected builder: UriBuilder;
    /**
     * Initializes a new instance of the FeatureUrlBuilder class.
     * @param builder The current UriBuilder.
     * @param node The name of the feature the URL is being built for.
     */
    constructor(builder: UriBuilder, name: string);
}
/** Represents an object that can build URLs for file transfers. */
export declare class FileTransferUrlBuilder extends FeatureUrlBuilder {
    /**
     * Initializes a new instance of the FileTransferUrlBuilder class.
     * @param builder The current UriBuilder.
     */
    constructor(builder: UriBuilder);
    /**
     * Adds the specified file path to the URL.
     * @param path The path of the file to use.
     */
    file(path: string): ApiUrlBuilder;
}
