import * as _tanstack_react_query from '@tanstack/react-query';
import { S as SerializedForm, a as SerializedFormSubmission, b as SerializedFormSubmissionWithData } from '../../../../shared/stack.DzH_wcvr.js';

interface UseFormsOptions {
    /** Filter by status */
    status?: "active" | "inactive" | "archived";
    /** Number of items per page (default: 20) */
    limit?: number;
    /** Whether to enable the query (default: true) */
    enabled?: boolean;
}
interface UseFormsResult {
    forms: SerializedForm[];
    total: number;
    isLoading: boolean;
    error: Error | null;
    loadMore: () => void;
    hasMore: boolean;
    isLoadingMore: boolean;
    refetch: () => void;
}
/**
 * Hook for fetching paginated forms (admin)
 */
declare function useForms(options?: UseFormsOptions): UseFormsResult;
/**
 * Suspense variant of useForms
 */
declare function useSuspenseForms(options?: UseFormsOptions): {
    forms: SerializedForm[];
    total: number;
    loadMore: () => Promise<unknown>;
    hasMore: boolean;
    isLoadingMore: boolean;
    refetch: () => Promise<unknown>;
};
/**
 * Hook for fetching a form by ID (admin)
 */
declare function useFormById(id: string): {
    form: SerializedForm | null;
    isLoading: boolean;
    error: Error | null;
    refetch: () => void;
};
/**
 * Suspense variant of useFormById
 */
declare function useSuspenseFormById(id: string): {
    form: SerializedForm | null;
    refetch: () => Promise<unknown>;
};
/**
 * Hook for fetching a form by slug (public)
 */
declare function useFormBySlug(slug: string): {
    form: SerializedForm | null;
    isLoading: boolean;
    error: Error | null;
    refetch: () => void;
};
/**
 * Suspense variant of useFormBySlug
 */
declare function useSuspenseFormBySlug(slug: string): {
    form: SerializedForm | null;
    refetch: () => Promise<unknown>;
};
interface CreateFormInput {
    name: string;
    slug: string;
    description?: string;
    schema: string;
    successMessage?: string;
    redirectUrl?: string;
    status?: "active" | "inactive" | "archived";
}
interface UpdateFormInput {
    name?: string;
    slug?: string;
    description?: string;
    schema?: string;
    successMessage?: string;
    redirectUrl?: string;
    status?: "active" | "inactive" | "archived";
}
/**
 * Hook for creating a form
 */
declare function useCreateForm(): _tanstack_react_query.UseMutationResult<SerializedForm, Error, CreateFormInput, unknown>;
/**
 * Hook for updating a form
 */
declare function useUpdateForm(): _tanstack_react_query.UseMutationResult<SerializedForm, Error, {
    id: string;
    data: UpdateFormInput;
}, unknown>;
/**
 * Hook for deleting a form
 */
declare function useDeleteForm(): _tanstack_react_query.UseMutationResult<{
    success: boolean;
}, Error, string, unknown>;
/**
 * Hook for submitting a form (public)
 */
declare function useSubmitForm(slug: string): _tanstack_react_query.UseMutationResult<SerializedFormSubmission & {
    form: {
        successMessage?: string;
        redirectUrl?: string;
    };
}, Error, {
    data: Record<string, unknown>;
}, unknown>;
interface UseSubmissionsOptions {
    /** Number of items per page (default: 20) */
    limit?: number;
    /** Whether to enable the query (default: true) */
    enabled?: boolean;
}
interface UseSubmissionsResult {
    submissions: SerializedFormSubmissionWithData[];
    total: number;
    isLoading: boolean;
    error: Error | null;
    loadMore: () => void;
    hasMore: boolean;
    isLoadingMore: boolean;
    refetch: () => void;
}
/**
 * Hook for fetching paginated submissions for a form (admin)
 */
declare function useSubmissions(formId: string, options?: UseSubmissionsOptions): UseSubmissionsResult;
/**
 * Suspense variant of useSubmissions
 */
declare function useSuspenseSubmissions(formId: string, options?: UseSubmissionsOptions): {
    submissions: SerializedFormSubmissionWithData[];
    total: number;
    loadMore: () => Promise<unknown>;
    hasMore: boolean;
    isLoadingMore: boolean;
    refetch: () => Promise<unknown>;
};
/**
 * Hook for deleting a submission
 */
declare function useDeleteSubmission(formId: string): _tanstack_react_query.UseMutationResult<{
    success: boolean;
}, Error, string, unknown>;

export { useCreateForm, useDeleteForm, useDeleteSubmission, useFormById, useFormBySlug, useForms, useSubmissions, useSubmitForm, useSuspenseFormById, useSuspenseFormBySlug, useSuspenseForms, useSuspenseSubmissions, useUpdateForm };
export type { CreateFormInput, UpdateFormInput, UseFormsOptions, UseFormsResult, UseSubmissionsOptions, UseSubmissionsResult };
