import { Name } from '@wharfkit/antelope';
import { App } from '../controllers/App';
import { LoginRequest, Serializable, WalletRequest } from '../util';
import { WalletRequestResponse } from '../util/response';
import { RequestsManager } from './requestsManager';
import { IUserRequestsManager } from '../types/User';
type WalletResponseMeta = {
    app: App;
    requiresLogin?: boolean;
};
export declare class WalletRequestAndResponseObject implements Serializable {
    request: WalletRequest;
    meta?: WalletResponseMeta;
    response?: WalletRequestResponse;
    constructor(arg: string | WalletRequest | WalletRequestAndResponse | WalletRequestAndResponseStrings);
    setRequest(request: WalletRequest): void;
    setMeta(meta: {
        app: App;
    }): void;
    setResponse(response: WalletRequestResponse): void;
    getRequestType(): string | undefined;
    getRequest(): WalletRequest<any>;
    getMetaOrThrow(): WalletResponseMeta;
    getAppOrThrow(): App;
    getResponse(): WalletRequestResponse;
    getRequestAndResponse(): WalletRequestAndResponse;
    toString(): string;
    toJSON(): string;
}
export declare class WalletRequestAndResponse {
    request: WalletRequest;
    response: WalletRequestResponse;
    static isInstance(arg: any): boolean;
}
export declare class WalletRequestAndResponseStrings {
    request: string;
    response: string;
    static isInstance(arg: any): boolean;
}
export declare class ResponsesManager {
    responses: WalletRequestAndResponseObject[];
    constructor(args: RequestsManager | WalletRequestAndResponse[]);
    fromRequestsManager(requestsManager: RequestsManager): void;
    fetchMeta(options?: {
        accountName?: Name;
    }): Promise<void>;
    createResponses(user: IUserRequestsManager): Promise<WalletRequestAndResponse[]>;
    verify(): Promise<void>;
    exportFinalResponses(): WalletRequestAndResponse[];
    getResponsesWithSameOriginOrThrow(): WalletRequestAndResponseObject[];
    getLoginResponsesWithSameOriginOrThrow(): WalletRequestAndResponseObject;
    getLoginResponseWithDifferentOriginOrThrow(): WalletRequestAndResponseObject;
    getDataSharingResponseWithSameOrigin(): WalletRequestAndResponseObject | undefined;
    getRequests(): WalletRequest[];
    getResponsesWithDifferentOriginOrThrow(): WalletRequestAndResponseObject[];
    getAccountsLoginRequestsIssuerOrThrow(): string;
    getAccountsLoginRequestOrThrow(): LoginRequest;
    getExternalLoginResponseOrThrow(): WalletRequestAndResponseObject;
}
export declare function castToWalletRequestResponseSubclass(response: WalletRequestResponse): WalletRequestResponse;
export {};
//# sourceMappingURL=responsesManager.d.ts.map