export type GitLocateProblemCommitPermission = "git:read" | "filesystem:read";
export type GitLocateProblemCommitRiskCategory = "read-only-inspection";
export type GitLocateProblemCommitGuard = {
    allowed?: boolean;
    accepted?: boolean;
    reason?: string;
};
export type GitLocateProblemCommitContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: GitLocateProblemCommitGuard;
    allowedRepositoryRoots?: readonly string[];
    grantedPermissions?: readonly GitLocateProblemCommitPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type GitLocateProblemCommitTarget = {
    repositoryPath: string;
    knownGoodRef: string;
    knownBadRef: string;
    verificationCommand?: string;
    maxSteps: number;
};
export type GitLocateProblemCommitRequest = {
    target?: Partial<GitLocateProblemCommitTarget>;
    context?: GitLocateProblemCommitContext;
    provider?: GitLocateProblemCommitProvider;
    timeoutMs?: number;
    metadata?: Readonly<Record<string, unknown>>;
    runtimeId?: string;
    invocationId?: string;
    repositoryPath?: string;
    cwd?: string;
    knownGoodRef?: string;
    knownBadRef?: string;
    goodRef?: string;
    badRef?: string;
    verificationCommand?: string;
    maxSteps?: number;
    dryRun?: boolean;
};
export type GitLocateProblemCommitRuntimeEntry = {
    owner: "runtime";
    port: "BaseToolExecutorPort.git.runGit";
    method: "runGit";
    binary: "git";
    argvMode: "fixed-locate-problem-commit";
    allowedSubcommand: "rev-list";
};
export type GitLocateProblemCommitRisk = {
    category: GitLocateProblemCommitRiskCategory;
    riskLevel: "normal";
    mutatesRepository: false;
    mutatesWorkingTree: false;
    mutatesFilesystem: false;
    mutatesGitMetadata: false;
    mayUseNetwork: false;
    spawnsProcess: true;
    requiresTapApproval: false;
    runtimeOwnsExecution: true;
};
export type GitLocateProblemCommitCandidate = {
    raw: string;
    commit?: string;
    distance?: number;
};
export type GitLocateProblemCommitEnvelope = {
    parser: "git-rev-list-bisect-output-v1";
    knownGoodRef: string;
    knownBadRef: string;
    verificationCommand?: string;
    verificationCommandExecuted: false;
    maxSteps: number;
    exitCode?: number;
    stdoutLineCount: number;
    stderrLineCount: number;
    candidateCount: number;
    bestCandidate?: string;
    located: boolean;
    candidates: readonly GitLocateProblemCommitCandidate[];
};
export type GitLocateProblemCommitOutput = {
    kind: "agentCore.basicTool.git.locateProblemCommit";
    target: GitLocateProblemCommitTarget;
    runtimeEntry: GitLocateProblemCommitRuntimeEntry;
    risk: GitLocateProblemCommitRisk;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    timeoutMs: number;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    exitCode?: number;
    stdout?: string;
    stderr?: string;
    permissionsRequired: readonly GitLocateProblemCommitPermission[];
    unsafeSideEffects: false;
    wouldRunGitBisect: false;
    wouldExecuteVerificationCommand: false;
    verificationCommandExecuted: false;
    resultEnvelope: GitLocateProblemCommitEnvelope;
};
export type GitLocateProblemCommitPlan = {
    toolId: "git.locateProblemCommit";
    toolKind: "git.locateProblemCommit";
    capability: "locate-problem-commit";
    runtimeId: string;
    invocationId: string;
    repositoryPath: string;
    knownGoodRef: string;
    knownBadRef: string;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    requiredPermissions: readonly GitLocateProblemCommitPermission[];
    runtimeEntry: GitLocateProblemCommitRuntimeEntry;
    risk: GitLocateProblemCommitRisk;
    dispatch: "dry-run" | "runtime-git-executor";
    dryRun: boolean;
    strategy: "rev-list-bisect-candidate-read";
    wouldRunGitBisect: false;
    wouldExecuteVerificationCommand: false;
    unsafeSideEffects: false;
    outputEnvelope: {
        stdoutPreview: "";
        stderrPreview: "";
        parsed: false;
    };
    audit: {
        guard: "git-locate-problem-commit-runtime-guard";
        event: "basicTool.git.locateProblemCommit.planned";
        governanceRequired: boolean;
        tapCanWrap: true;
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type GitLocateProblemCommitErrorBoundary = "input" | "scope" | "permission" | "governance" | "provider";
export type GitLocateProblemCommitErrorCode = "MISSING_REPOSITORY_PATH" | "MISSING_KNOWN_GOOD_REF" | "MISSING_KNOWN_BAD_REF" | "INVALID_ARGUMENT" | "INVALID_CONTEXT" | "INVALID_TIMEOUT" | "INVALID_MAX_STEPS" | "REFS_MUST_DIFFER" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type GitLocateProblemCommitError = {
    code: GitLocateProblemCommitErrorCode;
    message: string;
    boundary: GitLocateProblemCommitErrorBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type GitLocateProblemCommitAuditEvent = {
    type: string;
    toolId: "git.locateProblemCommit";
    invocationId: string;
    dryRun: boolean;
    repositoryPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type GitLocateProblemCommitResult = {
    ok: true;
    toolId: "git.locateProblemCommit";
    output: GitLocateProblemCommitOutput;
    plan: GitLocateProblemCommitPlan;
    audit: readonly GitLocateProblemCommitAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "git.locateProblemCommit";
    error: GitLocateProblemCommitError;
    audit: readonly GitLocateProblemCommitAuditEvent[];
    events: readonly string[];
};
export type GitLocateProblemCommitProviderRequest = {
    repositoryPath: string;
    args: readonly string[];
    timeoutMs?: number;
};
export type GitLocateProblemCommitProviderResult = {
    exitCode: number;
    stdout: string;
    stderr: string;
};
export type GitLocateProblemCommitProvider = (request: GitLocateProblemCommitProviderRequest, context: GitLocateProblemCommitContext) => GitLocateProblemCommitProviderResult | Promise<GitLocateProblemCommitProviderResult>;
export declare const gitLocateProblemCommitDescriptor: {
    readonly toolId: "git.locateProblemCommit";
    readonly toolKind: "git.locateProblemCommit";
    readonly capability: "locate-problem-commit";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.gitBase.advanced";
    readonly defaultDryRun: true;
    readonly defaultDispatch: "dry-run";
    readonly tapOwnsApproval: true;
    readonly requiresTapApproval: false;
    readonly runtimeEntryPort: "BaseToolExecutorPort.git.runGit";
    readonly operationRisk: "read-only-bisect-candidate-search";
    readonly permissionsRequired: readonly ["git:read", "filesystem:read"];
    readonly defaultMaxSteps: 64;
    readonly defaultTimeoutMs: 120000;
    readonly maxTimeoutMs: 900000;
    readonly unsafeSideEffects: false;
};
export declare const locateProblemCommitDescriptor: {
    readonly toolId: "git.locateProblemCommit";
    readonly toolKind: "git.locateProblemCommit";
    readonly capability: "locate-problem-commit";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.gitBase.advanced";
    readonly defaultDryRun: true;
    readonly defaultDispatch: "dry-run";
    readonly tapOwnsApproval: true;
    readonly requiresTapApproval: false;
    readonly runtimeEntryPort: "BaseToolExecutorPort.git.runGit";
    readonly operationRisk: "read-only-bisect-candidate-search";
    readonly permissionsRequired: readonly ["git:read", "filesystem:read"];
    readonly defaultMaxSteps: 64;
    readonly defaultTimeoutMs: 120000;
    readonly maxTimeoutMs: 900000;
    readonly unsafeSideEffects: false;
};
export declare function parseGitLocateProblemCommitResult(providerResult: GitLocateProblemCommitProviderResult | undefined, target: GitLocateProblemCommitTarget): GitLocateProblemCommitEnvelope;
export declare function planLocateProblemCommit(request?: GitLocateProblemCommitRequest): GitLocateProblemCommitResult;
export declare const planGitLocateProblemCommit: typeof planLocateProblemCommit;
export declare function executeGitLocateProblemCommit(request?: GitLocateProblemCommitRequest): Promise<GitLocateProblemCommitResult>;
