import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
export interface BindCommandInput {
    variable: string;
    target: HTMLElement;
    property: string;
    direction: 'to' | 'from' | 'bidirectional';
}
export interface BindCommandOutput {
    success: boolean;
    variable: string;
    element: HTMLElement;
    property: string;
    direction: 'to' | 'from' | 'bidirectional';
    bindingId: string;
}
interface ActiveBinding {
    id: string;
    variable: string;
    element: HTMLElement;
    property: string;
    direction: 'to' | 'from' | 'bidirectional';
    cleanup: () => void;
}
export declare class BindCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<BindCommandInput>;
    execute(input: BindCommandInput, context: TypedExecutionContext): Promise<BindCommandOutput>;
    private createBinding;
    private resolveElement;
    private getEventTypeForProperty;
    private dispatchEvent;
}
export declare const createBindCommand: () => BindCommand;
export default BindCommand;
export declare function unbind(bindingId: string): boolean;
export declare function unbindVariable(variable: string): number;
export declare function getActiveBindings(): ActiveBinding[];
//# sourceMappingURL=bind.d.ts.map