import { ComputedRef, Ref } from 'vue'; import { GroupItem } from '../types'; export type GroupAssignmentZone = 'zone1' | 'zone2'; export type GroupAssignmentSource = T | Ref | ComputedRef | (() => T); export interface GroupAssignmentState { group1: string[]; group2: string[]; } export interface UseGroupAssignmentOptions { groups: GroupAssignmentSource; group1: GroupAssignmentSource; group2: GroupAssignmentSource; label1?: GroupAssignmentSource; label2?: GroupAssignmentSource; minPerGroup?: GroupAssignmentSource; } export interface UseGroupAssignmentReturn { unassignedGroups: ComputedRef; zone1Groups: ComputedRef; zone2Groups: ComputedRef; zone1Count: ComputedRef; zone2Count: ComputedRef; isValid: ComputedRef; validationMessage: ComputedRef; getZoneForGroup: (groupName: string) => GroupAssignmentZone | null; assignToZone: (groupName: string, zone: GroupAssignmentZone) => GroupAssignmentState; removeFromZone: (groupName: string, zone: GroupAssignmentZone) => GroupAssignmentState; clearAll: () => GroupAssignmentState; } /** * Shared two-zone group assignment model for control/treatment style workflows. * * @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */ export declare function useGroupAssignment(options: UseGroupAssignmentOptions): UseGroupAssignmentReturn;