import type { B2CInstance } from '../instance/index.js';
import type { ScaffoldChoice, ScaffoldParameter, DynamicParameterSource, SourceResult } from './types.js';
/**
 * SCAPI/OCAPI hook extension points.
 */
export declare const SCAPI_OCAPI_HOOK_POINTS: ScaffoldChoice[];
/**
 * System hook extension points.
 * Verified against Script API: CalculateHooks, PaymentHooks, OrderHooks,
 * BasketMergeHooks, CheckoutHooks, ReturnHooks, ShippingOrderHooks, RequestHooks
 */
export declare const SYSTEM_HOOK_POINTS: ScaffoldChoice[];
/**
 * All hook extension points (combined).
 */
export declare const HOOK_POINTS: ScaffoldChoice[];
/**
 * Resolve a local (non-remote) parameter source.
 * Does not require authentication.
 *
 * @param source - The source type to resolve
 * @param projectRoot - Project root directory for cartridge discovery
 * @returns Resolved choices and optional path mapping
 */
export declare function resolveLocalSource(source: DynamicParameterSource, projectRoot: string): SourceResult;
/**
 * Resolve a remote parameter source.
 * Requires authenticated B2CInstance (follows SDK operation pattern).
 *
 * @param source - The source type
 * @param instance - Authenticated B2C instance
 * @returns Promise resolving to choices array
 * @throws Error if API call fails
 */
export declare function resolveRemoteSource(source: DynamicParameterSource, instance: B2CInstance): Promise<ScaffoldChoice[]>;
/**
 * Check if a source requires remote API access.
 *
 * @param source - The source type to check
 * @returns True if the source requires remote access
 */
export declare function isRemoteSource(source: DynamicParameterSource): boolean;
/**
 * Validate a value against a dynamic source (local only).
 * Used for non-interactive validation of provided values.
 *
 * @param source - The source type
 * @param value - The value to validate
 * @param projectRoot - Project root for local sources
 * @returns Object with valid status and available choices if invalid
 */
export declare function validateAgainstSource(source: DynamicParameterSource, value: string, projectRoot: string): {
    valid: boolean;
    availableChoices?: string[];
};
/**
 * Path to use for scaffold destination so files are generated under outputDir (e.g. working directory).
 * Returns a path relative to projectRoot when the cartridge is under projectRoot, so the executor
 * joins with outputDir instead of ignoring it. Otherwise returns the absolute path.
 */
export declare function cartridgePathForDestination(absolutePath: string, projectRoot: string): string;
/**
 * Result of detecting a source parameter value from a filesystem path.
 */
export interface SourceDetectionResult {
    /** The resolved parameter value (e.g., cartridge name) */
    value: string;
    /** Companion variables to set (e.g., { cartridgeNamePath: "cartridges/app_custom" }) */
    companionVariables: Record<string, string>;
}
/**
 * Detect a parameter's source value from a filesystem context path.
 *
 * For `cartridges` source: walks up from `contextPath` looking for a `.project` file
 * (cartridge marker), stopping at projectRoot. On match returns the cartridge name and
 * companion path variable.
 *
 * @param param - The scaffold parameter with a `source` field
 * @param contextPath - Filesystem path providing context (e.g., right-clicked folder)
 * @param projectRoot - Project root directory
 * @returns Detection result, or undefined if the source could not be detected
 */
export declare function detectSourceFromPath(param: ScaffoldParameter, contextPath: string, projectRoot: string): SourceDetectionResult | undefined;
