import { type AnyCell, type SheetProxy } from "@okcontract/cells";
import { type EditorNode, type LabelledTypeDefinition } from "@okcontract/fred";
import type { Environment } from "@okcontract/lambdascript";
import type { OKPage } from "./instance";
export type ThemeElementType = "Color" | "Image" | "Gradient";
type SThemeElementType = "color" | "img" | "grad";
type ThemeImage = {
    img?: AnyCell<`ipfs://${string}`>;
};
type ThemeGradient = {
    col1?: AnyCell<string>;
    col2?: AnyCell<string>;
    deg?: AnyCell<number>;
};
type ThemeSolidColor = {
    col?: AnyCell<string>;
};
export type ThemeProperty = {
    allowed: AnyCell<ThemeElementType[]>;
    sty: AnyCell<SThemeElementType>;
} & ThemeImage & ThemeGradient & ThemeSolidColor;
export declare const ThemePropertyDefinition: (instance: OKPage) => (node?: EditorNode, env?: Environment) => AnyCell<LabelledTypeDefinition>;
/** all definitions of theme */
export declare const themeDefinitions: (proxy: SheetProxy) => Record<string, LabelledTypeDefinition | AnyCell<() => LabelledTypeDefinition>>;
/** the Theme global map of definitions */
export declare const themeDefinition: (proxy: SheetProxy) => (node?: EditorNode, env?: Environment) => AnyCell<LabelledTypeDefinition>;
export {};
