import { DomainType } from '../../model/constant';
import { WsToken, WsTokenProvider } from '../interfaces/websocket';
import { DefaultTransport } from './default_transport';
import { RestResponse } from '../../model/common';
/**
 * TokenResponse interface defining the structure of the WebSocket token response
 */
interface TokenResponse {
    commonResponse?: RestResponse;
    token?: string;
    instanceServers?: WsToken[];
}
/**
 * Implementation of TokenResponse with validation and serialization methods
 */
export declare class TokenResponseImpl implements TokenResponse {
    commonResponse?: RestResponse;
    token?: string;
    instanceServers?: WsToken[];
    constructor(data?: Partial<TokenResponse>);
    /**
     * Sets the common response for the token response
     * @param response - RestResponse object to set
     */
    setCommonResponse(response: RestResponse): void;
    /**
     * Creates a TokenResponse instance from a JSON string
     * @param jsonStr - JSON string to parse
     * @returns TokenResponseImpl instance or null if parsing fails
     */
    static fromJSON(jsonStr: string): TokenResponseImpl | null;
    /**
     * Creates a TokenResponse instance from a dictionary object
     * @param obj - Object to convert to TokenResponse
     * @returns TokenResponseImpl instance or null if conversion fails
     */
    static fromDict(obj: Record<string, any> | null): TokenResponseImpl | null;
    fromJson(input: string): TokenResponseImpl;
    toJson(): string;
    fromObject(jsonObject: Object): TokenResponseImpl;
}
/**
 * Default implementation of the WebSocket token provider
 * Handles token retrieval and management for WebSocket connections
 */
export declare class DefaultWsTokenProvider implements WsTokenProvider {
    private readonly transport;
    private readonly domain;
    private readonly isPrivate;
    constructor(transport: DefaultTransport, domain: DomainType, isPrivate: boolean);
    /**
     * Retrieves WebSocket tokens from the server
     * @returns Promise resolving to array of WsToken objects
     * @throws Error if token retrieval fails
     */
    getToken(): Promise<WsToken[]>;
    /**
     * Closes the token provider and its associated transport
     * @returns A promise that resolves when the transport is closed
     */
    close(): Promise<void>;
}
export {};
