import { IServiceClient } from './Interfaces';
import { DeviceInfo, DocumentInfo, PageInfo, ParameterInfo, EmailInfo, SearchInfo, SearchResult, RenderingExtension } from './Models';
export declare class ServiceClientLoginInfo {
    url: string;
    username: string;
    password: string;
    constructor(url: string, username: string, password: string);
}
export declare class ServiceClientOptions {
    serviceUrl: string;
    loginInfo: ServiceClientLoginInfo | null;
    constructor(serviceUrl: string, loginInfo?: ServiceClientLoginInfo | null);
}
export declare class ServiceClient implements IServiceClient {
    private loginPromise?;
    private options;
    constructor(options: ServiceClientOptions);
    private validateClientID;
    private authenticatedGet;
    private authenticatedPost;
    private authenticatedDelete;
    login(): Promise<string>;
    private createLoginPromise;
    get(url: string): Promise<any>;
    setAccessToken(accessToken: string): void;
    registerClient(): Promise<string>;
    unregisterClient(clientId: string): Promise<any>;
    getParameters(clientId: string, report: string, parameterValues?: any): Promise<ParameterInfo[]>;
    createReportInstance(clientId: string, report: string, parameterValues?: any): Promise<string>;
    deleteReportInstance(clientId: string, instanceId: string): Promise<any>;
    createReportDocument(clientId: string, instanceId: string, format: string, deviceInfo: DeviceInfo, useCache: boolean, baseDocumentID: string, actionID: string): Promise<string>;
    sendDocument(clientId: string, instanceId: string, documentId: string, mailArgs: EmailInfo): Promise<any>;
    deleteReportDocument(clientId: string, instanceId: string, documentId: string): Promise<any>;
    getDocumentUrl(clientId: string, instanceId: string, documentId: string): string;
    getDocumentInfo(clientId: string, instanceId: string, documentId: string): Promise<DocumentInfo>;
    getPage(clientId: string, instanceId: string, documentId: string, pageNumber: number): Promise<PageInfo>;
    getDocumentFormats(): Promise<RenderingExtension[]>;
    getServiceVersion(): Promise<string>;
    getResource(clientId: string, instanceId: string, documentId: string, resourceId: string): Promise<any>;
    getSearchResults(clientId: string, instanceId: string, documentId: string, searchInfo: SearchInfo): Promise<SearchResult[]>;
    getServiceUrl(): string;
    keepClientAlive(clientId: string): Promise<any>;
    getClientsSessionTimeoutSeconds(): Promise<number>;
}
