import { DisplayBreakpointCodes } from "../Enums";
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { Layout } from "../Layout";
import { MultilingualString } from "../MultilingualString";
import { DataToVersion, IVersionedData, IVersionedDataIdentifier, IVersionReference } from "../VersionedData";
export declare enum VersionedLayoutId {
}
export declare enum VersionedAlternateLayoutId {
}
export interface VersionedLayout {
    readonly id: VersionedLayoutId;
    title?: MultilingualString;
    readonly versionedDataIdentifier: IVersionedDataIdentifier;
    readonly publishedVersionReference: IVersionReference;
    readonly parentLayoutId?: VersionedLayoutId;
    readonly appInstanceId?: GuidValue;
    readonly layoutTypeId: GuidValue;
    urlSegment: string;
    readonly businessProfileId?: GuidValue;
    readonly alternateLayouts: VersionedAlternateLayout[];
    readonly deletedAt?: string;
}
export interface VersionedAlternateLayout {
    readonly id: VersionedAlternateLayoutId;
    title: string;
    readonly versionedDataIdentifier: IVersionedDataIdentifier;
    readonly publishedVersionReference: IVersionReference;
    readonly versionedLayoutId: VersionedLayoutId;
}
export interface AppScopedVersionedLayoutUrlValidationRequest {
    appInstanceId: GuidValue;
    ignoreFromLayoutId?: VersionedLayoutId;
    urlSegment: string;
}
export interface DisplayBreakpointVersionedAlternateLayoutMapping {
    [DisplayBreakpointCodes.ExtraSmall]?: VersionedAlternateLayoutId;
    [DisplayBreakpointCodes.Small]?: VersionedAlternateLayoutId;
    [DisplayBreakpointCodes.Medium]?: VersionedAlternateLayoutId;
}
export declare class VersionedLayoutDefinition implements DataToVersion {
    constructor(layoutTypeId: GuidValue);
    readonly layoutTypeId: GuidValue;
    readonly omniaServiceId: GuidValue;
    readonly dataTypeId: GuidValue;
    title: MultilingualString;
    layout: Layout;
}
export declare class VersionedAlternateLayoutDefinition extends VersionedLayoutDefinition {
    constructor();
}
export interface VersionedLayoutDataWithParentLayout {
    versionedData: IVersionedData<VersionedLayoutDefinition>;
    parentVersionedData: IVersionedData<VersionedLayoutDefinition>;
    mergedLayout: Layout;
}
export interface IVersionedLayoutProvider {
    versionedLayout: string;
}
export declare const VersionedLayoutProvider: IVersionedLayoutProvider;
declare module "../Layout" {
    interface ILayoutDependencyProvider extends IVersionedLayoutProvider {
    }
}
declare module "../Layout" {
    interface IBlockInstance<TSettings = void> {
        versionedLayout?: {
            id: VersionedLayoutId;
        };
    }
}
