import { AppDefinition, AppInstance, AppInstanceActionProgressResult, AppInstanceContext, AppInstanceInputInfo, AppInstanceOutputInfo, AppInstanceQuery, AppInstanceRejectInfo, AppInstanceScopedQuery, AppInstancesResult, AppInstancesScopedQueryResult, AppTemplate, GuidValue, ApiResponse } from "../models";
interface RouteTable {
    [pathOrAppInstanceId: string]: AppInstanceContext;
}
export declare class AppService {
    private httpClient;
    private omniaContext;
    static routes: RouteTable;
    getAppDefinitions: () => Promise<Array<AppDefinition>>;
    getTenantAppTemplates: () => Promise<Array<AppTemplate>>;
    getAppTemplates: (businessProfileId?: GuidValue) => Promise<Array<AppTemplate>>;
    getAppTemplate: (appTemplateId: GuidValue) => Promise<AppTemplate>;
    addOrUpdateAppTemplate: (appTemplate: AppTemplate) => Promise<AppTemplate>;
    updateAppTemplates: (appTemplates: AppTemplate[]) => Promise<AppTemplate[]>;
    removeAppTemplate: (appTemplateId: GuidValue) => Promise<void>;
    getByAppTemplateIdAsync: (appTemplateId: GuidValue) => Promise<Array<AppInstance>>;
    getProfileAppInstances: (appDefinitionId: GuidValue) => Promise<AppInstancesResult>;
    /**
     * This api can only be used by appropriate user for app instance administration
     * @param appDefinitionId
     * @param query
     * @param showInPublicListingsOnly
     */
    getProfileAppInstancesByQuery: (appDefinitionId: GuidValue, query: AppInstanceQuery) => Promise<AppInstancesResult>;
    /**
     * Query public app instances data. The api can be used by authorized user.
     * @param appDefinitionId
     * @param query
     */
    getProfilePublicAppInstancesByScopedQuery: (appDefinitionId: GuidValue, businessProfileId: GuidValue, scopedQuery: AppInstanceScopedQuery) => Promise<AppInstancesScopedQueryResult>;
    createAppInstance: (appTemplateId: GuidValue, inputInfo: AppInstanceInputInfo, contextParams: {
        [name: string]: string;
    }, businessProfileId?: GuidValue, useRouteProvisioning?: boolean) => Promise<AppInstance>;
    ensureAppInstanceProvisioning: (appInstanceId: GuidValue, inputInfo?: AppInstanceInputInfo) => Promise<AppInstance>;
    requestChangeProvisioning: (appInstanceId: GuidValue, inputInfo: AppInstanceInputInfo) => Promise<AppInstance>;
    updateAppInstance: (appInstanceId: GuidValue, inputInfo: AppInstanceInputInfo, contextParams?: {
        [name: string]: string;
    }) => Promise<AppInstance>;
    approveAppInstance: (appInstanceId: GuidValue, inputInfo: AppInstanceInputInfo, contextParams: {
        [name: string]: string;
    }) => Promise<AppInstance>;
    rejectAppInstance: (appInstanceId: GuidValue, inputInfo: AppInstanceRejectInfo) => Promise<AppInstance>;
    removeAppInstance: (appInstanceId: GuidValue) => Promise<AppInstance>;
    getAppInstanceById: (appInstanceId: GuidValue) => Promise<AppInstance>;
    getAppInstanceProgressByTransactionId: (transactionId: GuidValue) => Promise<AppInstanceActionProgressResult>;
    getAppInstanceOutputInfosByAppInstanceIds: (appInstanceIds: Array<string>) => Promise<Array<AppInstanceOutputInfo>>;
    getAppInstanceOutputInfosByAppDefinitionId: (appDefinitionId: GuidValue) => Promise<Array<AppInstanceOutputInfo>>;
    followAppInstance: (appInstanceId: GuidValue) => Promise<void>;
    unfollowAppInstance: (appInstanceId: GuidValue) => Promise<void>;
    addOrUpdateLastVisited: (appInstanceId: GuidValue) => Promise<void>;
    getAppContextByAppInstanceId: (appInstanceId: GuidValue) => Promise<AppInstanceContext>;
    getAppContext: (appPath: string) => Promise<AppInstanceContext>;
    updateAppInstanceProperties: (appInstanceId: GuidValue, inputInfo: AppInstanceInputInfo) => Promise<AppInstance>;
    private buildContextParamsUrl;
    private ensureRemoveAppInstnaceIdAndProfileId;
    private loadAppManifest;
    changeAppTemplate: (appInstance: AppInstance, appTemplateId: GuidValue) => Promise<ApiResponse<AppInstance>>;
}
export {};
