import { HttpMethod, ServiceRequestExecutor } from './kos-service-request';
/**
 * Symbol used to uniquely identify KosExecutionContext objects.
 * Decorators use this to reliably detect if the last parameter is an execution context.
 * @internal
 */
export declare const KOS_EXECUTION_CONTEXT: unique symbol;
/**
 * Execution context passed to decorated methods for accessing decorator-injected functionality.
 *
 * This context provides a type-safe way for decorators to inject runtime functionality
 * into methods without polluting the class interface or relying on magic parameters.
 *
 * Currently used by @kosServiceRequest to inject the $request executor.
 * Designed to be extensible for future decorators that need to inject runtime functionality.
 *
 * @example Using with @kosServiceRequest
 * ```typescript
 * @kosServiceRequest({
 *   path: PATH_VM_INSTALL,
 *   method: 'post'
 * })
 * async createRelease(
 *   path: string,
 *   keysetId?: string,
 *   ctx: KosExecutionContext<paths, typeof PATH_VM_INSTALL, 'post'>
 * ): Promise<void> {
 *   const [error, response] = await ctx.$request({
 *     queryParams: { keySetId: keysetId },
 *     body: { path }
 *   });
 *   if (error) throw new Error(error);
 *   return response?.data;
 * }
 * ```
 *
 * @kosService core.service-request
 * @kosApiLevel 15
 */
export interface KosExecutionContext<Paths extends Record<string, any> = Record<string, any>, Path extends keyof Paths = string, Method extends HttpMethod = "get"> {
    /**
     * Symbol marker to identify this as a KosExecutionContext
     * @internal
     */
    [KOS_EXECUTION_CONTEXT]: true;
    /**
     * Service request executor (injected by @kosServiceRequest)
     * Executes the service request defined in the decorator configuration.
     */
    $request?: ServiceRequestExecutor<Paths, Path, Method>;
    /**
     * Future tracker ID string (injected by @kosFuture when trackerPolicy is 'context')
     * This is the tracker ID that can be used with future management utilities.
     */
    $tracker?: string;
}
/**
 * Type guard to check if an object is a KosExecutionContext
 * @internal
 */
export declare function isKosExecutionContext(obj: any): obj is KosExecutionContext;
//# sourceMappingURL=kos-execution-context.d.ts.map