import { Commando_Programming } from './programming.js';
import { Commando_Basic } from './basic.js';
import { BaseCommando } from '../core/BaseCommando.js';
declare const Super: import("@nu-art/ts-common").Constructor<BaseCommando & Commando_Programming & Commando_Basic>;
type GitCloneParams = {
    outputFolder?: string;
    branch?: string;
    recursive?: boolean;
};
type GitPushParams = {
    remote: string;
    branch: string;
    tags?: boolean;
    force?: boolean;
};
/**
 * Git operations plugin for Commando.
 *
 * Provides Git command methods via a fluent API. Extends Commando_Programming
 * and Commando_Basic (merged via class-merger).
 *
 * **Usage**: Access via `git()` method which returns an object with all
 * Git operations. Methods build commands but don't execute them until
 * `execute()` is called.
 *
 * **Operations**:
 * - Repository operations: clone, fetch, pull, push
 * - Branch operations: checkout, create, merge, get current
 * - Commit operations: add, commit, addAndCommit
 * - Tag operations: create, push
 * - Utility: status, resetHard, gsui (git status UI)
 */
export declare class Commando_Git extends Super {
    /**
     * Clones a Git repository.
     *
     * @param url - Repository URL to clone
     * @param options - Optional clone parameters (branch, recursive, output folder)
     * @returns This instance for method chaining
     */
    git_clone(url: string, options?: GitCloneParams): this;
    /**
     * Checks out a branch.
     *
     * @param branch - Branch name to checkout
     * @returns This instance for method chaining
     */
    git_checkout(branch: string): this;
    /**
     * Creates or updates a tag (force).
     *
     * @param tagName - Tag name to create/update
     * @returns This instance for method chaining
     */
    git_createTag(tagName: string): this;
    /**
     * Commits changes with a message.
     *
     * @param commitMessage - Commit message
     * @returns This instance for method chaining
     */
    git_gitCommit(commitMessage: string): this;
    /**
     * Stages a specific file.
     *
     * @param file - File path to stage
     * @returns This instance for method chaining
     */
    git_add(file: string): this;
    /**
     * Stages all files in the current directory.
     *
     * @returns This instance for method chaining
     */
    git_addAll(): this;
    /**
     * Stages all files and commits with a message.
     *
     * @param commitMessage - Commit message
     * @returns This instance for method chaining
     */
    git_addAndCommit(commitMessage: string): this;
    /**
     * Pushes to a remote branch.
     *
     * @param options - Push parameters (remote, branch, tags, force)
     * @returns This instance for method chaining
     */
    git_push(options?: GitPushParams): this;
    /**
     * Pushes all tags to remote (force).
     *
     * @returns This instance for method chaining
     */
    git_pushTags(): this;
    /**
     * Fetches from remote.
     *
     * @returns This instance for method chaining
     */
    git_fetch(): this;
    /**
     * Resets repository to a specific tag/commit (hard reset).
     *
     * @param tag - Optional tag or commit hash (default: empty string)
     * @returns This instance for method chaining
     */
    git_resetHard(tag?: string): this;
    /**
     * Gets the current branch name.
     *
     * @returns This instance for method chaining
     */
    git_getCurrentBranch(): this;
    /**
     * Pulls from remote with optional parameters.
     *
     * @param params - Optional pull parameters
     * @returns This instance for method chaining
     */
    git_pull(params: string): this;
    /**
     * Merges a branch into the current branch.
     *
     * @param mergeFrom - Branch to merge from
     * @returns This instance for method chaining
     */
    git_merge(mergeFrom: string): this;
    /**
     * Creates a new branch and sets upstream.
     *
     * @param branch - Branch name to create
     * @returns This instance for method chaining
     */
    git_createBranch(branch: string): this;
    /**
     * Updates git submodules (recursive, init if needed).
     *
     * @param modules - Optional module paths (default: empty string)
     * @returns This instance for method chaining
     */
    git_gsui(modules?: string): this;
    /**
     * Shows git status.
     *
     * @returns This instance for method chaining
     */
    git_status(): this;
}
export {};
