import { type ValueOrUpdateCallback } from "@gooddata/sdk-backend-base";
import { type IDashboardLayout, type IDashboardLayoutSection, type IDashboardLayoutSize } from "@gooddata/sdk-model";
import { type ILayoutItemPath, type ILayoutSectionPath } from "../../../../types.js";
import { type IDashboardLayoutFacade } from "../facade/interfaces.js";
import { type DashboardLayoutModifications, type DashboardLayoutSectionModifications, type DashboardLayoutSectionsSelector, type IDashboardLayoutBuilder, type IDashboardLayoutSectionBuilder } from "./interfaces.js";
/**
 * @alpha
 */
export declare class DashboardLayoutBuilder<TWidget> implements IDashboardLayoutBuilder<TWidget> {
    protected layoutFacade: IDashboardLayoutFacade<TWidget>;
    protected layoutFacadeConstructor: (layout: IDashboardLayout<TWidget>, layoutPath: ILayoutItemPath | undefined) => IDashboardLayoutFacade<TWidget>;
    protected constructor(layoutFacade: IDashboardLayoutFacade<TWidget>, layoutFacadeConstructor: (layout: IDashboardLayout<TWidget>, layoutPath: ILayoutItemPath | undefined) => IDashboardLayoutFacade<TWidget>);
    /**
     * Creates an instance of DashboardLayoutBuilder for particular layout.
     *
     * @param layout - layout to modify
     */
    static for<TWidget>(layout: IDashboardLayout<TWidget>, layoutPath?: ILayoutItemPath): DashboardLayoutBuilder<TWidget>;
    /**
     * Creates an instance of DashboardLayoutBuilder with empty layout.
     *
     * @param layoutPath - layout path in case of nested layout
     */
    static forNewLayout<TWidget>(layoutPath?: ILayoutItemPath): IDashboardLayoutBuilder<TWidget>;
    size(valueOrUpdateCallback: ValueOrUpdateCallback<IDashboardLayoutSize | undefined>): this;
    createSection(create?: (builder: IDashboardLayoutSectionBuilder<TWidget>) => IDashboardLayoutSectionBuilder<TWidget>, indexOrPath?: number | ILayoutSectionPath): this;
    private createSectionByPath;
    addSection(section: IDashboardLayoutSection<TWidget>, indexOrPath: number | ILayoutSectionPath | undefined): this;
    private addSectionByPath;
    modifySection(indexOrPath: number | ILayoutSectionPath, modify: DashboardLayoutSectionModifications<TWidget>): this;
    private modifySectionByPath;
    removeSection(indexOrPath: number | ILayoutSectionPath): this;
    private removeSectionByPath;
    moveSection(fromIndexOrPath: number | ILayoutSectionPath, toIndexOrPath: number | ILayoutSectionPath): this;
    private moveSectionByPath;
    removeSections(selector?: DashboardLayoutSectionsSelector<TWidget>): this;
    removeEmptySections(): this;
    modifySections(modify: DashboardLayoutSectionModifications<TWidget>, selector?: DashboardLayoutSectionsSelector<TWidget>): this;
    setLayout(valueOrUpdateCallback: ValueOrUpdateCallback<IDashboardLayout<TWidget>>): this;
    facade(): IDashboardLayoutFacade<TWidget>;
    modify(modifications: DashboardLayoutModifications<TWidget>): this;
    build(): IDashboardLayout<TWidget>;
}
//# sourceMappingURL=layout.d.ts.map