import { ApiRefreshTokenDto, IApi, IApiPayload, TokenAuthRQ } from "@etsoo/appscript";
import { ReactAppType } from "./ReactApp";
import { IServiceUser, ServiceUserToken } from "./IServiceUser";
import { IActionResult } from "@etsoo/shared";
/**
 * Service application interface
 */
export interface IServiceApp extends ReactAppType {
    /**
     * Core system API
     */
    readonly coreApi: IApi;
    /**
     * Core system origin
     */
    readonly coreOrigin: string;
    /**
     * Get token authorization request data
     * @param api API, if not provided, use the core API
     * @returns Result
     */
    getTokenAuthRQ(api?: IApi): TokenAuthRQ;
    /**
     * Load core system UI
     * @param tryLogin Try login or not
     */
    loadCore(tryLogin?: boolean): void;
    /**
     * Load URL with core origin
     * @param url URL
     */
    loadUrlEx(url: string): void;
    /**
     * Switch organization
     * @param organizationId Organization ID
     * @param fromOrganizationId From organization ID
     * @param payload Payload
     */
    switchOrg(organizationId: number, fromOrganizationId?: number, payload?: IApiPayload<IActionResult<IServiceUser & ServiceUserToken>>): Promise<IActionResult<IServiceUser & ServiceUserToken> | undefined>;
    /**
     *
     * @param user Current user
     * @param core Core system API token data
     * @param dispatch User state dispatch
     */
    userLoginEx(user: IServiceUser & ServiceUserToken, core?: ApiRefreshTokenDto, dispatch?: boolean): void;
}
