import type { SapUi5RootView, SapUi5OdataModel, SapUi5ResourceModel, SapUi5RoutingRoute, ViewTypes, SapUi5RoutingTargetSettings, SapUi5RoutingTargetBase, SapUi5RoutingTarget, Dependencies } from '../../../common/webapp/manifest/sapUi5';
import type { SapUiGenericAppPageSettings } from '../../../common/page';
import type { FlexibleColumnLayout } from '../../../common';
/**
 * @descriptionSrcURL https://ui5.sap.com/sdk/#/topic/e762257125b34513b0859faa1610b09e
 */
export interface FlexibleColumnLayoutV4 extends FlexibleColumnLayout {
    /**
     * Determines whether the Flexible Column Layout is limited to two columns. If set to true, the third level will be displayed in full screen mode rather than a third column.
     */
    limitFCLToTwoColumns?: boolean;
}
export interface SapUi5V4 {
    flexEnabled?: boolean;
    resources?: object;
    dependencies?: Dependencies;
    models?: {
        [key: string]: SapUi5OdataModel | SapUi5ResourceModel;
    };
    routing?: SapUi5RoutingV4;
    [key: string]: string | object | boolean;
    rootView?: SapUi5RootView;
    extends?: SapUi5ExtendsV4;
}
export interface SapUi5RoutingV4 {
    config?: SapUi5RoutingConfig;
    routes?: SapUi5RoutingRoute[];
    targets: SapUi5RoutingTargetsV4;
}
export type RoutingTargetOptions = SapUi5RoutingTarget | SapUi5RoutingTargetCustomPageV4 | SapUi5RoutingTargetCustomPageV4New;
export interface SapUi5RoutingTargetsV4 {
    [key: string]: RoutingTargetOptions;
}
export interface SapUi5RoutingTargetCustomPageV4New extends SapUi5RoutingTarget {
    options?: {
        settings: SapUi5RoutingTargetSettings & SapUi5CommonCustomPageV4;
    };
}
export interface SapUi5CommonCustomPageV4 extends SapUi5RoutingTargetBase {
    viewName: string;
    controlConfiguration?: SapUiGenericAppPageSettings;
}
export interface SapUi5RoutingTargetCustomPageV4 extends SapUi5CommonCustomPageV4 {
    viewId: string;
    viewLevel?: number;
    viewType?: ViewTypes;
    viewPath?: string;
    path?: string;
    title?: string;
}
export declare const FIORI_FCL_ROUTER_CLASS = "sap.f.routing.Router";
export type RouterClass = typeof FIORI_FCL_ROUTER_CLASS | string;
export interface SapUi5RoutingConfig {
    routerClass?: RouterClass;
    flexibleColumnLayout?: FlexibleColumnLayoutV4;
    viewType?: ViewTypes;
    viewPath?: string;
    path?: string;
}
export interface SapUi5DependenciesV4 {
    minUI5Version?: string;
    incompatibleLimitation?: boolean;
    libs?: SapUi5DependenciesLibV4;
}
export declare const SAPUI5_DEPENDENCY_LIB_SAP_F = "sap.f";
export interface SapUi5DependenciesLibV4 {
    [SAPUI5_DEPENDENCY_LIB_SAP_F]?: SapUi5DependencyLibV4;
    [key: string]: SapUi5DependencyLibV4;
}
export interface SapUi5DependencyLibV4 {
    minVersion?: string;
    lazy?: boolean;
}
export interface SapUi5ExtendsV4 {
    extensions?: SapUi5ExtensionsV4;
}
export declare const SAPUI5_CONTROLLER_EXTENSION = "sap.ui.controllerExtensions";
export declare const SAPUI5_VIEW_EXTENSION_OBJECT_PAGE = "sap.fe.templates.ObjectPage.ObjectPageController";
export declare const SAPUI5_VIEW_EXTENSION_LIST_REPORT = "sap.fe.templates.ListReport.ListReportController";
export interface SapUi5ExtensionsV4 {
    [SAPUI5_CONTROLLER_EXTENSION]?: SapUi5ControllerExtensionsV4;
}
export interface SapUi5ControllerExtensionsV4 {
    [SAPUI5_VIEW_EXTENSION_OBJECT_PAGE]?: SapUi5ControllerExtensionV4;
    [SAPUI5_VIEW_EXTENSION_LIST_REPORT]?: SapUi5ControllerExtensionV4;
    [key: string]: SapUi5ControllerExtensionV4;
}
export interface SapUi5ControllerExtensionV4 {
    controllerName?: string;
    controllerNames?: string[];
}
//# sourceMappingURL=sapUi5.d.ts.map