import { Schema } from 'effect';
import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
import type { MigrateFn, MigrateSource } from '../../../utils/resolve.js';
export declare const type: "com.shwfed.actions.button.http.request.json";
export declare const compatibilityDate: "2026-04-18";
export declare const metadata: {
    readonly name: "请求";
    readonly icon: "fluent:cloud-arrow-up-20-regular";
};
export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
    type: Schema.Literal<["com.shwfed.actions.button.http.request.json"]>;
    compatibilityDate: Schema.Literal<["2026-04-18"]>;
    expression: Schema.Schema<string, string, never>;
    before: Schema.optional<Schema.Array$<Schema.Struct<{
        id: Schema.optional<Schema.refine<string, typeof Schema.String>>;
        target: Schema.refine<string, typeof Schema.String>;
        operation: Schema.SchemaClass<string, string, never>;
        compatibilityDate: Schema.optional<Schema.SchemaClass<string, string, never>>;
        params: Schema.optional<Schema.SchemaClass<unknown, unknown, never>>;
    }>>>;
    messageExpression: Schema.optional<Schema.Schema<string, string, never>>;
    resultExpression: Schema.optional<Schema.Schema<string, string, never>>;
    onSuccess: Schema.optional<Schema.Array$<Schema.Struct<{
        id: Schema.optional<Schema.refine<string, typeof Schema.String>>;
        target: Schema.refine<string, typeof Schema.String>;
        operation: Schema.SchemaClass<string, string, never>;
        compatibilityDate: Schema.optional<Schema.SchemaClass<string, string, never>>;
        params: Schema.optional<Schema.SchemaClass<unknown, unknown, never>>;
    }>>>;
    onWarning: Schema.optional<Schema.Array$<Schema.Struct<{
        id: Schema.optional<Schema.refine<string, typeof Schema.String>>;
        target: Schema.refine<string, typeof Schema.String>;
        operation: Schema.SchemaClass<string, string, never>;
        compatibilityDate: Schema.optional<Schema.SchemaClass<string, string, never>>;
        params: Schema.optional<Schema.SchemaClass<unknown, unknown, never>>;
    }>>>;
    onError: Schema.optional<Schema.Array$<Schema.Struct<{
        id: Schema.optional<Schema.refine<string, typeof Schema.String>>;
        target: Schema.refine<string, typeof Schema.String>;
        operation: Schema.SchemaClass<string, string, never>;
        compatibilityDate: Schema.optional<Schema.SchemaClass<string, string, never>>;
        params: Schema.optional<Schema.SchemaClass<unknown, unknown, never>>;
    }>>>;
    onInfo: Schema.optional<Schema.Array$<Schema.Struct<{
        id: Schema.optional<Schema.refine<string, typeof Schema.String>>;
        target: Schema.refine<string, typeof Schema.String>;
        operation: Schema.SchemaClass<string, string, never>;
        compatibilityDate: Schema.optional<Schema.SchemaClass<string, string, never>>;
        params: Schema.optional<Schema.SchemaClass<unknown, unknown, never>>;
    }>>>;
}>;
export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
/**
 * Adopts values stored under the `…http.request.json.confirm` button at the
 * same `compatibilityDate`. That button baked a confirm dialog into the button
 * itself (`markdown` / `icon` / `color`); now that the page exposes a
 * parameterized 「确认弹窗」 operation (`com.shwfed.operation.alert`), the same
 * gate is expressed as an ordinary pre-request trigger. Migration declarations
 * live exclusively on this (replacement) entry; the confirm folder is kept so
 * not-yet-migrated configs keep loading, but it is never touched here.
 */
export declare const migrateFrom: ReadonlyArray<MigrateSource>;
export declare const migrate: MigrateFn;
