import { AbstractIOTileAdapter } from './iotile-base-types';
export declare enum BridgeEnum {
    Connection = 1,
    Address = 2,
    RemoteUsername = 4,
    RemotePassword = 5,
    Topic = 6,
    TryPrivate = 7,
    TLS = 8
}
export declare enum TLSEnum {
    CAFile = 0,
    CertFile = 1,
    KeyFile = 2
}
/**
 * A proxy object to configure a local MQTT broker that is in bridge mode
 */
export declare class MQTTBridgeConfig {
    private adapter;
    private address;
    constructor(adapter: AbstractIOTileAdapter, address: number);
    /**
     * Brokers currently supported must be running with anonymous connections allowed,
          or require a username and/or password for auth. If you are using TLS, you should
          have sent the required files over using the TLS methods in this proxy first.
  
          Please note that we currently only support a single TLS connected broker. If you
          overwrite the TLS files that another connection is using, you will break it.
  
          You can add connections that have either plain or password authentication in any quantity.
  
     * @param {string} name Unique connection name.
     * @param {string} url IP or URL that the bridged broker is running on
     * @param {number} port Port used by the bridged broker. Defaults to 1883. Must be numeric.
     * @param {string} remoteUsername Optional username if the bridge requires one
     * @param {string} remotePassword Optional password if the bridge requires one
     * @param {boolean} tls Optionally set TLS mode. Send certificates first.
     */
    addBridge(name: string, url: string, port?: number, remoteUsername?: string | null, remotePassword?: string | null, tls?: boolean | null): Promise<void>;
    /**
     * Remove an existing bridge by name
     * @param {string} bridgeName Name of the bridge that you wish to remove
     */
    removeBridge(bridgeName: string): Promise<void>;
    /**
     * Your CA certificate. Needs to be pem encoded. Will overwrite an existing CA certificate.
     * @param {string} source The source data file sent as a string
     */
    sendCertfile(source: string): Promise<void>;
    /**
     * The CA file is typically obtained from your certificate authority. Will overwrite an existing CA file.
  
          It might show up with a name like rootCA.pem
  
     * @param {string} source The source data file sent as a string
     */
    sendCAFile(source: string): Promise<void>;
    /**
     * The actual text content of the entire mosquitto configuration file.
  
          Right now, this just contains bridge info, but in the future might also contain security settings,
          certificate file locations for various bridges, and other configurable items.
  
        @returns {Promise<string>} The full mosquitto config
     */
    listFullMosquittoConfig(): Promise<string>;
    /**
     * Your private keyfile. Should be pem encoded. Will overwrite an existing keyfile.
     * @param {string} source The source data file sent as a string
     */
    sendKeyFile(source: string): Promise<void>;
    private _clearPendingBridge;
    /**
     * Builds all enumerated bridge setting values
     */
    private _buildBridge;
    /**
     *
     * @param source The source data file sent as a string
     */
    private _sendTLSFile;
}
