import type { NodeishFilesystem } from "@lix-js/fs";
import type { RepoContext, RepoState } from "../openRepository.js";
export type OptStatus = "unmodified" | "materialized" | "ignored";
type StatusText = "unmodified" | "*added" | "*added2" | "added" | "*modified" | "*modified2" | "modified" | "*deleted" | "deleted" | "*absent" | "*undeletemodified" | "*unmodified" | "*undeleted" | "unknown" | "ignored";
type StatusList = [string, StatusText][];
export type StatusArgs = {
    ensureFirstBatch: () => Promise<void>;
    fs: NodeishFilesystem;
    /** The [working tree](dir-vs-gitdir.md) directory path */
    dir: string;
    /**
     * The [git directory](dir-vs-gitdir.md) path
     * @default join(dir, ".git")
     */
    gitdir?: string;
    /**
     * Optionally specify a different commit to compare against the workdir and stage instead of the HEAD
     * @default "HEAD"
     */
    ref?: string;
    /**
     * Limit the query to the given files and directories
     */
    filepaths?: string[];
    /** Filter the results to only those whose filepath matches a function. */
    filter?: (filepath: string) => boolean;
    /** (experimental filter option) TODO document */
    sparseFilter?: (entry: {
        filename: string;
        type: "file" | "folder" | "symlink";
    }) => boolean;
    /** an isogit cache object */
    cache?: object;
    /**
     * include normally excluded statuses
     * @default []
     **/
    includeStatus?: OptStatus[];
    /**
     * include hashes of the files for workdir, head and staging
     * @default false
     */
    addHashes?: boolean;
};
export declare function statusList(ctx: RepoContext, state: RepoState, statusArg?: Pick<StatusArgs, "filter" | "filepaths" | "includeStatus">): ReturnType<typeof _statusList>;
/**
 * Efficiently get the status of multiple files at once.
 */
export declare function _statusList({ fs, ensureFirstBatch, dir, gitdir, ref, filepaths, filter, sparseFilter, // experimental, not yet exposed as lix api!
cache, includeStatus, addHashes, }: StatusArgs): Promise<StatusList>;
export {};
//# sourceMappingURL=status-list.d.ts.map