import { EditableDictionary, LanguagesAndVersions, Site, WorkboxItem } from "../../types";
import { FullItem, ItemDescriptor, ItemStub, Language } from "../pageModel";
import type { InsertAction } from "../../types";
export type Thumbnail = {
    id: string;
    name: string;
    thumbUrl: string;
    previewUrl: string;
    icon?: string;
    largeIcon?: string;
    size?: number;
    width?: number;
    height?: number;
    updated?: string;
    updatedBy?: string;
};
export type ItemTreeNodeData = Thumbnail & {
    id: string;
    name: string;
    displayName?: string;
    templateId: string;
    isCommandTemplate?: boolean;
    icon: string;
    hasChildren: boolean;
    isComponent: boolean;
    thumbUrl: string;
    previewUrl: string;
    resolution?: string;
    format?: string;
    created?: Date;
    language: string;
    version: number;
    hasLayout: boolean;
    path?: string;
    idPath?: string;
    action?: InsertAction;
};
export declare function getChildren(itemId: string, sessionId: string, templateIds: string[] | undefined, includeEmbeddedItems: boolean, language: string, include?: string, database?: string): Promise<ItemTreeNodeData[]>;
export declare function fetchItems(itemDescriptors: ItemDescriptor[], pageItem?: ItemDescriptor): Promise<FullItem[] | undefined>;
export declare function fetchItemStubs(itemDescriptors: ItemDescriptor[], pageItem?: ItemDescriptor): Promise<ItemStub[] | undefined>;
export type PageComponentData = {
    id: string;
    name?: string;
    type?: string;
    placeholder?: string;
    dataSourceItem?: ItemDescriptor;
    renderingItemId?: string;
    renderingItemName?: string;
    hasPersonalization?: boolean;
};
export declare function getPageComponents(pageItem: ItemDescriptor): Promise<PageComponentData[]>;
export declare function getSites(): Promise<import("./serviceHelper").ExecutionResult<Site[]>>;
export type ComponentsProviderSettings = {
    supportsPersonalization?: boolean;
    /**
     * True when the page's component provider stores presentation in Sitecore-style
     * shared/final layout fields, so a "shared layout" authoring mode (one set of
     * renderings shared across all language versions) is meaningful. Providers that
     * don't model presentation this way leave this false and the editor hides the
     * shared-layout toggle.
     */
    supportsLanguageSharedLayout?: boolean;
};
export declare function resolvePageAndSite(itemId: string, language: string, version: number): Promise<{
    pageItem: ItemDescriptor;
    site: {
        name: string;
    };
    editUrl: string;
    previewUrl: string;
    componentsProviderSettings?: ComponentsProviderSettings;
} | undefined>;
export declare function getLanguagesAndVersions(item: ItemDescriptor, options?: {
    includePublishingRestrictions?: boolean;
    includePublishingTargets?: boolean;
}): Promise<import("./serviceHelper").ExecutionResult<LanguagesAndVersions>>;
export declare function getDictionary(siteName: string, language: string): Promise<EditableDictionary>;
export type WorkboxRequest = {
    items: ItemDescriptor[];
    renderedItems?: ItemDescriptor[];
};
export declare function getWorkbox(request: ItemDescriptor[] | WorkboxRequest): Promise<import("./serviceHelper").ExecutionResult<WorkboxItem[]>>;
export type WorkboxDescendantsResponse = {
    items: WorkboxItem[];
    totalCount: number;
    isTruncated: boolean;
};
export declare function getWorkboxDescendants(rootItem: ItemDescriptor): Promise<import("./serviceHelper").ExecutionResult<WorkboxDescendantsResponse>>;
export type ExportItemsRequest = {
    items: ItemDescriptor[];
    versionOption: "latest" | "all";
    /**
     * When true (default), export selected items and all descendants.
     * When false, export only the selected items.
     */
    includeSubitems?: boolean;
};
export type ExportItemsResult = {
    yaml: string;
    itemCount: number;
};
export type ImportItemsRequest = {
    targetItem: ItemDescriptor;
    yaml: string;
    restoreToOriginalParents?: boolean;
};
export type ImportItemResult = {
    itemId: string;
    itemName: string;
    itemPath: string;
    success: boolean;
    createdItem?: ItemDescriptor;
    errorMessage?: string;
};
export type ImportItemsResult = {
    createdItems: ItemDescriptor[];
    itemCount: number;
    successCount: number;
    failureCount: number;
    results: ImportItemResult[];
    summary: string;
};
export declare function exportItems(request: ExportItemsRequest): Promise<import("./serviceHelper").ExecutionResult<ExportItemsResult>>;
export declare function importItems(request: ImportItemsRequest): Promise<import("./serviceHelper").ExecutionResult<ImportItemsResult>>;
export type RichTextProfileResponse = {
    toolbars: Array<{
        buttons: Array<{
            name: string;
        }>;
    }>;
};
export declare function getRichTextProfile(itemPath: string, contextItemId?: string): Promise<import("./serviceHelper").ExecutionResult<RichTextProfileResponse>>;
export declare function getLanguages(): Promise<import("./serviceHelper").ExecutionResult<Language[]>>;
