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.animated.number";
export declare const compatibilityDate: "2026-06-01";
export declare const metadata: {
    readonly name: "动画数字";
    readonly icon: "fluent:number-symbol-20-regular";
    readonly w: {
        readonly initial: 8;
        readonly min: 2;
        readonly max: number;
    };
    readonly h: {
        readonly initial: 3;
        readonly min: 2;
        readonly max: number;
    };
};
/**
 * One item's datasource: an optional HTTP request plus the expression that
 * derives its number. Mirrors `table`'s `DataSource` (minus `total`), but the
 * `value` expression returns a number rather than a list.
 */
export declare function dataSourceSchema(configure: Configure): Schema.Struct<{
    request: Schema.optional<Schema.Schema<string, string, never>>;
    value: Schema.Schema<string, string, never>;
}>;
/**
 * One animated-number item — a single `NumberFlow`. Exported so the config
 * editor can read its field `title` / `description` annotations.
 */
export declare function itemSchema(configure: Configure): Schema.Struct<{
    id: Schema.refine<string, typeof Schema.String>;
    name: Schema.optional<Schema.SchemaClass<string, string, never>>;
    dataSource: Schema.Struct<{
        request: Schema.optional<Schema.Schema<string, string, never>>;
        value: Schema.Schema<string, string, never>;
    }>;
    pollingInterval: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
    prefix: Schema.optional<Schema.Schema<string, string, never>>;
    suffix: Schema.optional<Schema.Schema<string, string, never>>;
    style: Schema.optional<Schema.Schema<string, string, never>>;
}>;
export declare function schema(configure: Configure, _blockRef?: AnySchema): Schema.Struct<{
    id: Schema.refine<string, typeof Schema.String>;
    type: Schema.tag<"com.shwfed.block.animated.number">;
    compatibilityDate: Schema.tag<"2026-06-01">;
    displayName: Schema.optional<Schema.SchemaClass<string, string, never>>;
    locale: 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>;
    }>]>>>;
    items: Schema.refine<readonly {
        readonly name?: string | undefined;
        readonly style?: string | undefined;
        readonly id: string;
        readonly prefix?: string | undefined;
        readonly dataSource: {
            readonly value: string;
            readonly request?: string | undefined;
        };
        readonly pollingInterval?: number | undefined;
        readonly suffix?: string | undefined;
    }[], Schema.Array$<Schema.Struct<{
        id: Schema.refine<string, typeof Schema.String>;
        name: Schema.optional<Schema.SchemaClass<string, string, never>>;
        dataSource: Schema.Struct<{
            request: Schema.optional<Schema.Schema<string, string, never>>;
            value: Schema.Schema<string, string, never>;
        }>;
        pollingInterval: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
        prefix: Schema.optional<Schema.Schema<string, string, never>>;
        suffix: Schema.optional<Schema.Schema<string, string, never>>;
        style: Schema.optional<Schema.Schema<string, string, never>>;
    }>>>;
}>;
export declare function defaultBody(): Record<string, unknown>;
export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
export type ItemValue = Value['items'][number];
export type DataSourceValue = ItemValue['dataSource'];
