import { Schema } from 'effect';
import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
import type { MigrateFn } from '../../../utils/resolve.js';
export declare const type: "com.shwfed.form.field.combobox.single";
export declare const compatibilityDate: "2026-04-29";
export declare const metadata: {
    readonly name: "下拉单选（硬编码）";
    readonly icon: "fluent:chevron-down-20-regular";
    readonly w: {
        readonly initial: 8;
        readonly min: 4;
        readonly max: number;
    };
    readonly h: {
        readonly initial: 2;
        readonly min: 2;
        readonly max: 2;
    };
};
export declare function itemSchema(configure: (env: Environment) => void): Schema.Struct<{
    id: Schema.refine<string, typeof Schema.String>;
    label: Schema.refine<readonly [{
        readonly locale: "zh";
        readonly message: string;
    }, ...{
        readonly locale: "en" | "ja" | "ko";
        readonly message: string;
    }[]], Schema.TupleType<readonly [Schema.Struct<{
        locale: Schema.Literal<["zh"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>], [Schema.Struct<{
        locale: Schema.Literal<["ja", "en", "ko"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>]>>;
    value: Schema.Union<[Schema.Struct<{
        kind: Schema.Literal<["text"]>;
        value: typeof Schema.String;
    }>, Schema.Struct<{
        kind: Schema.Literal<["number"]>;
        value: typeof Schema.Number;
    }>]>;
    tooltip: Schema.optional<Schema.refine<readonly [{
        readonly locale: "zh";
        readonly message: string;
    }, ...{
        readonly locale: "en" | "ja" | "ko";
        readonly message: string;
    }[]], Schema.TupleType<readonly [Schema.Struct<{
        locale: Schema.Literal<["zh"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>], [Schema.Struct<{
        locale: Schema.Literal<["ja", "en", "ko"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>]>>>;
}>;
export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
    label: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
        locale: Schema.Literal<["zh"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>], [Schema.Struct<{
        locale: Schema.Literal<["ja", "en", "ko"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>]>>;
    placeholder: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
        locale: Schema.Literal<["zh"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>], [Schema.Struct<{
        locale: Schema.Literal<["ja", "en", "ko"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>]>>;
    tooltip: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
        locale: Schema.Literal<["zh"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>], [Schema.Struct<{
        locale: Schema.Literal<["ja", "en", "ko"]>;
        message: Schema.SchemaClass<string, string, never>;
    }>]>>;
    orientation: Schema.optional<Schema.Literal<["vertical", "floating"]>>;
    binding: Schema.optional<Schema.refine<string, typeof Schema.String>>;
    disabled: Schema.optional<Schema.Schema<string, string, never>>;
    readonly: Schema.optional<Schema.Schema<string, string, never>>;
    derived: Schema.optional<Schema.Struct<{
        mode: Schema.Literal<["formula", "prefill"]>;
        expression: Schema.Schema<string, string, never>;
    }>>;
    items: Schema.optionalWith<Schema.Array$<Schema.Struct<{
        id: Schema.refine<string, typeof Schema.String>;
        label: Schema.refine<readonly [{
            readonly locale: "zh";
            readonly message: string;
        }, ...{
            readonly locale: "en" | "ja" | "ko";
            readonly message: string;
        }[]], Schema.TupleType<readonly [Schema.Struct<{
            locale: Schema.Literal<["zh"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>], [Schema.Struct<{
            locale: Schema.Literal<["ja", "en", "ko"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>]>>;
        value: Schema.Union<[Schema.Struct<{
            kind: Schema.Literal<["text"]>;
            value: typeof Schema.String;
        }>, Schema.Struct<{
            kind: Schema.Literal<["number"]>;
            value: typeof Schema.Number;
        }>]>;
        tooltip: Schema.optional<Schema.refine<readonly [{
            readonly locale: "zh";
            readonly message: string;
        }, ...{
            readonly locale: "en" | "ja" | "ko";
            readonly message: string;
        }[]], Schema.TupleType<readonly [Schema.Struct<{
            locale: Schema.Literal<["zh"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>], [Schema.Struct<{
            locale: Schema.Literal<["ja", "en", "ko"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>]>>>;
    }>>, {
        default: () => readonly [];
    }>;
    id: Schema.refine<string, typeof Schema.String>;
    displayName: Schema.optional<Schema.SchemaClass<string, string, never>>;
    hidden: Schema.optional<Schema.Schema<string, string, never>>;
    required: Schema.optional<Schema.Schema<string, string, never>>;
    validations: Schema.optional<Schema.Array$<Schema.Struct<{
        when: Schema.Schema<string, string, never>;
        warning: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
        message: Schema.refine<readonly [{
            readonly locale: "zh";
            readonly message: string;
        }, ...{
            readonly locale: "en" | "ja" | "ko";
            readonly message: string;
        }[]], Schema.TupleType<readonly [Schema.Struct<{
            locale: Schema.Literal<["zh"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>], [Schema.Struct<{
            locale: Schema.Literal<["ja", "en", "ko"]>;
            message: Schema.SchemaClass<string, string, never>;
        }>]>>;
    }>>>;
    type: Schema.Literal<["com.shwfed.form.field.combobox.single"]>;
    compatibilityDate: Schema.Literal<["2026-04-29"]>;
}>;
export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
/**
 * Best-effort migration: evaluates the legacy `options` CEL with an empty
 * `form` (designer-time, no live state), then per option evaluates
 * `optionValue` and interpolates `optionLabel`. Tooltip is left empty.
 *
 * Fails when:
 * - `options` doesn't return a list
 * - `optionValue` evaluation throws for any option
 * - any underlying CEL error reaches the top
 *
 * On failure the host shows the message as a toast and the field is left
 * untouched.
 */
export declare const migrate: MigrateFn;
