import { EventEmitter } from "../../stencil-public-runtime";
import { TreeViewItemModel } from "@genexus/chameleon-controls-library/dist/types/components/tree-view/types";
import { ObjectBaseData } from "../../common/types";
export declare class GxIdeDeploymentTool {
    #private;
    el: HTMLGxIdeDeploymentToolElement;
    checkedObjectsIds: string[];
    noObjects: boolean;
    selectedDeployTargetData: DeployTargetData;
    addedObjects: TypedObjectData[];
    allObjectTypes: ObjectTypeData[];
    treeModel: TreeViewItemModel[];
    allowDeploy: boolean;
    watchTreeModelHandler(newState: TreeViewItemModel[]): void;
    /**
     * Available deployment units list
     */
    readonly deploymentUnits: ObjectBaseData[];
    /**
     * Available target types list
     */
    readonly targetTypes: DeployTargetData[];
    /**
     * Defines the default target type (will be selected by default)
     */
    readonly defaultTargetTypeId?: string;
    /**
     * Defines id for new deployment unit option
     */
    readonly newDeploymentUnitId: string;
    /**
     * Array of possible object types
     */
    readonly objectTypes: ObjectTypeData[];
    watchObjectTypesHandler(newState: ObjectTypeData[]): void;
    /**
     * Callback invoked when the user wants to access the export options.
     */
    readonly getDeploymentUnitObjectsCallback: GetDeploymentUnitObjectsCallback;
    /**
     * Callback invoked when the user wants to access the export options.
     */
    readonly optionsCallback: OptionsCallback;
    /**
     * Callback invoked when user wants to start deploy process
     */
    readonly deployCallback: DeployCallback;
    /**
     * Callback invoked when the user wants to add objects.
     */
    readonly addObjectsCallback: AddObjectsCallback;
    /**
     * Callback invoked when the user wants to create a deployment unit.
     */
    readonly createDeploymentUnitCallback: CreateDeploymentUnitCallback;
    /**
     * This event is emitted once just after the component is fully loaded and the first render() occurs.
     */
    componentDidLoadEvent: EventEmitter<boolean>;
    /**
     * This event is emitted once just after the component is fully loaded and the first render() occurs
     */
    componentDidRenderFirstTime: EventEmitter<boolean>;
    componentWillLoad(): Promise<void>;
    componentDidRender(): void;
    render(): void;
}
export type AddObjectsCallback = () => Promise<TypedObjectData[]>;
export type OptionsCallback = (delpoymentUnitId: string, targetId: string) => Promise<void>;
export type GetDeploymentUnitObjectsCallback = (id: string) => Promise<TypedObjectData[]>;
export type DeployCallback = (data: DeployData) => Promise<boolean>;
export type CreateDeploymentUnitCallback = () => Promise<ObjectBaseData | undefined>;
export type ObjectTypeData = ObjectBaseData & {
    icon: string;
};
export type DeployTargetData = ObjectBaseData & {
    canCreatePackage: boolean;
    canDefineDisplayName: boolean;
    canSelectApplicationServer: boolean;
    applicationServers: ObjectBaseData[];
    generators: ObjectBaseData[];
    description: string;
};
export type TypedObjectData = ObjectBaseData & {
    type: string;
};
export type DeployData = {
    targetId: string;
    applicationServerId?: string;
    displayName?: string;
    generatorId?: string;
    onlyPackage: boolean;
    objects: string[];
};
