import type { PathSpec, StatFn } from '../../../../types.ts';
import type { LinkView, MountView } from '../../../../view/types.ts';
import { type DirProbe, type WalkFn } from '../archive/walk.ts';
import type { CreateResult } from './types.ts';
export declare function stripPrefix(spelled: string): [string, string];
/**
 * GNU tar's `tar: NAME: Cannot VERB: REASON` diagnostic; `who` is the
 * program signing it, tar or the compressor child it runs. Mirrors Python's
 * cannot.
 */
export declare function cannot(name: string, verb: string, reason: string, who?: string): string;
export declare function checkDirectories(directories: readonly PathSpec[], isDir: DirProbe, stat: StatFn): Promise<string[]>;
/**
 * Decide every member of a new archive, before writing any of it.
 *
 * One pass per operand, in the order they were typed, each contributing
 * itself and then its subtree. GNU walks a directory operand rather than
 * refusing it, and mirage now does too; the one deliberate divergence is
 * ordering, since GNU emits siblings in readdir order (filesystem-dependent)
 * and this sorts them, the same choice `du` already documents.
 */
export declare function planCreate(paths: readonly PathSpec[], deps: {
    archive: PathSpec;
    exclude: string | null;
    dereference: boolean;
    stat: StatFn;
    walk: WalkFn;
    isDir: DirProbe;
    directories?: readonly PathSpec[];
    links?: LinkView | null;
    mounts?: MountView | null;
    oneFileSystem?: boolean;
}): Promise<CreateResult>;
//# sourceMappingURL=create.d.ts.map