import { PageBlockDefinitionProperty } from "@supernova-studio/model";
import { DocsBlockItemPropertyType } from "../../../enums/SDKDocsBlockItemPropertyType";
export type DocsBlockPropertyDefinitionModel = PageBlockDefinitionProperty;
export type DocsBlockPropertyData<T> = {
    value: T;
};
/** Generic property definition for when we don't care about specific types in options, just want to use the property high-level data */
export type DocsBlockItemPropertyAnyDefinition = DocsBlockPropertyDefinition<any, DocsBlockPropertyData<any>>;
export declare class DocsBlockPropertyDefinition<T extends object, D extends DocsBlockPropertyData<any>> {
    /** Property id, validated to be unique within a block, but not necessarily unique across all blocks */
    id: string;
    /** Human readable name that will show in the editor */
    name: string;
    /** Property type. There are many different types of properties, explained later */
    type: DocsBlockItemPropertyType;
    /** Human readable description that will show next to the property */
    description: string | null;
    /** Options specific to this property type */
    options: T | null;
    /**
     * Overrides of options for different variants.
     * Key/s must be set as id of the variant for override to go into effect.
     * Options are resolved as variantOptions[key] > options > default for any variant.
     * It is possible to override only a subset of options, in which case combination of default option settings and the override goes into effect */
    variantOptions: Record<string, T> | null;
    constructor(model: DocsBlockPropertyDefinitionModel);
    defaultData(): D;
}
