export type GitGetRepositoryStatusPermission = "git:read" | "filesystem:read";
export type GitGetRepositoryStatusErrorBoundary = "input" | "scope" | "permission" | "contract" | "governance" | "provider";
export type GitRepositoryStatusGuard = {
    allowed?: boolean;
    accepted?: boolean;
    reason?: string;
};
export type GitGetRepositoryStatusContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: GitRepositoryStatusGuard;
    allowedRepositoryRoots?: readonly string[];
    grantedPermissions?: readonly GitGetRepositoryStatusPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type GitGetRepositoryStatusTarget = {
    repositoryPath: string;
    includeBranch?: boolean;
    includeUntracked?: boolean;
    porcelainVersion?: "v1" | "v2";
};
export type GitGetRepositoryStatusRequest = {
    target?: Partial<GitGetRepositoryStatusTarget>;
    context?: GitGetRepositoryStatusContext;
    provider?: GitRepositoryStatusProvider;
    timeoutMs?: number;
    metadata?: Readonly<Record<string, unknown>>;
};
export type GitRepositoryStatusEntry = {
    path: string;
    indexStatus: string;
    workingTreeStatus: string;
    originalPath?: string;
};
export type GitRepositoryStatusEnvelope = {
    branch?: string;
    upstream?: string;
    ahead?: number;
    behind?: number;
    entries: readonly GitRepositoryStatusEntry[];
};
export type GitGetRepositoryStatusErrorCode = "MISSING_REPOSITORY_PATH" | "INVALID_ARGUMENT" | "INVALID_CONTEXT" | "INVALID_PORCELAIN_VERSION" | "INVALID_TIMEOUT" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type GitGetRepositoryStatusError = {
    code: GitGetRepositoryStatusErrorCode;
    message: string;
    boundary: GitGetRepositoryStatusErrorBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type GitGetRepositoryStatusAuditEvent = {
    type: string;
    toolId: "git.getRepositoryStatus";
    invocationId: string;
    dryRun: boolean;
    repositoryPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type GitRepositoryStatusRuntimeEntry = {
    owner: "runtime";
    port: "BaseToolExecutorPort.git.runGit";
    method: "runGit";
    binary: "git";
    argvMode: "fixed-status-read";
    allowedSubcommand: "status";
};
export type GitRepositoryStatusRisk = {
    category: "read-only-inspection";
    riskLevel: "normal";
    mutatesRepository: false;
    mutatesWorkingTree: false;
    spawnsProcess: true;
    requiresTapApproval: true;
    runtimeOwnsExecution: true;
};
export type GitGetRepositoryStatusPlan = {
    toolId: "git.getRepositoryStatus";
    capability: "get-repository-status";
    runtimeId: string;
    invocationId: string;
    repositoryPath: string;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    porcelainVersion: "v1" | "v2";
    includeUntracked: boolean;
    timeoutMs: number;
    requiredPermissions: readonly GitGetRepositoryStatusPermission[];
    runtimeEntry: GitRepositoryStatusRuntimeEntry;
    risk: GitRepositoryStatusRisk;
    dispatch: "dry-run" | "runtime-git-executor";
    dryRun: boolean;
    outputEnvelope: {
        exitCode?: number;
        stdoutPreview: "";
        stderrPreview: "";
        parsed: false;
    };
    audit: {
        guard: "git-status-runtime-guard";
        event: "basicTool.git.getRepositoryStatus.planned";
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type GitGetRepositoryStatusOutput = {
    kind: "agentCore.basicTool.git.getRepositoryStatus";
    target: GitGetRepositoryStatusTarget;
    runtimeEntry: GitRepositoryStatusRuntimeEntry;
    risk: GitRepositoryStatusRisk;
    gitArgs: readonly string[];
    commandPreview: readonly string[];
    timeoutMs: number;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    exitCode?: number;
    stdout?: string;
    stderr?: string;
    permissionsRequired: readonly GitGetRepositoryStatusPermission[];
    unsafeSideEffects: false;
    resultEnvelope: GitRepositoryStatusEnvelope;
};
export type GitGetRepositoryStatusResult = {
    ok: true;
    toolId: "git.getRepositoryStatus";
    output: GitGetRepositoryStatusOutput;
    plan?: GitGetRepositoryStatusPlan;
    audit: readonly GitGetRepositoryStatusAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "git.getRepositoryStatus";
    error: GitGetRepositoryStatusError;
    audit: readonly GitGetRepositoryStatusAuditEvent[];
    events: readonly string[];
};
export type GitRepositoryStatusProviderRequest = {
    repositoryPath: string;
    args: readonly string[];
    timeoutMs?: number;
};
export type GitRepositoryStatusProviderResult = {
    exitCode: number;
    stdout: string;
    stderr: string;
};
export type GitRepositoryStatusProvider = (request: GitRepositoryStatusProviderRequest, context: GitGetRepositoryStatusContext) => GitRepositoryStatusProviderResult | Promise<GitRepositoryStatusProviderResult>;
export declare const gitGetRepositoryStatusDescriptor: {
    readonly toolId: "git.getRepositoryStatus";
    readonly capability: "get-repository-status";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.gitBase.inspection";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly requiresTapApproval: true;
    readonly runtimeEntryPort: "BaseToolExecutorPort.git.runGit";
    readonly operationRisk: "read-only-inspection";
    readonly permissionsRequired: readonly ["git:read", "filesystem:read"];
    readonly defaultPorcelainVersion: "v1";
    readonly defaultTimeoutMs: 30000;
    readonly maxTimeoutMs: 600000;
};
export declare function parseGitRepositoryStatus(stdout: string, porcelainVersion?: "v1" | "v2"): GitRepositoryStatusEnvelope;
export declare function planGitRepositoryStatusRead(request?: GitGetRepositoryStatusRequest): GitGetRepositoryStatusResult;
export declare function executeGitRepositoryStatus(request?: GitGetRepositoryStatusRequest): Promise<GitGetRepositoryStatusResult>;
