import { Command } from '@oclif/core'; import { OAuthCommand } from './oauth-command.js'; import type { ResolvedB2CConfig } from '../config/index.js'; import type { B2CInstance } from '../instance/index.js'; import { B2CLifecycleRunner, type B2COperationType, type B2COperationContext, type B2COperationResult, type BeforeB2COperationResult } from './lifecycle.js'; /** * Base command for B2C instance operations. * Use this for commands that interact with a specific B2C instance * (sites, code upload, jobs, etc.) * * Environment variables: * - SFCC_SERVER: B2C instance hostname * - SFCC_WEBDAV_SERVER: Separate WebDAV hostname (optional) * - SFCC_CODE_VERSION: Code version * - SFCC_USERNAME: Username for Basic Auth * - SFCC_PASSWORD: Password/access key for Basic Auth * - Plus all from OAuthCommand (SFCC_CLIENT_ID, SFCC_CLIENT_SECRET) * * Provides: * - Server/hostname connection flags * - Both Basic auth and OAuth support * - Unified B2CInstance with typed API clients * * @example * export default class MySiteCommand extends InstanceCommand { * async run(): Promise { * // Single instance for all operations * const { data } = await this.instance.ocapi.GET('/sites', {}); * await this.instance.webdav.mkcol('Cartridges/v1'); * } * } */ export declare abstract class InstanceCommand extends OAuthCommand { static baseFlags: { server: import("@oclif/core/interfaces").OptionFlag; 'webdav-server': import("@oclif/core/interfaces").OptionFlag; 'code-version': import("@oclif/core/interfaces").OptionFlag; username: import("@oclif/core/interfaces").OptionFlag; password: import("@oclif/core/interfaces").OptionFlag; certificate: import("@oclif/core/interfaces").OptionFlag; passphrase: import("@oclif/core/interfaces").OptionFlag; selfsigned: import("@oclif/core/interfaces").BooleanFlag; verify: import("@oclif/core/interfaces").BooleanFlag; 'client-id': import("@oclif/core/interfaces").OptionFlag; 'client-secret': import("@oclif/core/interfaces").OptionFlag; 'auth-scope': import("@oclif/core/interfaces").OptionFlag; 'short-code': import("@oclif/core/interfaces").OptionFlag; 'tenant-id': import("@oclif/core/interfaces").OptionFlag; 'auth-methods': import("@oclif/core/interfaces").OptionFlag; 'user-auth': import("@oclif/core/interfaces").BooleanFlag; 'account-manager-host': import("@oclif/core/interfaces").OptionFlag; 'jwt-cert': import("@oclif/core/interfaces").OptionFlag; 'jwt-key': import("@oclif/core/interfaces").OptionFlag; 'jwt-passphrase': import("@oclif/core/interfaces").OptionFlag; '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; json: import("@oclif/core/interfaces").BooleanFlag; jsonl: import("@oclif/core/interfaces").BooleanFlag; lang: import("@oclif/core/interfaces").OptionFlag; config: import("@oclif/core/interfaces").OptionFlag; instance: import("@oclif/core/interfaces").OptionFlag; 'project-directory': import("@oclif/core/interfaces").OptionFlag; 'extra-query': import("@oclif/core/interfaces").OptionFlag; 'extra-body': import("@oclif/core/interfaces").OptionFlag; 'extra-headers': import("@oclif/core/interfaces").OptionFlag; }; private _instance?; /** Lifecycle runner for B2C operation hooks */ protected lifecycleRunner?: B2CLifecycleRunner; /** * Override init to collect lifecycle providers from plugins. */ init(): Promise; /** * Collects lifecycle providers from plugins via the `b2c:operation-lifecycle` hook. */ protected collectLifecycleProviders(): Promise; /** * Creates a B2C operation context for lifecycle hooks. * * @param operationType - Type of B2C operation * @param metadata - Operation-specific metadata * @returns B2C operation context */ protected createContext(operationType: B2COperationType, metadata: Record): B2COperationContext; /** * Runs beforeOperation hooks for all providers. * * @param context - B2C operation context * @returns Result indicating if operation should be skipped */ protected runBeforeHooks(context: B2COperationContext): Promise; /** * Runs afterOperation hooks for all providers. * * @param context - B2C operation context * @param result - Operation result */ protected runAfterHooks(context: B2COperationContext, result: B2COperationResult): Promise; protected loadConfiguration(): Promise; /** * Gets the B2CInstance for this command. * * The instance is lazily created from the resolved configuration. * It provides typed API clients for WebDAV and OCAPI operations. * * @example * // WebDAV operations (uses Basic auth if available) * await this.instance.webdav.mkcol('Cartridges/v1'); * * // OCAPI operations (uses OAuth) * const { data } = await this.instance.ocapi.GET('/sites', {}); */ protected get instance(): B2CInstance; /** * Check if WebDAV credentials are available (Basic or OAuth including implicit). */ protected hasWebDavCredentials(): boolean; /** * Validates that server is configured, errors if not. */ protected requireServer(): void; /** * Validates that code version is configured, errors if not. */ protected requireCodeVersion(): void; /** * Validates that WebDAV credentials are configured, errors if not. */ protected requireWebDavCredentials(): void; }