import type { TenantListDto, TenantApplicationDto } from '@/services/api/adminApi/tenants';
import type { RoleListDto } from '@/services/api/adminApi/roles';
export type WizardStepId = 'profile' | 'tenants' | 'appsRoles';
export interface ProfileForm {
    firstName: string;
    lastName: string;
    email: string;
    password: string;
    sendWelcomeEmail: boolean;
    requirePasswordReset: boolean;
}
export interface TenantConfig {
    roleIds: Set<string>;
    isOwner: boolean;
}
interface TenantCache {
    apps?: TenantApplicationDto[];
    loading: boolean;
    error: string | null;
}
export interface UseUserCreateWizardResult {
    profile: ProfileForm;
    setProfileField: <K extends keyof ProfileForm>(field: K, value: ProfileForm[K]) => void;
    availableTenants: TenantListDto[];
    tenantsLoading: boolean;
    tenantsError: string | null;
    reloadTenants: (search?: string) => Promise<void>;
    selectedTenantIds: string[];
    toggleTenant: (tenantId: string) => void;
    tenantConfig: ReadonlyMap<string, TenantConfig>;
    setTenantRoles: (tenantId: string, roleIds: Set<string>) => void;
    toggleTenantRole: (tenantId: string, roleId: string) => void;
    setTenantIsOwner: (tenantId: string, isOwner: boolean) => void;
    tenantCache: ReadonlyMap<string, TenantCache>;
    ensureTenantDataLoaded: (tenantId: string) => Promise<void>;
    assignableRoles: RoleListDto[];
    rolesLoading: boolean;
    rolesError: string | null;
    isProfileValid: boolean;
    isTenantsValid: boolean;
    isAppsRolesValid: boolean;
    profileErrors: Partial<Record<keyof ProfileForm, string>>;
    submitting: boolean;
    submitError: string | null;
    submit: () => Promise<string | null>;
}
export declare function useUserCreateWizard(): UseUserCreateWizardResult;
export {};
//# sourceMappingURL=useUserCreateWizard.d.ts.map