export interface FDC3 {
    isFdc3Definition(definition: any): IsFdc3DefinitionResult;
    parseToBrowserBaseAppData(definition: any): IOConnectBrowserBaseAppData;
    parseToDesktopAppConfig(definition: any): IOConnectDesktopAppConfig;
}
export interface ImageV1 {
    url?: string;
}
export interface IconV1 {
    icon?: string;
}
export interface Intent {
    name: string;
    displayName?: string;
    contexts?: string[];
    customConfig?: object;
    resultType?: string;
}
export interface PropertiesObject {
    [key: string]: unknown;
}
export interface FDC3DefinitionV1 {
    name: string;
    title?: string;
    version?: string;
    appId: string;
    manifest: string;
    manifestType: string;
    tooltip?: string;
    description?: string;
    contactEmail?: string;
    supportEmail?: string;
    publisher?: string;
    images?: ImageV1[];
    icons?: IconV1[];
    customConfig?: PropertiesObject;
    intents?: Intent[];
}
export type FDC3v2AppDefinitionTypes = "web" | "native" | "citrix" | "onlineNative" | "other";
export type SupportedVersions = "1.2" | "2.0";
export interface IconV2 {
    src: string;
    size?: string;
    type?: string;
}
export interface ImageV2 {
    src: string;
    size?: string;
    type?: string;
    label?: string;
}
interface FDC3Intent {
    contexts: string[];
    displayName?: string;
    resultType?: string;
    customConfig?: any;
}
export interface InteropIntentsV2 {
    listensFor?: {
        [intentName: string]: FDC3Intent;
    };
    raises?: {
        [intentName: string]: string[];
    };
}
export interface InteropUserChannelV2 {
    broadcasts?: string[];
    listensFor?: string[];
}
export interface InteropAppChannelV2 {
    name: string;
    description?: string;
    broadcasts?: string[];
    listensFor?: string[];
}
export interface InteropV2 {
    intents?: InteropIntentsV2;
    userChannels?: InteropUserChannelV2;
    appChannels?: InteropAppChannelV2[];
}
export interface LocalizedVersionDefinition {
    appId?: string;
    name?: string;
    type?: FDC3v2AppDefinitionTypes;
    details?: {
        url: string;
    };
    version?: string;
    title?: string;
    tooltip?: string;
    lang?: string;
    description?: string;
    categories?: string[];
    icons?: IconV2[];
    screenshots?: ImageV2[];
    contactEmail?: string;
    supportEmail?: string;
    moreInfo?: string;
    publisher?: string;
    customConfig?: PropertiesObject[];
    hostManifests?: any;
    interop?: InteropV2;
    localizedVersions?: {
        [languageTag: string]: LocalizedVersionDefinition;
    };
}
export interface FDC3DefinitionV2 {
    appId: string;
    name: string;
    type: FDC3v2AppDefinitionTypes;
    details: {
        url: string;
    };
    version?: string;
    title?: string;
    tooltip?: string;
    lang?: string;
    description?: string;
    categories?: string[];
    icons?: IconV2[];
    screenshots?: ImageV2[];
    contactEmail?: string;
    supportEmail?: string;
    moreInfo?: string;
    publisher?: string;
    customConfig?: PropertiesObject[];
    hostManifests?: any;
    interop?: InteropV2;
    localizedVersions?: {
        [languageTag: string]: LocalizedVersionDefinition;
    };
}
export interface FDC3DefinitionV2Extended extends FDC3DefinitionV2 {
    definitionVersion: string;
}
interface BaseApplicationFdc3Prop extends FDC3DefinitionV2 {
    definitionVersion: string;
}
export interface IOConnectBrowserDefinitionDetails {
    url: string;
    top?: number;
    left?: number;
    width?: number;
    height?: number;
}
export interface IOConnectHostManifestsDefinitionDetails {
    url?: string;
    top?: number;
    left?: number;
    width?: number;
    height?: number;
}
export interface IOConnectBrowserBaseAppData {
    name: string;
    type: string;
    createOptions: IOConnectBrowserDefinitionDetails;
    userProperties?: any;
    title?: string;
    version?: string;
    icon?: string;
    caption?: string;
    fdc3?: BaseApplicationFdc3Prop;
}
export interface IsFdc3DefinitionResult {
    isFdc3: boolean;
    version?: SupportedVersions;
    reason?: string;
}
export interface Fdc3Intent {
    contexts: string[];
    displayName?: string;
    resultType?: string;
}
export interface IntentInfo {
    name: string;
    displayName?: string;
    contexts: string[];
    resultType?: string;
}
export interface IOConnectDesktopAppConfig {
    name: string;
    type: DesktopAppDefinitionType;
    details: {
        url: string;
        [key: string]: any;
    };
    version?: string;
    title?: string;
    tooltip?: string;
    caption?: string;
    icon?: string;
    customProperties?: any;
    intents?: Intent[];
    fdc3?: FDC3DefinitionV2Extended;
}
export type DesktopAppDefinitionType = "window" | "exe" | "citrix" | "activity" | "node" | "canvas" | "workspaces" | "webGroup" | "clickonce" | "childWindow";
export interface IOConnectBrowserHostManifestDefinition {
    name?: string;
    type?: string;
    title?: string;
    version?: string;
    details?: IOConnectHostManifestsDefinitionDetails;
    customProperties?: PropertiesObject;
    icon?: string;
    caption?: string;
    intents?: Intent[];
    hidden?: boolean;
}
export {};
