import { PageBlockEditorModel } from "@supernova-studio/client";
import { DocsColorRef } from "../support/SDKDocsColorRef";
import { DocsLinkRef } from "../support/SDKDocsLinkRef";
import { DocsBlockItem } from "./SDKDocsBlockItem";
export type DocsBlockModel = PageBlockEditorModel;
export declare class DocsBlock {
    /** Unique identifier of the block */
    id: string;
    /** Unique identifier of the block package */
    packageId: string;
    /** Unique identifier of the selected variant */
    variantId: string | null;
    /** Indentation of the block in levels (0, 1, 2), not pixels */
    indentLevel: number;
    /** Block appearance - Properties that are natively available for all blocks, such as background color */
    appearance: {
        /** Background color of all items of the block. Can be further overriden on every item */
        itemBackgroundColor: DocsColorRef | null;
        /** Number of columns */
        numberOfColumns?: number;
    };
    /** Data of all items of the block */
    data: Array<DocsBlockItem>;
    constructor(model: DocsBlockModel);
    /** Returns stored data of all properties. This will retrieve properties for item on the first position, ideal for single-item blocks */
    allPropertyDataForSingleItem(): Record<string, object> | null;
    /** Returns stored data of all properties. This will retrieve properties for item at any position */
    allPropertyDataForItemAtIndex(index: number): Record<string, object> | null;
    /** Returns stored data of a single property. This will retrieve property for item on the first position, ideal for single-item blocks */
    propertyDataForSingleItem<T extends object>(propertyId: string): T | null;
    /** Returns stored data of a single property. This will retrieve property for item at any position */
    propertyDataForItemAtIndex<T extends object>(index: number, propertyId: string): T | null;
    /** Returns stored link, if any. This will retrieve link for item on the first position, ideal for single-item blocks */
    linkForSingleItem(): DocsLinkRef | null;
    /** Returns stored link, if any. This will retrieve link for item at any position */
    linkForItemAtIndex(index: number): DocsLinkRef | null;
    /** Update data for property of specific key and index */
    updatePropertyDataForItemAtIndex<T extends object>(index: number, propertyId: string, data: T): void;
    /** Update data for property of specific key and index */
    updatePropertyDataForSingleItem<T extends object>(propertyId: string, data: T): void;
    /** Update link for item at specific index */
    updateLinkForItemAtIndex(index: number, link: DocsLinkRef | undefined): void;
    /** Update link for item at specific index */
    updateLinkForSingleItem(link: DocsLinkRef | undefined): void;
    /** Constructs representation that can be used to write full object to remote */
    toRemote(): PageBlockEditorModel;
}
