import { ApiErrorResponse } from '@userfrosting/sprinkle-core/interfaces';
import { RoleCreateRequest, RoleEditRequest, RoleResponse } from '../interfaces';
/**
 * Vue composable for Role CRUD operations.
 *
 * Endpoints:
 * - GET    /api/roles/r/{slug}  -> RoleResponse
 * - POST   /api/roles           -> RoleCreateResponse
 * - PUT    /api/roles/r/{slug}  -> RoleEditResponse
 * - DELETE /api/roles/r/{slug}  -> RoleDeleteResponse
 *
 * Reactive state:
 * - apiLoading: boolean
 * - apiError: ApiErrorResponse | null
 * - formData: RoleCreateRequest
 * - r$: validation state from Regle for formData
 *
 * Methods:
 * - fetchRole(slug: string): Promise<RoleResponse>
 * - createRole(data: RoleCreateRequest): Promise<void>
 * - updateRole(slug: string, data: RoleEditRequest): Promise<void>
 * - deleteRole(slug: string): Promise<void>
 * - resetForm(): void
 */
export declare function useRoleApi(): {
    fetchRole: (slug: string) => Promise<RoleResponse>;
    createRole: (data: RoleCreateRequest) => Promise<void>;
    updateRole: (slug: string, data: RoleEditRequest) => Promise<void>;
    deleteRole: (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<{
        name: string;
        slug: string;
        description: string;
    }, RoleCreateRequest | {
        name: string;
        slug: string;
        description: string;
    }>;
    r$: import('vue').Raw<import('@regle/core').RegleRoot<{
        name: string;
        slug: string;
        description: string;
    }, Record<string, any>, Record<string, import('@regle/core').RegleValidationGroupEntry[]>, import('@regle/core').RegleShortcutDefinition<any>>>;
    resetForm: () => void;
    slugLocked: import('vue').Ref<boolean, boolean>;
};
