export type RequiredToolConstraint = {
    conflicts?: ToolPolicyConflictEvidence[];
    evidence?: ToolInstructionEvidence[];
    forbiddenToolNames: string[];
    primaryToolName?: string;
    reason: "explicit-exclusive-tool-set" | "explicit-forbidden-tool" | "explicit-required-tool" | "repo-wide-coverage" | "requested-subagent";
    requiredAnyToolNames?: string[];
    requiredAnyToolGroups?: string[][];
    requiredAllToolNames?: string[];
    requiredReleasePolicy: "after-required-tools-succeeded" | "none";
    requiredToolNames: string[];
    restrictionScope: "turn" | "until-required-satisfied";
    selectableToolNames?: string[];
    visibleToolNames?: string[];
};
export type ToolPolicyConflictEvidence = {
    evidence: ToolInstructionEvidence[];
    kind: "allow-only-conflict" | "allow-only-forbidden" | "required-forbidden" | "required-not-allowed";
    toolNames: string[];
};
export type ToolInstructionEvidence = {
    end: number;
    parser: string;
    start: number;
    text: string;
};
export declare function requiredAnyToolGroupsForConstraint(constraint: RequiredToolConstraint): string[][];
export declare function splitRequiredToolGroups(constraint: RequiredToolConstraint): {
    requiredAllToolNames: string[];
    requiredAnyToolGroups: string[][];
    requiredAnyToolNames: string[];
};
//# sourceMappingURL=tool-constraint-types.d.ts.map