/**
 * The following a sample of a response from the messaging config service:
 {
    "pubchannel": "21b08ae1-93f2-430c-b97b-a4e03eb2b1eb",
    "subchannel": "b4d736cb-928d-4ee0-bb15-c7436e01d01a",
    "pubtoken": "0d21242f-3f59-4ca3-a21e-15eaf9a46174",
    "subtoken": "0d21242f-3f59-4ca3-a21e-15eaf9a46174",
    "provider": "pubnub",
    "providerinfo": {
        "pubkey": "pub-c-9e097035-c549-4aa7-921c-6fe7b56ac570",
        "subkey": "sub-c-7332afac-2fe2-11e5-9a04-0619f8945a4f",
        "usessl": true,
        "serviceurl": "pubsub.pubnub.com",
        "timeout": 5,
        "maxsize": 32000,
        "heartbeat": 60,
        "ttl": 0
    },
    "providers": [
        {
            "provider": "websocket",
            "providerinfo": {
                "range": 2,
                "ports": [
                    10004,
                    20004
                ],
                "serviceurl": "transfer.software",
                "maxsize": 32000
            }
        },
        {
            "pubchannel": "21b08ae1-93f2-430c-b97b-a4e03eb2b1eb",
            "subchannel": "b4d736cb-928d-4ee0-bb15-c7436e01d01a",
            "pubtoken": "0d21242f-3f59-4ca3-a21e-15eaf9a46174",
            "subtoken": "0d21242f-3f59-4ca3-a21e-15eaf9a46174",
            "provider": "pubnub",
            "providerinfo": {
                "pubkey": "pub-c-9e097035-c549-4aa7-921c-6fe7b56ac570",
                "subkey": "sub-c-7332afac-2fe2-11e5-9a04-0619f8945a4f",
                "usessl": true,
                "serviceurl": "pubsub.pubnub.com",
                "timeout": 5,
                "maxsize": 32000,
                "heartbeat": 60,
                "ttl": 0
            }
        }
    ]
  }
 *
 * note the redundancy for the pubnub data. I suspect this is for the benefit of older apps that do not have
 * "dual channel support."
 *
 * Anyway, this is leads to the complex generics interaction below.
 */
import EncryptionInfo from './EncryptionInfo';
export declare type ParamsBase<PI extends ProviderInfoBase> = {
    provider: string;
    providerinfo: PI;
};
export declare type ProviderInfoBase = {
    serviceurl: string;
    maxsize: number;
};
export declare type PubnubProviderInfo = ProviderInfoBase & {
    pubkey: string;
    subkey: string;
    usessl: boolean;
    timeout: number;
    heartbeat: number;
    ttl: number;
};
export declare type WebSocketProviderInfo = ProviderInfoBase & {
    range: number;
    ports: number[];
};
export declare type WebSocketParams = ParamsBase<WebSocketProviderInfo> & {
    provider: string;
};
export declare type PubnubParams = ParamsBase<PubnubProviderInfo> & {
    pubchannel: string;
    subchannel: string;
    pubtoken: string;
    subtoken: string;
    provider: string;
    channel?: string;
};
export declare type SingleChannelParams = PubnubParams | WebSocketParams;
export declare type MessagingConfig = PubnubParams & {
    providers: SingleChannelParams[];
    encryptionInfo?: EncryptionInfo;
    sessionid?: string;
};
//# sourceMappingURL=MessagingConfig.d.ts.map