import React from "react";
import { FinsembleIconType } from "../components/common/FinsembleIcon";
import { SelectConnectRule } from "../../platform/services/Interop/types";
import { AppDefinition } from "../../platform/services/Interop/types";
import { BootStage } from "../../platform/services/systemManager/types";
import { DeployInfo } from "../../FEA";
import { IconProp } from "@fortawesome/fontawesome-svg-core";
export type ApplicationRule = SelectConnectRule;
export type ApplicationSaveData = {
    name: string;
    title?: string;
    abstractPosition: number;
    addToWorkspace: boolean;
    alias: string;
    allowAutoArrange: boolean;
    allowGrouping: boolean;
    allowMinimize: boolean;
    allowMaximize: boolean;
    allowSnapping: boolean;
    allowTabbing: boolean;
    allowTiling: boolean;
    alwaysOnTop: boolean;
    appArguments?: string;
    appType?: string;
    autoConnect: boolean;
    cloneIcon: boolean;
    description?: string;
    enableAffinity?: boolean;
    enableAOT: boolean;
    enableTitleBar: boolean;
    height?: number | string;
    hideClose: boolean;
    hideMaximize: boolean;
    hideMinimize: boolean;
    iconURL?: string;
    intents: IntentEntry[];
    isEvergreen: boolean;
    launchableByUser: boolean;
    native_windowSpawnTimeout: number;
    opacity: number;
    path?: string;
    persistPath: boolean;
    persistURL: boolean;
    preloads: string[];
    resizable: boolean;
    rules?: ApplicationRule[];
    security: "trusted" | "untrusted";
    singleton: boolean;
    spawnOnStartup: boolean;
    tags?: string[];
    titlebarType: "injected" | "browserview";
    url?: string;
    width?: number | string;
    bootPhase?: BootStage;
    waitForInitialization?: boolean;
    serviceVisible?: boolean;
    devConsole?: boolean;
};
export type IntentEntry = {
    name: string;
    displayName: string;
    contexts?: string[];
};
export type ProjectSaveData = {
    applicationRoot: string;
    name: string;
    path?: string;
    user: UserSaveData;
    export: ExportSaveData;
};
export type ExportSaveData = {
    author: string;
    companyName: string;
    description: string;
} & ProjectAssets;
export type ProjectAssets = {
    toolbarIcon: string;
    installerIcon: string;
    taskbarIcon: string;
    systemTrayIcon: string;
    splashScreenImage: string;
};
export type UserSaveData = {
    firstName: string;
    lastName: string;
    company: string;
    email: string;
};
export type SDServerInfo = {
    enabled: boolean;
    applicationRoot?: string;
};
export declare enum ProgressState {
    Started = "Started",
    NotStarted = "NotStarted",
    Finished = "Finished",
    Error = "Error"
}
export type PublishProgress = {
    step: string;
    error: string;
    percentComplete: number;
    state: ProgressState;
};
export declare enum ApplicationSetupType {
    APP_ADD_SIMPLE = 0,
    APP_ADD_ADVANCED = 1,
    APP_EDIT_SIMPLE = 2,
    APP_EDIT_ADVANCED = 3
}
export declare enum AuthenticationType {
    OAUTH2 = "OAUTH2",
    PASSWORD = "PASSWORD"
}
export type AuthenticationProvider = {
    name: string;
    type: AuthenticationType;
    client_id: string | null;
    secret: string | null;
    enabled: boolean;
    redirect_uri: string;
    authorization_endpoint?: string;
    scope?: string;
    nonce: boolean;
};
export type PreloadType = {
    alias: string;
    url: string;
};
export type PreloadMap = {
    [alias: string]: PreloadDetail;
};
export type PreloadDetail = {
    url: string;
    autoload: preloadUsageType;
};
export type preloadUsageType = "launchable" | "all" | "none";
export type ProjectError = {
    viewId: string;
    message: string;
};
export type SmartDesktopDesignerState = {
    askAboutConvertingAppD: boolean;
    isGettingStarted: boolean;
    previousViewId: string | null;
    currentViewId: string | null;
    apps: AppDefinition[];
    newAppId: string | null;
    currentAppId: string | null;
    currentAppSetupType: null | ApplicationSetupType;
    currentPreload: PreloadType | null;
    menus: MenuType;
    preloads: PreloadMap;
    appdServers: AppDServerInfo[];
    projectInfo: ProjectSaveData;
    export: {
        uuid: string | null;
        isPublishing: boolean;
        deployInfo: DeployInfo | null;
        publishError: string | null;
    };
    authentication: {
        providers: AuthenticationProvider[];
    };
    errors: ProjectError[];
    isReviewingErrors: boolean;
    fsblVersion: string;
};
export type ViewInfo = {
    id: string;
    icon?: FinsembleIconType;
    faIcon?: IconProp;
    name: string;
    component: React.ReactNode;
    props?: any;
};
export type ViewSectionInfo = {
    showLabel: boolean;
    label: string;
    views: ViewInfo[];
};
export type MenuObjType = {
    displayName: string;
    applications: string[];
    position: number;
};
export type MenuType = {
    [key: string]: MenuObjType;
};
export type AppDApplicationTypes = {
    applications: AppDEntryType[];
    message: string;
};
export type AppDEntryType = {
    appId: string;
    name: string;
    title: string;
    description: string;
    categories: string[];
    version: string;
    tooltip: string;
    lang: string;
    icons: AppDEntryIconAndImageType[];
    screenshots: AppDEntryIconAndImageType[];
    contactEmail: string;
    supportEmail: string;
    moreInfo?: string;
    publisher: string;
    type: string;
    details: {
        url: string;
    };
    hostManifests?: any;
    interop?: any;
    localizedVersions?: any;
};
export type AppDEntryIconAndImageType = {
    src: string;
    size?: string;
    type?: string;
    label?: string;
};
export type AppDServerInfo = {
    url: string;
    displayName: string;
    iconURL?: string;
};
//# sourceMappingURL=smartDesktopDesignerTypes.d.ts.map