import { ApiErrorResponse } from '@userfrosting/sprinkle-core/interfaces';
import { GroupCreateRequest, GroupEditRequest, GroupResponse } from '../interfaces';
/**
 * Vue composable for Group CRUD operations.
 *
 * Endpoints:
 * - GET    /api/groups/g/{slug}  -> GroupResponse
 * - POST   /api/groups           -> GroupCreateResponse
 * - PUT    /api/groups/g/{slug}  -> GroupEditResponse
 * - DELETE /api/groups/g/{slug}  -> GroupDeleteResponse
 *
 * Reactive state:
 * - apiLoading: boolean
 * - apiError: ApiErrorResponse | null
 * - formData: GroupCreateRequest
 * - r$: validation state from Regle for formData
 *
 * Methods:
 * - fetchGroup(slug: string): Promise<GroupResponse>
 * - createGroup(data: GroupCreateRequest): Promise<void>
 * - updateGroup(slug: string, data: GroupEditRequest): Promise<void>
 * - deleteGroup(slug: string): Promise<void>
 * - resetForm(): void
 */
export declare function useGroupApi(): {
    fetchGroup: (slug: string) => Promise<GroupResponse>;
    createGroup: (data: GroupCreateRequest) => Promise<void>;
    updateGroup: (slug: string, data: GroupEditRequest) => Promise<void>;
    deleteGroup: (slug: string) => Promise<void>;
    apiLoading: import('vue').Ref<boolean, boolean>;
    apiError: import('vue').Ref<{
        title: string;
        description: string;
        status: number;
    } | null, ApiErrorResponse | {
        title: string;
        description: string;
        status: number;
    } | null>;
    formData: import('vue').Ref<{
        slug: string;
        name: string;
        description: string;
        icon: string;
    }, GroupCreateRequest | {
        slug: string;
        name: string;
        description: string;
        icon: string;
    }>;
    r$: import('vue').Raw<import('@regle/core').RegleRoot<{
        slug: string;
        name: string;
        description: string;
        icon: string;
    }, Record<string, any>, Record<string, import('@regle/core').RegleValidationGroupEntry[]>, import('@regle/core').RegleShortcutDefinition<any>>>;
    resetForm: () => void;
    slugLocked: import('vue').Ref<boolean, boolean>;
};
