/**
 * Shared git API types for the bunny-agent daemon.
 *
 * These types define the HTTP API contract for `/api/git/*` endpoints.
 * Consumers (e.g. kapps/apps/buda) can import them via
 * `@bunny-agent/daemon/shared/git-types`.
 */
import type { ApiEnvelope } from "../utils.js";
export type { ApiEnvelope } from "../utils.js";
export interface GitStatusRequest {
    volume?: string;
    repo: string;
}
export interface GitCommandResult {
    stdout: string;
    stderr: string;
    code: number;
}
export type GitStatusResponse = ApiEnvelope<GitCommandResult>;
export interface GitExecRequest {
    volume?: string;
    repo: string;
    args: string[];
}
export type GitExecResponse = ApiEnvelope<GitCommandResult>;
export interface GitCloneRequest {
    volume?: string;
    repo_parent: string;
    url: string;
    branch?: string;
    depth?: number;
    target_dir?: string;
    list_files_limit?: number;
}
export interface GitCloneResult {
    repo_path: string;
    tracked_files_count: number;
    tracked_files: string[];
    tracked_files_truncated: boolean;
    command: GitCommandResult;
}
export type GitCloneResponse = ApiEnvelope<GitCloneResult>;
export interface GitInitRequest {
    volume?: string;
    repo: string;
    initial_branch?: string;
}
export type GitInitResponse = ApiEnvelope<GitCommandResult>;
import type * as git from "isomorphic-git";
export type GitCommands = typeof git;
export type FunctionKeys<T> = {
    [K in keyof T]: T[K] extends (...args: infer _Args) => unknown ? K : never;
}[keyof T];
export type GitCommandKeys = Exclude<FunctionKeys<GitCommands>, "STAGE" | "TREE" | "WORKDIR">;
export type OmittedOptions = "fs" | "http" | "dir" | "core";
export type GitRpcOptions<K extends GitCommandKeys> = Parameters<GitCommands[K]>[0] extends undefined ? undefined : Omit<Parameters<GitCommands[K]>[0], OmittedOptions>;
export interface GitRpcRequest<K extends GitCommandKeys> {
    volume?: string;
    repo: string;
    command: K;
    options?: GitRpcOptions<K>;
}
export type GitRpcResponse<K extends GitCommandKeys> = ApiEnvelope<Awaited<ReturnType<GitCommands[K]>>>;
/**
 * Creates a typesafe proxy client for isomorphic-git that sends commands
 * over HTTP to the daemon's `/api/git/rpc` endpoint.
 */
