import { type ReactNode } from 'react';
import { type AdaptiveCardActionEvent, type AdaptiveCardActionExecute, type AdaptiveCardActionOpenUrl, type AdaptiveCardActionResetInputs, type AdaptiveCardActionShowCard, type AdaptiveCardActionSubmit, type AdaptiveCardActionToggleVisibility, type AdaptiveCardChoice, type AdaptiveCardHostConfig, type AdaptiveCardInputValue, type AdaptiveCardPayload, type ElementRenderer } from './adaptive-card-types';
import { type ValidationResult } from './lib/validate-inputs';
export interface AdaptiveCardContextValue {
    card: AdaptiveCardPayload;
    hostConfig: AdaptiveCardHostConfig;
    customElements: Record<string, ElementRenderer>;
    visibilityOverrides: Record<string, boolean>;
    inputs: Record<string, AdaptiveCardInputValue>;
    validations: Record<string, ValidationResult>;
    showCardOpen: Record<string, boolean>;
    hasSubmittedOnce: boolean;
    setInput: (id: string, value: AdaptiveCardInputValue) => void;
    registerInput: (id: string, initial: AdaptiveCardInputValue) => void;
    unregisterInput: (id: string) => void;
    submit: (action: AdaptiveCardActionSubmit) => void;
    execute: (action: AdaptiveCardActionExecute) => void;
    openUrl: (action: AdaptiveCardActionOpenUrl) => void;
    toggleVisibility: (action: AdaptiveCardActionToggleVisibility) => void;
    toggleShowCard: (action: AdaptiveCardActionShowCard) => void;
    resetInputs: (action: AdaptiveCardActionResetInputs) => void;
    dispatchEvent: (event: AdaptiveCardActionEvent) => void;
    queryChoices: (request: {
        dataset: string;
        search: string;
        inputId: string;
    }) => Promise<Array<AdaptiveCardChoice>>;
}
export declare function AdaptiveCardProvider({ value, children }: {
    value: AdaptiveCardContextValue;
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function useAdaptiveCardContext(): AdaptiveCardContextValue;
export declare function useAdaptiveCardInput(id: string): {
    value: string | number | boolean | string[] | null;
    setValue: (next: AdaptiveCardInputValue) => void;
    validation: ValidationResult;
    showError: boolean;
};
export declare function isElementVisible(element: {
    id?: string;
    isVisible?: boolean;
}, overrides: Record<string, boolean>): boolean;
