import { Command } from '@oclif/core';
import { InstanceCommand } from './instance-command.js';
/**
 * WebDAV root location identifiers.
 *
 * These map to the standard B2C Commerce WebDAV directories.
 */
export declare const WEBDAV_ROOTS: {
    readonly IMPEX: "Impex";
    readonly TEMP: "Temp";
    readonly CARTRIDGES: "Cartridges";
    readonly REALMDATA: "Realmdata";
    readonly CATALOGS: "Catalogs";
    readonly LIBRARIES: "Libraries";
    readonly STATIC: "Static";
    readonly LOGS: "Logs";
    readonly SECURITYLOGS: "Securitylogs";
};
/**
 * Type for valid WebDAV root keys.
 */
export type WebDavRootKey = keyof typeof WEBDAV_ROOTS;
/**
 * Array of valid root location values for flag validation.
 */
export declare const VALID_ROOTS: WebDavRootKey[];
/**
 * Base command for WebDAV file operations.
 *
 * Extends InstanceCommand with a `--root` flag to specify the WebDAV
 * directory root for operations. Provides helper methods for building
 * paths relative to the selected root.
 *
 * @example
 * ```typescript
 * export default class MyWebDavCommand extends WebDavCommand<typeof MyWebDavCommand> {
 *   static args = {
 *     path: Args.string({ required: true, description: 'Remote path' }),
 *   };
 *
 *   async run(): Promise<void> {
 *     const fullPath = this.buildPath(this.args.path);
 *     // fullPath = "Impex/src/data/file.xml" when --root=impex path=src/data/file.xml
 *     const entries = await this.instance.webdav.propfind(fullPath);
 *   }
 * }
 * ```
 */
export declare abstract class WebDavCommand<T extends typeof Command> extends InstanceCommand<T> {
    static baseFlags: {
        root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
        server: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'webdav-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'code-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        username: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        password: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        certificate: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        passphrase: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        selfsigned: import("@oclif/core/interfaces").BooleanFlag<boolean>;
        verify: import("@oclif/core/interfaces").BooleanFlag<boolean>;
        'client-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'client-secret': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'auth-scope': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'short-code': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'tenant-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'auth-methods': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'user-auth': import("@oclif/core/interfaces").BooleanFlag<boolean>;
        'account-manager-host': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'log-level': import("@oclif/core/interfaces").OptionFlag<"trace" | "debug" | "info" | "warn" | "error" | "silent" | undefined, import("@oclif/core/interfaces").CustomOptions>;
        debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
        json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
        jsonl: import("@oclif/core/interfaces").BooleanFlag<boolean>;
        lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        instance: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'project-directory': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
        'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
        'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
    };
    /**
     * Builds a full WebDAV path from the root and a relative path.
     *
     * @param relativePath - Path relative to the root directory
     * @returns Full WebDAV path including the root prefix
     *
     * @example
     * ```typescript
     * // With --root=impex
     * this.buildPath('src/data/file.xml')  // Returns: "Impex/src/data/file.xml"
     * this.buildPath('/src/data/file.xml') // Returns: "Impex/src/data/file.xml"
     * this.buildPath('')                    // Returns: "Impex"
     * ```
     */
    protected buildPath(relativePath: string): string;
    /**
     * Gets the current root path.
     *
     * @returns The WebDAV root path (e.g., "Impex")
     */
    protected get rootPath(): string;
    /**
     * Validates that WebDAV credentials are available before operations.
     * Called by subclasses that need to ensure auth is configured.
     */
    protected ensureWebDavAuth(): void;
}
