import { VersionedAlternateLayout, DisplayBreakpointVersionedAlternateLayoutMapping, VersionedLayout, VersionedLayoutDefinition, GuidValue, ICheckedoutVersionedData, IVersionedData, IVersionedDataIdentifier, IVersionInformation, IVersionReference, LatestReferenceResponse, VersionedLayoutId, AppScopedVersionedLayoutUrlValidationRequest, VersionedLayoutDataWithParentLayout } from "../models";
interface VersionedLayoutCreationResponse {
    checkedOutVersionedData: ICheckedoutVersionedData<VersionedLayoutDefinition>;
    versionedLayout: VersionedLayout;
}
interface VersionedAlternateLayoutCreationResponse {
    checkedOutVersionedData: ICheckedoutVersionedData<VersionedLayoutDefinition>;
    versionedLayout: VersionedLayout;
    versionedAlternateLayout: VersionedAlternateLayout;
}
interface LayoutPublishingResponse {
    versionedLayout: VersionedLayout;
    publishedVersionedData: IVersionedData<VersionedLayoutDefinition>;
}
export declare class VersionedLayoutService {
    private static readonly AppDefaultLayoutInPublicListingSettingsKeyPrefix;
    private httpClient;
    private settingsService;
    createAppScopedLayout: (appInstanceId: GuidValue, definition: VersionedLayoutDefinition, urlSegment: string, parentLayoutId?: VersionedLayoutId) => Promise<VersionedLayoutCreationResponse>;
    createBusinessProfileScopedLayout: (businessProfileId: GuidValue, definition: VersionedLayoutDefinition, urlSegment: string, parentLayoutId?: VersionedLayoutId) => Promise<VersionedLayoutCreationResponse>;
    createTenantScopedLayout: (definition: VersionedLayoutDefinition, urlSegment: string, parentLayoutId?: VersionedLayoutId) => Promise<VersionedLayoutCreationResponse>;
    createAlternateLayout: (versionedLayout: VersionedLayout, title: string, definition: VersionedLayoutDefinition) => Promise<VersionedAlternateLayoutCreationResponse>;
    deleteLayout: (layout: VersionedLayout) => Promise<void>;
    updateLayout: (layout: VersionedLayout) => Promise<VersionedLayout>;
    deleteAlternateLayout: (alternateLayout: VersionedAlternateLayout) => Promise<VersionedLayout>;
    getLayoutDefinitionLatestRef: (dataIdentifier: IVersionedDataIdentifier) => Promise<LatestReferenceResponse>;
    getLayoutDefinitionVersion: (version: IVersionReference) => Promise<IVersionedData<VersionedLayoutDefinition>>;
    getLayoutDefinitionVersionWithParentLayout: (version: IVersionReference, parentVersion: IVersionReference) => Promise<VersionedLayoutDataWithParentLayout>;
    publishLayoutDefinition: (versionedData: IVersionedData<VersionedLayoutDefinition>) => Promise<LayoutPublishingResponse>;
    updateLayoutDefinition: (versionedData: ICheckedoutVersionedData<VersionedLayoutDefinition>) => Promise<ICheckedoutVersionedData<VersionedLayoutDefinition>>;
    checkInLayoutDefinition: (versionedData: ICheckedoutVersionedData<VersionedLayoutDefinition>) => Promise<IVersionedData<VersionedLayoutDefinition>>;
    checkOutLayoutDefinition: (dataIdentifier: IVersionedDataIdentifier, takeOver?: boolean) => Promise<ICheckedoutVersionedData<VersionedLayoutDefinition>>;
    discardLayoutDefinition: (versionedData: ICheckedoutVersionedData<VersionedLayoutDefinition>) => Promise<IVersionedData<VersionedLayoutDefinition>>;
    getLayoutByIdentifier: (identifier: IVersionedDataIdentifier) => Promise<VersionedLayout>;
    getLayoutById: (layoutId: number) => Promise<VersionedLayout>;
    getLayoutsByAppId: (appInstanceId: GuidValue) => Promise<VersionedLayout[]>;
    getLayoutsByProfileAndTypeId: (businessProfileId: GuidValue, layoutTypeId: GuidValue) => Promise<VersionedLayout[]>;
    getLayoutsByTypeIds: (layoutTypeIds: GuidValue[]) => Promise<VersionedLayout[]>;
    getTenantLayouts: () => Promise<VersionedLayout[]>;
    getLayoutVersionInformation: (dataIdentifier: IVersionedDataIdentifier) => Promise<IVersionInformation[]>;
    setDisplayBreakpointAlternateLayoutMapping: (versionedLayoutId: VersionedLayoutId, mapping: DisplayBreakpointVersionedAlternateLayoutMapping) => Promise<void>;
    getDefaultAppLayoutInPublicListing: (appInstanceId: GuidValue) => Promise<VersionedLayoutId>;
    setDefaultAppLayoutInPublicListing: (versionedLayoutId: VersionedLayoutId, appInstanceId: GuidValue) => Promise<void>;
    getDisplayBreakpointAlternateLayoutMappings: (...versionedLayoutIds: VersionedLayoutId[]) => Promise<{
        [versionedLayoutId: number]: DisplayBreakpointVersionedAlternateLayoutMapping;
    }>;
    updateAlternateLayout: (alternateLayout: VersionedAlternateLayout) => Promise<VersionedLayout>;
    validateLayoutUrl: (request: AppScopedVersionedLayoutUrlValidationRequest) => Promise<boolean>;
}
export {};
