import { type AdaptiveCardActionEvent, type AdaptiveCardActionExecute, type AdaptiveCardActionOpenUrl, type AdaptiveCardActionResetInputs, type AdaptiveCardActionShowCard, type AdaptiveCardActionSubmit, type AdaptiveCardActionToggleVisibility, type AdaptiveCardChoice, type AdaptiveCardHostConfig, type AdaptiveCardHostConfigOverride, type AdaptiveCardInputValue, type AdaptiveCardPayload, type ElementRenderer } from '../../components/docyrus/adaptive-card/adaptive-card-types';
import { type ValidationResult } from '../../components/docyrus/adaptive-card/lib/validate-inputs';
import { type AdaptiveCardContextValue } from '../../components/docyrus/adaptive-card/adaptive-card-context';
export interface AdaptiveCardChoiceQueryRequest {
    dataset: string;
    search: string;
    inputId: string;
}
export interface UseAdaptiveCardOptions {
    onAction?: (event: AdaptiveCardActionEvent) => void | Promise<void>;
    hostConfig?: AdaptiveCardHostConfigOverride;
    customElements?: Record<string, ElementRenderer>;
    onChoiceQuery?: (request: AdaptiveCardChoiceQueryRequest) => Promise<Array<AdaptiveCardChoice>>;
}
export interface UseAdaptiveCardReturn {
    card: AdaptiveCardPayload;
    hostConfig: AdaptiveCardHostConfig;
    state: {
        inputs: Record<string, AdaptiveCardInputValue>;
        validations: Record<string, ValidationResult>;
        visibilityOverrides: Record<string, boolean>;
        showCardOpen: Record<string, boolean>;
        hasSubmittedOnce: boolean;
    };
    controls: {
        setInput: (id: string, value: AdaptiveCardInputValue) => 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;
        validateAll: () => {
            ok: boolean;
            firstInvalidId?: string;
            errors: Record<string, ValidationResult>;
        };
        reset: () => void;
    };
    cardProps: AdaptiveCardContextValue;
}
export type { AdaptiveCardInputValue };
export declare function useAdaptiveCard(card: AdaptiveCardPayload, options?: UseAdaptiveCardOptions): UseAdaptiveCardReturn;
