/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { ChildProcess, ExecFileOptions } from 'child_process';
export interface IGitResult {
    /** The standard output from git. */
    readonly stdout: string | Buffer;
    /** The standard error output from git. */
    readonly stderr: string | Buffer;
    /** The exit code of the git process. */
    readonly exitCode: number;
}
/** The result of shelling out to git using a string encoding (default) */
export interface IGitStringResult extends IGitResult {
    /** The standard output from git. */
    readonly stdout: string;
    /** The standard error output from git. */
    readonly stderr: string;
}
/** The result of shelling out to git using a buffer encoding */
export interface IGitBufferResult extends IGitResult {
    /** The standard output from git. */
    readonly stdout: Buffer;
    /** The standard error output from git. */
    readonly stderr: Buffer;
}
/**
 * A set of configuration options that can be passed when
 * executing a git command.
 */
export interface IGitExecutionOptions {
    /**
     * An optional collection of key-value pairs which will be
     * set as environment variables before executing the git
     * process.
     */
    readonly env?: Record<string, string | undefined>;
    /**
     * An optional string or buffer which will be written to
     * the child process stdin stream immediately immediately
     * after spawning the process.
     */
    readonly stdin?: string | Buffer;
    /**
     * The encoding to use when writing to stdin, if the stdin
     * parameter is a string.
     */
    readonly stdinEncoding?: BufferEncoding;
    /**
     * The encoding to use when decoding the stdout and stderr output. Defaults to
     * 'utf8'.
     */
    readonly encoding?: BufferEncoding | 'buffer';
    /**
     * Largest amount of data in bytes allowed on stdout or stderr. If exceeded,
     * the child process is terminated and any output is truncated.
     *
     * See https://nodejs.org/docs/latest-v22.x/api/child_process.html#maxbuffer-and-unicode
     *
     * If not specified the default is Infinity, i.e. the only limit is the amount
     * of allocatable memory on the system.
     */
    readonly maxBuffer?: number;
    /**
     * An optional callback which will be invoked with the child
     * process instance after spawning the git process.
     *
     * Note that if the stdin parameter was specified the stdin
     * stream will be closed by the time this callback fires.
     */
    readonly processCallback?: (process: ChildProcess) => void;
    /**
     * An abort signal which, when triggered, will cause a signal to be sent
     * to the child process (determined by the killSignal option).
     */
    readonly signal?: AbortSignal;
    /**
     * The signal to send to the child process when calling ChildProcess.kill
     * without an explicit signal or when the process is killed due to the
     * AbortSignal being triggered. Defaults to 'SIGTERM'
     */
    readonly killSignal?: ExecFileOptions['killSignal'];
}
export interface IGitStringExecutionOptions extends IGitExecutionOptions {
    readonly encoding?: BufferEncoding;
}
export interface IGitBufferExecutionOptions extends IGitExecutionOptions {
    readonly encoding: 'buffer';
}
/**
 * Execute a command and read the output using the embedded Git environment.
 *
 * The returned promise will reject when the git executable fails to launch,
 * in which case the thrown Error will have a string `code` property. See
 * `errors.ts` for some of the known error codes.
 *
 * See the result's `stderr` and `exitCode` for any potential git error
 * information.
 */
export declare function exec(args: string[], path: string, options?: IGitStringExecutionOptions): Promise<IGitStringResult>;
export declare function exec(args: string[], path: string, options?: IGitBufferExecutionOptions): Promise<IGitBufferResult>;
export declare function exec(args: string[], path: string, options?: IGitExecutionOptions): Promise<IGitResult>;