export declare function createGitProxy(endpoint: string, fetchFn: typeof fetch, defaultPayload: {
    volume?: string;
    repo: string;
}): {
    push: (options: Omit<{
        fs: git.FsClient;
        http: git.HttpClient;
        onProgress?: git.ProgressCallback | undefined;
        onMessage?: git.MessageCallback | undefined;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        onPrePush?: git.PrePushCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        url?: string | undefined;
        remote?: string | undefined;
        remoteRef?: string | undefined;
        force?: boolean | undefined;
        delete?: boolean | undefined;
        corsProxy?: string | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.PushResult>;
    abortMerge: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        commit?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    add: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        filepath: string | string[];
        cache?: object;
        force?: boolean | undefined;
        parallel?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    addNote: (options: Omit<{
        fs: git.FsClient;
        onSign?: git.SignCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        oid: string;
        note: string | Uint8Array;
        force?: boolean | undefined;
        author?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        signingKey?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<string>;
    addRemote: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        remote: string;
        url: string;
        force?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    annotatedTag: (options: Omit<{
        fs: git.FsClient;
        onSign?: git.SignCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        message?: string | undefined;
        object?: string | undefined;
        tagger?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        gpgsig?: string | undefined;
        signingKey?: string | undefined;
        force?: boolean | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    branch: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        object?: string | undefined;
        checkout?: boolean | undefined;
        force?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    checkout: (options: Omit<{
        fs: git.FsClient;
        onProgress?: git.ProgressCallback | undefined;
        onPostCheckout?: git.PostCheckoutCallback | undefined;
        dir: string;
        gitdir?: string | undefined;
        ref?: string | undefined;
        filepaths?: string[] | undefined;
        remote?: string | undefined;
        noCheckout?: boolean | undefined;
        noUpdateHead?: boolean | undefined;
        dryRun?: boolean | undefined;
        force?: boolean | undefined;
        track?: boolean | undefined;
        cache?: object;
        nonBlocking?: boolean | undefined;
        batchSize?: number | undefined;
    }, OmittedOptions>) => Promise<void>;
    cherryPick: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        cache?: object;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        dryRun?: boolean | undefined;
        noUpdateBranch?: boolean | undefined;
        abortOnConflict?: boolean | undefined;
        mergeDriver?: git.MergeDriverCallback | undefined;
    }, OmittedOptions>) => Promise<string>;
    clone: (options: Omit<{
        fs: git.FsClient;
        http: git.HttpClient;
        onProgress?: git.ProgressCallback | undefined;
        onMessage?: git.MessageCallback | undefined;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        onPostCheckout?: git.PostCheckoutCallback | undefined;
        dir: string;
        gitdir?: string | undefined;
        url: string;
        corsProxy?: string | undefined;
        ref?: string | undefined;
        singleBranch?: boolean | undefined;
        noCheckout?: boolean | undefined;
        noTags?: boolean | undefined;
        remote?: string | undefined;
        depth?: number | undefined;
        since?: Date | undefined;
        exclude?: string[] | undefined;
        relative?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        cache?: object;
        nonBlocking?: boolean | undefined;
        batchSize?: number | undefined;
    }, OmittedOptions>) => Promise<void>;
    commit: (options: Omit<{
        fs: git.FsClient;
        onSign?: git.SignCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        message?: string | undefined;
        author?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        signingKey?: string | undefined;
        amend?: boolean | undefined;
        dryRun?: boolean | undefined;
        noUpdateBranch?: boolean | undefined;
        ref?: string | undefined;
        parent?: string[] | undefined;
        tree?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<string>;
    currentBranch: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        fullname?: boolean | undefined;
        test?: boolean | undefined;
    }, OmittedOptions>) => Promise<string | void>;
    deleteBranch: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
    }, OmittedOptions>) => Promise<void>;
    deleteRef: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
    }, OmittedOptions>) => Promise<void>;
    deleteRemote: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        remote: string;
    }, OmittedOptions>) => Promise<void>;
    deleteTag: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
    }, OmittedOptions>) => Promise<void>;
    expandOid: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        cache?: object;
    }, OmittedOptions>) => Promise<string>;
    expandRef: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
    }, OmittedOptions>) => Promise<string>;
    fastForward: (options: Omit<{
        fs: git.FsClient;
        http: git.HttpClient;
        onProgress?: git.ProgressCallback | undefined;
        onMessage?: git.MessageCallback | undefined;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        dir: string;
        gitdir?: string | undefined;
        ref?: string | undefined;
        url?: string | undefined;
        remote?: string | undefined;
        remoteRef?: string | undefined;
        corsProxy?: string | undefined;
        singleBranch?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    fetch: (options: Omit<{
        fs: git.FsClient;
        http: git.HttpClient;
        onProgress?: git.ProgressCallback | undefined;
        onMessage?: git.MessageCallback | undefined;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        url?: string | undefined;
        remote?: string | undefined;
        singleBranch?: boolean | undefined;
        ref?: string | undefined;
        remoteRef?: string | undefined;
        tags?: boolean | undefined;
        depth?: number | undefined;
        relative?: boolean | undefined;
        since?: Date | undefined;
        exclude?: string[] | undefined;
        prune?: boolean | undefined;
        pruneTags?: boolean | undefined;
        corsProxy?: string | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.FetchResult>;
    findMergeBase: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oids: string[];
        cache?: object;
    }, OmittedOptions>) => Promise<any[]>;
    findRoot: (options: Omit<{
        fs: git.FsClient;
        filepath: string;
    }, OmittedOptions>) => Promise<string>;
    getConfig: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        path: string;
    }, OmittedOptions>) => Promise<any>;
    getConfigAll: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        path: string;
    }, OmittedOptions>) => Promise<any[]>;
    getRemoteInfo: (options: Omit<{
        http: git.HttpClient;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        url: string;
        corsProxy?: string | undefined;
        forPush?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
    }, OmittedOptions>) => Promise<git.GetRemoteInfoResult>;
    getRemoteInfo2: (options: Omit<{
        http: git.HttpClient;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        url: string;
        corsProxy?: string | undefined;
        forPush?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        protocolVersion?: 2 | 1 | undefined;
    }, OmittedOptions>) => Promise<git.GetRemoteInfo2Result>;
    hashBlob: (options: Omit<{
        object: Uint8Array | string;
    }, OmittedOptions>) => Promise<git.HashBlobResult>;
    indexPack: (options: Omit<{
        fs: git.FsClient;
        onProgress?: git.ProgressCallback | undefined;
        dir: string;
        gitdir?: string | undefined;
        filepath: string;
        cache?: object;
    }, OmittedOptions>) => Promise<{
        oids: string[];
    }>;
    init: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        bare?: boolean | undefined;
        defaultBranch?: string | undefined;
    }, OmittedOptions>) => Promise<void>;
    isDescendent: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        ancestor: string;
        depth?: number | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<boolean>;
    isIgnored: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        filepath: string;
    }, OmittedOptions>) => Promise<boolean>;
    listBranches: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        remote?: string | undefined;
    }, OmittedOptions>) => Promise<string[]>;
    listFiles: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<string[]>;
    listNotes: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<{
        target: string;
        note: string;
    }[]>;
    listRefs: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        filepath?: string | undefined;
    }, OmittedOptions>) => Promise<string[]>;
    listRemotes: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
    }, OmittedOptions>) => Promise<{
        remote: string;
        url: string;
    }[]>;
    listServerRefs: (options: Omit<{
        http: git.HttpClient;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        url: string;
        corsProxy?: string | undefined;
        forPush?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        protocolVersion?: 2 | 1 | undefined;
        prefix?: string | undefined;
        symrefs?: boolean | undefined;
        peelTags?: boolean | undefined;
    }, OmittedOptions>) => Promise<git.ServerRef[]>;
    listTags: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
    }, OmittedOptions>) => Promise<string[]>;
    log: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        filepath?: string | undefined;
        ref?: string | undefined;
        depth?: number | undefined;
        since?: Date | undefined;
        force?: boolean | undefined;
        follow?: boolean | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadCommitResult[]>;
    merge: (options: Omit<{
        fs: git.FsClient;
        onSign?: git.SignCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ours?: string | undefined;
        theirs: string;
        fastForward?: boolean | undefined;
        fastForwardOnly?: boolean | undefined;
        dryRun?: boolean | undefined;
        noUpdateBranch?: boolean | undefined;
        abortOnConflict?: boolean | undefined;
        message?: string | undefined;
        author?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        signingKey?: string | undefined;
        cache?: object;
        mergeDriver?: git.MergeDriverCallback | undefined;
        allowUnrelatedHistories?: boolean | undefined;
    }, OmittedOptions>) => Promise<git.MergeResult>;
    packObjects: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oids: string[];
        write?: boolean | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.PackObjectsResult>;
    pull: (options: Omit<{
        fs: git.FsClient;
        http: git.HttpClient;
        onProgress?: git.ProgressCallback | undefined;
        onMessage?: git.MessageCallback | undefined;
        onAuth?: git.AuthCallback | undefined;
        onAuthFailure?: git.AuthFailureCallback | undefined;
        onAuthSuccess?: git.AuthSuccessCallback | undefined;
        dir: string;
        gitdir?: string | undefined;
        ref?: string | undefined;
        url?: string | undefined;
        remote?: string | undefined;
        remoteRef?: string | undefined;
        prune?: boolean | undefined;
        pruneTags?: boolean | undefined;
        corsProxy?: string | undefined;
        singleBranch?: boolean | undefined;
        fastForward?: boolean | undefined;
        fastForwardOnly?: boolean | undefined;
        headers?: {
            [x: string]: string;
        } | undefined;
        author?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        signingKey?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    readBlob: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        filepath?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadBlobResult>;
    readCommit: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadCommitResult>;
    readNote: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        oid: string;
        cache?: object;
    }, OmittedOptions>) => Promise<Uint8Array<ArrayBufferLike>>;
    readObject: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        format?: "content" | "parsed" | "deflated" | "wrapped" | undefined;
        filepath?: string | undefined;
        encoding?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadObjectResult>;
    readTag: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadTagResult>;
    readTree: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        oid: string;
        filepath?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<git.ReadTreeResult>;
    remove: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        filepath: string;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    removeNote: (options: Omit<{
        fs: git.FsClient;
        onSign?: git.SignCallback | undefined;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref?: string | undefined;
        oid: string;
        author?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        committer?: {
            name?: string | undefined;
            email?: string | undefined;
            timestamp?: number | undefined;
            timezoneOffset?: number | undefined;
        } | undefined;
        signingKey?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<string>;
    renameBranch: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        oldref: string;
        checkout?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    resetIndex: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        filepath: string;
        ref?: string | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<void>;
    resolveRef: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        depth?: number | undefined;
    }, OmittedOptions>) => Promise<string>;
    setConfig: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        path: string;
        value: string | boolean | number | void;
        append?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    stash: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        op?: "pop" | "push" | "clear" | "drop" | "apply" | "list" | "create" | undefined;
        message?: string | undefined;
        refIdx?: number | undefined;
    }, OmittedOptions>) => Promise<string | void>;
    status: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        filepath: string;
        cache?: object;
    }, OmittedOptions>) => Promise<"ignored" | "unmodified" | "*modified" | "*deleted" | "*added" | "absent" | "modified" | "deleted" | "added" | "*unmodified" | "*absent" | "*undeleted" | "*undeletemodified">;
    statusMatrix: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        ref?: string | undefined;
        filepaths?: string[] | undefined;
        filter?: ((arg0: string) => boolean) | undefined;
        cache?: object;
        ignored?: boolean | undefined;
    }, OmittedOptions>) => Promise<git.StatusRow[]>;
    tag: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        object?: string | undefined;
        force?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    version: () => Promise<string>;
    walk: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        trees: git.Walker[];
        map?: git.WalkerMap | undefined;
        reduce?: git.WalkerReduce | undefined;
        iterate?: git.WalkerIterate | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<any>;
    writeBlob: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        blob: Uint8Array;
    }, OmittedOptions>) => Promise<string>;
    writeCommit: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        commit: git.CommitObject;
    }, OmittedOptions>) => Promise<string>;
    writeObject: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        object: string | Uint8Array | git.CommitObject | git.TreeObject | git.TagObject;
        type?: "blob" | "commit" | "tree" | "tag" | undefined;
        format?: "content" | "parsed" | "deflated" | "wrapped" | undefined;
        oid?: string | undefined;
        encoding?: string | undefined;
    }, OmittedOptions>) => Promise<string>;
    writeRef: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        ref: string;
        value: string;
        force?: boolean | undefined;
        symbolic?: boolean | undefined;
    }, OmittedOptions>) => Promise<void>;
    writeTag: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        tag: git.TagObject;
    }, OmittedOptions>) => Promise<string>;
    writeTree: (options: Omit<{
        fs: git.FsClient;
        dir?: string | undefined;
        gitdir?: string | undefined;
        tree: git.TreeObject;
    }, OmittedOptions>) => Promise<string>;
    updateIndex: (options: Omit<{
        fs: git.FsClient;
        dir: string;
        gitdir?: string | undefined;
        filepath: string;
        oid?: string | undefined;
        mode?: number | undefined;
        add?: boolean | undefined;
        remove?: boolean | undefined;
        force?: boolean | undefined;
        cache?: object;
    }, OmittedOptions>) => Promise<string | void>;
};
/**
 * Request body for POST /api/git/simple-git-rpc.
 * The `command` field must be a member of `SIMPLE_GIT_RPC_COMMANDS`.
 */
export interface SimpleGitRpcRequest {
    volume?: string;
    repo: string;
    command: string;
    options?: Record<string, unknown>;
}
/** Response envelope for POST /api/git/simple-git-rpc */
export type SimpleGitRpcResponse = ApiEnvelope<unknown>;
/** Client type returned by createSimpleGitProxy */
export type SimpleGitProxyClient = Record<string, (options?: Record<string, unknown>) => Promise<unknown>>;
/**
 * Creates a proxy client for the simple-git RPC endpoint.
 * Each property access returns an async function that POSTs to the endpoint.
 *
 * @param endpoint       Full URL of POST /api/git/simple-git-rpc
 * @param fetchFn        fetch implementation (pass globalThis.fetch or a polyfill)
 * @param defaultPayload { volume?, repo } merged into every request body
 */
export declare function createSimpleGitProxy(endpoint: string, fetchFn: typeof fetch, defaultPayload: {
    volume?: string;
    repo: string;
}): SimpleGitProxyClient;
//# sourceMappingURL=git-types.d.ts.map