import { Schema } from 'effect';
import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
export { getStructFieldDescription, getStructFieldTitle } from '../../../../table/utils/schema-meta.js';
type AnySchema = Schema.Schema<any, any, never>;
type Configure = (env: Environment) => void;
export declare const type: "com.shwfed.block.card";
export declare const compatibilityDate: "2026-06-02";
export declare const metadata: {
    readonly name: "卡片";
    readonly icon: "fluent:card-ui-20-regular";
    readonly w: {
        readonly initial: 12;
        readonly min: 4;
        readonly max: number;
    };
    readonly h: {
        readonly initial: 6;
        readonly min: 4;
        readonly max: number;
    };
};
export declare const JSON_VAR: {
    readonly type: "optional<dyn>";
    readonly label: "HTTP 响应体";
    readonly description: "HTTP 响应体（配置了请求时为已解析 JSON，否则为 none）";
};
export declare const BADGE_VARIANTS: readonly ["default", "secondary", "destructive", "outline"];
/**
 * The card's top-right badge: an optional HTTP datasource whose response feeds
 * an inline-markdown localized `content` (with `{{ 表达式 }}` CEL interpolation),
 * optionally polled. Exported so the config editor can read field annotations.
 *
 * Every field is optional; an absent (or empty) `content` means no badge is
 * rendered at all.
 */
export declare function badgeSchema(configure: Configure): Schema.Struct<{
    request: Schema.optional<Schema.Schema<string, string, never>>;
    content: Schema.optional<Schema.filter<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>;
    }>]>>>;
    show: Schema.optional<Schema.Schema<string, string, never>>;
    interval: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
    dot: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
    variant: Schema.optional<Schema.Literal<["default", "secondary", "destructive", "outline"]>>;
}>;
export declare function schema(configure: Configure, blockRef: AnySchema): Schema.Struct<{
    id: Schema.refine<string, typeof Schema.String>;
    type: Schema.tag<"com.shwfed.block.card">;
    compatibilityDate: Schema.tag<"2026-06-02">;
    displayName: Schema.optional<Schema.SchemaClass<string, string, never>>;
    style: Schema.optional<Schema.Schema<string, string, never>>;
    url: Schema.optional<Schema.Schema<string, string, never>>;
    badge: Schema.optional<Schema.Struct<{
        request: Schema.optional<Schema.Schema<string, string, never>>;
        content: Schema.optional<Schema.filter<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>;
        }>]>>>;
        show: Schema.optional<Schema.Schema<string, string, never>>;
        interval: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
        dot: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
        variant: Schema.optional<Schema.Literal<["default", "secondary", "destructive", "outline"]>>;
    }>>;
    slot: Schema.refine<{
        readonly blocks: readonly any[];
        readonly layouts: readonly {
            readonly name: string;
            readonly layout: {
                readonly style?: string | undefined;
                readonly columns: number;
                readonly gap?: number | undefined;
                readonly rows?: number | undefined;
                readonly placements: {
                    readonly [x: string]: {
                        readonly area: readonly [readonly [number, number], readonly [number, number]];
                        readonly v?: "stretch" | "center" | "end" | "start" | undefined;
                        readonly h?: "stretch" | "center" | "end" | "start" | undefined;
                    };
                };
            };
            readonly media?: string | undefined;
        }[];
    }, Schema.Struct<{
        blocks: Schema.Array$<Schema.Schema<any, any, never>>;
        layouts: Schema.refine<readonly {
            readonly name: string;
            readonly layout: {
                readonly style?: string | undefined;
                readonly columns: number;
                readonly gap?: number | undefined;
                readonly rows?: number | undefined;
                readonly placements: {
                    readonly [x: string]: {
                        readonly area: readonly [readonly [number, number], readonly [number, number]];
                        readonly v?: "stretch" | "center" | "end" | "start" | undefined;
                        readonly h?: "stretch" | "center" | "end" | "start" | undefined;
                    };
                };
            };
            readonly media?: string | undefined;
        }[], Schema.Array$<Schema.Struct<{
            name: Schema.SchemaClass<string, string, never>;
            media: Schema.optional<Schema.Schema<string, string, never>>;
            layout: Schema.Struct<{
                columns: Schema.refine<number, Schema.filter<typeof Schema.Number>>;
                rows: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
                gap: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
                style: Schema.optional<Schema.SchemaClass<string, string, never>>;
                placements: Schema.Record$<typeof Schema.String, Schema.Struct<{
                    area: Schema.refine<readonly [readonly [number, number], readonly [number, number]], Schema.Tuple2<Schema.Tuple2<Schema.filter<Schema.filter<typeof Schema.Number>>, Schema.filter<Schema.filter<typeof Schema.Number>>>, Schema.Tuple2<Schema.filter<Schema.filter<typeof Schema.Number>>, Schema.filter<Schema.filter<typeof Schema.Number>>>>>;
                    h: Schema.optional<Schema.Literal<["start", "center", "end", "stretch"]>>;
                    v: Schema.optional<Schema.Literal<["start", "center", "end", "stretch"]>>;
                }>>;
            }>;
        }>>>;
    }>>;
}>;
export declare function defaultBody(): Record<string, unknown>;
export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
export type BadgeValue = NonNullable<Value['badge']>;
export type BadgeVariant = (typeof BADGE_VARIANTS)[number];
