import { Command } from '@oclif/core';
import { BaseCommand } from './base-command.js';
import type { AuthMethod } from './config.js';
import type { ResolvedB2CConfig } from '../config/index.js';
import { OAuthStrategy } from '../auth/oauth.js';
import { ImplicitOAuthStrategy } from '../auth/oauth-implicit.js';
/**
 * Base command for operations requiring OAuth authentication.
 * Use this for platform-level operations like ODS, APIs.
 *
 * Environment variables:
 * - SFCC_CLIENT_ID: OAuth client ID
 * - SFCC_CLIENT_SECRET: OAuth client secret
 *
 * For B2C instance specific operations, use InstanceCommand instead.
 */
export declare abstract class OAuthCommand<T extends typeof Command> extends BaseCommand<T> {
    static baseFlags: {
        '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>;
        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>;
        '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>;
        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>;
        'working-directory': import("@oclif/core/interfaces").OptionFlag<string | undefined, 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>;
    };
    /**
     * Parses auth methods from flags.
     * Returns methods in the order specified (priority order).
     */
    protected parseAuthMethods(): AuthMethod[] | undefined;
    protected loadConfiguration(): ResolvedB2CConfig;
    /**
     * Gets the configured Account Manager host.
     */
    protected get accountManagerHost(): string;
    /**
     * Gets an OAuth auth strategy based on allowed auth methods and available credentials.
     *
     * Iterates through allowed methods (in priority order) and returns the first
     * strategy for which the required credentials are available.
     *
     * @throws Error if no allowed method has the required credentials configured
     */
    protected getOAuthStrategy(): OAuthStrategy | ImplicitOAuthStrategy;
    /**
     * Check if OAuth credentials are available.
     * Returns true if clientId is configured (with or without clientSecret).
     */
    protected hasOAuthCredentials(): boolean;
    /**
     * Check if full OAuth credentials (client credentials flow) are available.
     * Returns true only if both clientId and clientSecret are configured.
     */
    protected hasFullOAuthCredentials(): boolean;
    /**
     * Validates that OAuth credentials are configured, errors if not.
     * Only clientId is required (implicit flow can be used without clientSecret).
     */
    protected requireOAuthCredentials(): void;
}
