import type { Logger } from 'winston';
import { UserConfig } from '../containers/google_folder/UserConfigService.js';
export interface GitChange {
    path: string;
    state: {
        isNew: boolean;
        isModified: boolean;
        isDeleted: boolean;
    };
    attachments?: number;
}
interface SshParams {
    privateKeyFile: string;
}
interface Commiter {
    name: string;
    email: string;
}
export declare class GitScanner {
    private logger;
    readonly rootPath: string;
    private email;
    debug: boolean;
    private companionFileResolver;
    constructor(logger: Logger, rootPath: string, email: string);
    private exec;
    isRepo(): Promise<boolean>;
    changes(opts?: {
        includeAssets: boolean;
    }): Promise<GitChange[]>;
    resolveCompanionFiles(filePaths: string[]): Promise<string[]>;
    commit(message: string, selectedFiles: string[], committer: Commiter): Promise<string>;
    pullBranch(remoteBranch: string, sshParams?: SshParams): Promise<void>;
    fetch(sshParams?: SshParams): Promise<void>;
    pushToDir(dir: string): Promise<void>;
    pushBranch(remoteBranch: string, sshParams?: SshParams, localBranch?: string): Promise<void>;
    resetToLocal(sshParams?: SshParams): Promise<void>;
    resetToRemote(remoteBranch: string, sshParams?: SshParams): Promise<void>;
    getOwnerRepo(): Promise<string>;
    getRemoteUrl(): Promise<string>;
    setRemoteUrl(url: string): Promise<void>;
    diff(fileName: string): Promise<({
        oldFile: string;
        newFile: string;
        txt: string;
        patches: never[];
    } | {
        oldFile: string;
        newFile: string;
        txt: string;
        patches?: undefined;
    } | null)[]>;
    history(fileName: string, remoteBranch?: string): Promise<({
        id: any;
        author_name: string;
        message: string;
        date: null;
        head: any;
        remote: boolean;
    } | null)[]>;
    initialize(): Promise<void>;
    setSafeDirectory(): Promise<void>;
    getBranchCommit(branch: string): Promise<string>;
    autoCommit(): Promise<void>;
    countAheadBehind(remoteBranch: string): Promise<{
        ahead: number;
        behind: number;
    }>;
    getStats(userConfig: UserConfig): Promise<{
        initialized: boolean;
        headAhead: number;
        headBehind: number;
        unstaged: number;
        remote_branch: string;
        remote_url: string | null;
    }>;
    removeUntracked(): Promise<void>;
    cmd(cmd: string, arg?: string): Promise<{
        stdout: string;
        stderr: string;
    }>;
    removeCached(filePath: string): Promise<void>;
    setCompanionFileResolver(resolver: (filePath: string) => Promise<string[]>): void;
}
export {};
//# sourceMappingURL=GitScanner.d.ts.map