import { Ctx } from '../ctx/base';
export type ManualFieldExtensionsHook = {
    /**
     * Use this function to declare new field extensions that users will be able
     * to install manually in some field
     *
     * @tag manualFieldExtensions
     */
    manualFieldExtensions: (ctx: ManualFieldExtensionsCtx) => ManualFieldExtension[];
};
export type ManualFieldExtensionsCtx = Ctx;
/**
 * An object expressing a field extension that users will be able
 * to install manually in some field
 *
 * @see {isManualFieldExtension}
 */
export type ManualFieldExtension = {
    /**
     * ID of field extension. Will be the first argument for the
     * `renderFieldExtension` function
     */
    id: string;
    /** Name to be shown when editing fields */
    name: string;
    /**
     * Type of field extension. An `editor` extension replaces the default field
     * editor that DatoCMS provides, while an `addon` extension is placed
     * underneath the field editor to provide additional info/behaviour. You can
     * setup multiple field addons for every field.
     */
    type: FieldExtensionType;
    /**
     * For `editor` extensions: moves the field to the sidebar of the record
     * editing page, mimicking a sidebar panel
     */
    asSidebarPanel?: boolean | {
        startOpen: boolean;
    };
    /**
     * The type of fields that the field extension in compatible with. You can use
     * the shortcut `all` to target all types of fields
     */
    fieldTypes: 'all' | FieldType[];
    /**
     * Whether this field extension needs some configuration options before being
     * installed in a field or not. Will trigger the
     * `renderManualFieldExtensionConfigScreen` and
     * `validateManualFieldExtensionParameters` methods
     */
    configurable?: boolean | {
        initialHeight: number;
    };
    /**
     * The initial height to set for the iframe that will render the field
     * extension
     */
    initialHeight?: number;
};
/**
 * The sidebar in the Content Area presents a number of user-defined menu-items.
 * This object represents a new item to be added in the sidebar.
 */
export type FieldExtensionType = 'editor' | 'addon';
export type FieldType = 'boolean' | 'color' | 'date_time' | 'date' | 'file' | 'float' | 'gallery' | 'integer' | 'json' | 'lat_lon' | 'link' | 'links' | 'rich_text' | 'seo' | 'slug' | 'string' | 'structured_text' | 'text' | 'video';
export declare function isManualFieldExtension(value: unknown): value is ManualFieldExtension;
export declare function isReturnTypeOfManualFieldExtensionsHook(value: unknown): value is ManualFieldExtension[];
