import { DeepPartial, HttpResponse } from '@refinitiv-data/common';
import { socketCreator, StreamLoginParams } from '../../delivery/stream/stream-connection.interface';
import { AbstractSession } from '../abstract/abstract-session';
import { ApiEndpoints, SessionDefinition, SessionRequestParams } from '../session.interface';
import { PlatformSessionParams } from './platform-session-params.interface';
/**
 * Platform sessions are used to connect applications directly to the Refinitiv Data Platform or to a Refinitiv Real-Time Distribution System.
 * Not
 */
export declare class PlatformSession extends AbstractSession {
    private sessionParams;
    /**
     * Creates a definition object for the platform session.
     * @param params An object literal with properties necessary to create a definition of the platform session
     * @return New instance of session definition
     */
    static Definition(params: PlatformSessionParams): SessionDefinition;
    isEndpointSupported: boolean;
    private streamingTransport;
    private tokenProvider;
    private get config();
    private get baseUrl();
    private get tokenEndpoint();
    /**
     * This method is related to the endpoints overriding in the configration file.
     * 'sessions' section in the config file contains different types of sessions,
     * and each session might have a specific block to override common endpoint(s)
     * api/url/path for this particular session.
     * Overridden endpoint has a higher priority then common one.
     *
     * An empty object is returned if there are no overridden endpoints
     */
    getOverriddenEndpoints(): DeepPartial<ApiEndpoints>;
    /**
     * Enable cookies support
     */
    protected get cookieJarSupport(): boolean;
    /**
     * This is a method that sends a login request to open the session and then sets a timer for automatic token refresh.
     */
    protected initialize(): Promise<void>;
    protected request<T>(requestParams: SessionRequestParams): Promise<HttpResponse<T>>;
    /**
     *
     * @param api Name of streaming connection in the configuration file. ('streaming/pricing/main, streaming/trading/redi, ...')
     * @param protocol websocket protocol
     */
    protected getSocketCreators(api: string, protocol: string): Promise<socketCreator[]>;
    protected getStreamLoginParams(): StreamLoginParams;
    /**
     * This is a method that closes the session. It clears the timer for automatic token refresh.
     */
    protected cleanUp(): Promise<void>;
    private onRefreshSucceed;
    private onTokenExpired;
    private refreshStreamToken;
    private getStreamingTransport;
    private defineSessionProps;
    private registerTokenListeners;
    protected checkPipeErrors(): Promise<void>;
}
