/// <reference types="jquery" />
import { AdapterData, App, Desktop, FullModelOf, JsonErrorResponse, ModelAdapter, ModelOf, RemoteEvent, RemoteRequest, RemoteResponse, Session, SessionStartupResponse, Widget, WidgetModel } from '../index';
import 'jasmine-jquery';
declare global {
    export class SandboxSession extends Session {
        _processEvents(events: RemoteEvent[]): any;
        _requestToJson(request: RemoteRequest): string;
        _processSuccessResponse(message: RemoteResponse): any;
        _copyAdapterData(adapterData: Record<string, AdapterData>): any;
        _processStartupResponse(data: SessionStartupResponse): any;
        _resumeBackgroundJobPolling(): any;
        _processErrorJsonResponse(jsonError: JsonErrorResponse): any;
        _processErrorResponse(jqXHR: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, errorThrown: string, request: RemoteRequest): any;
    }
    function sandboxSession(options?: SandboxSessionOptions & ModelOf<Session>): SandboxSession;
    function linkWidgetAndAdapter(widget: Widget, adapterClass: (new () => ModelAdapter) | string): any;
    function mapAdapterData(adapterDataArray: AdapterData | WidgetModel | (AdapterData | WidgetModel)[]): Record<string, AdapterData>;
    function registerAdapterData(adapterDataArray: AdapterData | WidgetModel | (AdapterData | WidgetModel)[], session: SandboxSession): void;
    function removePopups(session: Session, cssClass?: string): void;
    function createSimpleModel<O>(objectType: new (model?: any) => O, session: Session, id?: string): FullModelOf<O> & {
        objectType: new (model?: any) => O;
        id: string;
        session: Session;
        parent: Widget;
    };
    function createSimpleModel(objectType: string, session: Session, id?: string): {
        objectType: string;
        id: string;
        session: Session;
        parent: Widget;
    };
    function mostRecentJsonRequest(): RemoteRequest;
    function sandboxDesktop(): any;
    function sendQueuedAjaxCalls(response?: JasmineAjaxResponse, time?: number): any;
    function receiveResponseForAjaxCall(request: JasmineAjaxRequest, response?: JasmineAjaxResponse): any;
    function uninstallUnloadHandlers(session: Session): any;
    function createPropertyChangeEvent(model: {
        id: string;
    }, properties: object): any;
    function sleep(duration?: number): JQuery.Promise<void>;
}
export interface SandboxSessionOptions {
    desktop?: ModelOf<Desktop>;
    renderDesktop?: boolean;
}
export declare const JasmineScout: {
    runTestSuite(context: any): void;
    startApp(App: new () => App): void;
};
//# sourceMappingURL=JasmineScout.d.ts.map