import type { Component } from 'vue';
import type { Schema } from 'effect';
import { Effect } from 'effect';
import type { Fetch } from 'fx-fetch';
import type { Environment } from '../../../vendor/cel-js/lib/index.js';
import type { EventChannel, OperationDescriptor, TriggerValue } from '../../../share/event-bus.js';
type CelEvaluator = <T>(expression: string, context?: Record<string, unknown>) => Effect.Effect<T, any>;
type AnySchema = Schema.Schema<any, any, never>;
type SchemaFactory = (configure: (env: Environment) => void) => AnySchema;
export type ButtonMetadata = Readonly<{
    name: string;
    icon: string;
    drillable?: boolean;
    operations?: ReadonlyArray<OperationDescriptor>;
    deprecated?: string;
}>;
export type ButtonEntry = Readonly<{
    type: string;
    compatibilityDate: string;
    metadata: ButtonMetadata;
    schema: SchemaFactory;
    config: Component;
    runtime: Component;
    /** True when this button type is deprecated — explicit flag or newer date. */
    deprecated: boolean;
    /** Migration guidance shown in the inspector when `deprecated`. */
    deprecationNote?: string;
}>;
export declare const BUTTONS: ReadonlyArray<ButtonEntry>;
export declare function allButtonSchemas(configure: (env: Environment) => void): ReadonlyArray<AnySchema>;
export declare function findButton(type: string, compatibilityDate: string): ButtonEntry | undefined;
export type ItemMetadata = Readonly<{
    name: string;
    icon: string;
}>;
export type ItemEntry = Readonly<{
    type: string;
    compatibilityDate: string;
    metadata: ItemMetadata;
    schema: SchemaFactory;
    config: Component;
    runtime: Component;
}>;
export declare const ITEMS: ReadonlyArray<ItemEntry>;
export declare function allItemSchemas(configure: (env: Environment) => void): ReadonlyArray<AnySchema>;
export declare function findItem(type: string, compatibilityDate: string): ItemEntry | undefined;
export declare function interpolateMarkdown(source: string, $cel: CelEvaluator): string;
type ToastStyle = 'success' | 'error' | 'warning' | 'info';
/**
 * Post-completion behaviour shared by the HTTP-request buttons. Once the
 * request finishes, `resultExpression` classifies the outcome into one of the
 * four `ToastStyle`s (default `success`); that single result then both styles
 * the toast and selects which trigger list runs.
 */
export type HttpRequestOutcome = {
    /** Toast message expression, evaluated against `json`. No toast when absent. */
    messageExpression?: string;
    /** Result classifier, evaluated against `json`. Defaults to `success`. */
    resultExpression?: string;
    /** Bubbling channel for the result-keyed trigger lists. */
    channel?: EventChannel;
    /** Trigger lists keyed by result — the one matching the result runs. */
    triggers?: Partial<Record<ToastStyle, ReadonlyArray<TriggerValue>>>;
};
export declare function executeHttpRequest(expression: string, $cel: CelEvaluator, outcome?: HttpRequestOutcome): Effect.Effect<unknown, any, Fetch.Fetch>;
export {};
