export type GitCleanUntrackedFilesPermission = "git:read" | "git:write" | "filesystem:read" | "filesystem:write";
export type GitCleanUntrackedFilesIgnoredMode = "tracked-ignored" | "ignored-only" | "none";
export type GitCleanUntrackedFilesGuard = {
    allowed?: boolean;
    accepted?: boolean;
    reason?: string;
};
export type GitCleanUntrackedFilesContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: GitCleanUntrackedFilesGuard;
    allowedRepositoryRoots?: readonly string[];
    grantedPermissions?: readonly GitCleanUntrackedFilesPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type GitCleanUntrackedFilesTarget = {
    repositoryPath: string;
    paths: readonly string[];
    includeDirectories: boolean;
    ignoredMode: GitCleanUntrackedFilesIgnoredMode;
};
export type GitCleanUntrackedFilesRequest = {
    target?: Partial<GitCleanUntrackedFilesTarget>;
    context?: GitCleanUntrackedFilesContext;
    provider?: GitCleanUntrackedFilesProvider;
    timeoutMs?: number;
    metadata?: Readonly<Record<string, unknown>>;
    runtimeId?: string;
    invocationId?: string;
    repositoryPath?: string;
    paths?: readonly string[];
    includeDirectories?: boolean;
    ignoredMode?: GitCleanUntrackedFilesIgnoredMode;
    dryRun?: boolean;
};
export type GitCleanUntrackedFilesRuntimeEntry = {
    owner: "runtime";
    port: "BaseToolExecutorPort.git.runGit";
    method: "runGit";
    binary: "git";
    argvMode: "fixed-clean-untracked-workspace-deletion";
    allowedSubcommand: "clean";
};
export type GitCleanUntrackedFilesRisk = {
    category: "destructive";
    riskLevel: "destructive";
    mutatesRepository: true;
    mutatesWorkingTree: true;
    mutatesIndex: false;
    deletesUntrackedFiles: true;
    mayDeleteIgnoredFiles: boolean;
    repositoryWide: boolean;
    spawnsProcess: true;
    requiresTapApproval: true;
    runtimeOwnsExecution: true;
};
export type GitCleanUntrackedFilesEnvelope = {
    parser: "git-clean-output-v1";
    paths: readonly string[];
    includeDirectories: boolean;
    ignoredMode: GitCleanUntrackedFilesIgnoredMode;
    repositoryWide: boolean;
    exitCode?: number;
    stdoutLineCount: number;
    stderrLineCount: number;
    removedPaths: readonly string[];
    previewPaths: readonly string[];
    unparsedLineCount: number;
    truncated: false;
};
export type GitCleanUntrackedFilesOutput = {
    kind: "agentCore.basicTool.git.cleanUntrackedFiles";
    target: GitCleanUntrackedFilesTarget;
    runtimeEntry: GitCleanUntrackedFilesRuntimeEntry;
    risk: GitCleanUntrackedFilesRisk;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    timeoutMs: number;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    exitCode?: number;
    stdout?: string;
    stderr?: string;
    permissionsRequired: readonly GitCleanUntrackedFilesPermission[];
    unsafeSideEffects: true;
    deletesUntrackedFiles: true;
    resultEnvelope: GitCleanUntrackedFilesEnvelope;
};
export type GitCleanUntrackedFilesPlan = {
    toolId: "git.cleanUntrackedFiles";
    toolKind: "git.cleanUntrackedFiles";
    capability: "clean-untracked-files";
    runtimeId: string;
    invocationId: string;
    repositoryPath: string;
    paths: readonly string[];
    includeDirectories: boolean;
    ignoredMode: GitCleanUntrackedFilesIgnoredMode;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    requiredPermissions: readonly GitCleanUntrackedFilesPermission[];
    runtimeEntry: GitCleanUntrackedFilesRuntimeEntry;
    risk: GitCleanUntrackedFilesRisk;
    dispatch: "dry-run" | "runtime-git-executor";
    dryRun: boolean;
    wouldMutateWorkingTree: true;
    wouldMutateIndex: false;
    unsafeSideEffects: true;
    outputEnvelope: {
        stdoutPreview: "";
        stderrPreview: "";
        parsed: false;
    };
    audit: {
        guard: "git-clean-untracked-runtime-guard";
        event: "basicTool.git.cleanUntrackedFiles.planned";
        governanceRequired: true;
        tapCanWrap: true;
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type GitCleanUntrackedFilesErrorBoundary = "input" | "scope" | "permission" | "governance" | "provider";
export type GitCleanUntrackedFilesErrorCode = "MISSING_REPOSITORY_PATH" | "INVALID_ARGUMENT" | "INVALID_CONTEXT" | "INVALID_PATH" | "PATH_OUTSIDE_SCOPE" | "INVALID_IGNORED_MODE" | "INVALID_TIMEOUT" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type GitCleanUntrackedFilesError = {
    code: GitCleanUntrackedFilesErrorCode;
    message: string;
    boundary: GitCleanUntrackedFilesErrorBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type GitCleanUntrackedFilesAuditEvent = {
    type: string;
    toolId: "git.cleanUntrackedFiles";
    invocationId: string;
    dryRun: boolean;
    repositoryPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type GitCleanUntrackedFilesResult = {
    ok: true;
    toolId: "git.cleanUntrackedFiles";
    output: GitCleanUntrackedFilesOutput;
    plan: GitCleanUntrackedFilesPlan;
    audit: readonly GitCleanUntrackedFilesAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "git.cleanUntrackedFiles";
    error: GitCleanUntrackedFilesError;
    audit: readonly GitCleanUntrackedFilesAuditEvent[];
    events: readonly string[];
};
export type GitCleanUntrackedFilesProviderRequest = {
    repositoryPath: string;
    args: readonly string[];
    timeoutMs?: number;
};
export type GitCleanUntrackedFilesProviderResult = {
    exitCode: number;
    stdout: string;
    stderr: string;
};
export type GitCleanUntrackedFilesProvider = (request: GitCleanUntrackedFilesProviderRequest, context: GitCleanUntrackedFilesContext) => GitCleanUntrackedFilesProviderResult | Promise<GitCleanUntrackedFilesProviderResult>;
export declare const gitCleanUntrackedFilesDescriptor: {
    readonly toolId: "git.cleanUntrackedFiles";
    readonly toolKind: "git.cleanUntrackedFiles";
    readonly capability: "clean-untracked-files";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.gitBase.stash";
    readonly defaultDryRun: true;
    readonly defaultDispatch: "dry-run";
    readonly tapOwnsApproval: true;
    readonly requiresTapApproval: true;
    readonly runtimeEntryPort: "BaseToolExecutorPort.git.runGit";
    readonly operationRisk: "destructive";
    readonly permissionsRequired: readonly ["git:read", "git:write", "filesystem:read", "filesystem:write"];
    readonly defaultTimeoutMs: 30000;
    readonly maxTimeoutMs: 600000;
    readonly unsafeSideEffects: true;
};
export declare function parseGitCleanUntrackedFilesResult(providerResult: GitCleanUntrackedFilesProviderResult | undefined, target: GitCleanUntrackedFilesTarget): GitCleanUntrackedFilesEnvelope;
export declare function planGitCleanUntrackedFiles(request?: GitCleanUntrackedFilesRequest): GitCleanUntrackedFilesResult;
export declare function executeGitCleanUntrackedFiles(request?: GitCleanUntrackedFilesRequest): Promise<GitCleanUntrackedFilesResult>;
