import { AccessibilityProps } from '../shared/index.js';
import { DialogAPI } from '../dialog/index.js';

type FeedbackType = 'text' | 'video' | 'general';
interface FeedbackDialogProps {
    /** Whether the dialog is open (controlled) */
    open?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Callback when feedback is submitted */
    onSubmit?: (data: FeedbackData) => void | Promise<void>;
    /** Feedback type */
    type?: FeedbackType;
}
interface FeedbackData {
    comment: string;
    email?: string;
    type: FeedbackType;
    selectedText?: string;
}
interface FeedbackFormState {
    comment: string;
    email: string;
    honeypot: string;
}
interface FeedbackDialogState {
    open: boolean;
    isSubmitting: boolean;
    isSubmitted: boolean;
}
interface FeedbackDialogAPI {
    /** Current state */
    state: FeedbackDialogState;
    /** Dialog props from the underlying createDialog */
    dialogProps: DialogAPI;
    /** Form field values */
    formState: FeedbackFormState;
    /** Set a form field value */
    setField(field: keyof FeedbackFormState, value: string): void;
    /** Submit the feedback form */
    submit(): Promise<void>;
    /** Reset form to initial state */
    reset(): void;
    /** ARIA props for the feedback dialog */
    ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
}
declare function createFeedbackDialog(props?: FeedbackDialogProps): FeedbackDialogAPI;

declare const feedbackDialogVariants: (props?: ({
    type?: "text" | "video" | "general" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type FeedbackData, type FeedbackDialogAPI, type FeedbackDialogProps, type FeedbackDialogState, type FeedbackFormState, type FeedbackType, createFeedbackDialog, feedbackDialogVariants };
