import { paths } from './openapi';
import { ClientResponse, PathsByMethod } from '../../../../../core/util/kos-service-request';
import { HttpMethod, IKosServiceRequestParams } from '../../../../../core/core/decorators/kos-service-request';
import { KosExecutionContext } from '../../../../../core/core/decorators/kos-execution-context';

/**
 * Type aliases for vfs API
 */
export type Api = paths;
export type ApiPath = keyof paths;
export type ValidPaths = PathsByMethod<paths>;
/**
 * Get client response type for vfs API
 */
export type ApiResponse<Path extends ApiPath, Method extends "get" | "post" | "put" | "delete" = "get"> = ClientResponse<paths, Path, Method>;
/**
 * Get execution context type for vfs API
 */
export type ExecutionContext<Path extends ApiPath = ApiPath, Method extends HttpMethod = "get"> = KosExecutionContext<paths, Path, Method>;
/**
 * Typed decorator factory for @kosServiceRequest with vfs API types
 *
 * Provides full IntelliSense and type safety for path, query params, and body
 * based on the vfs OpenAPI schema.
 *
 * @example
 * ```typescript
 * import { kosServiceRequest } from '../../utils/services/vfs/1.8.1/service';
 * import { DependencyLifecycle } from '@kosdev-code/kos-ui-sdk';
 *
 * @kosServiceRequest({
 *   path: '/api/...',
 *   method: 'get',
 *   lifecycle: DependencyLifecycle.LOAD
 * })
 * private onDataLoaded(): void {
 *   // Fully typed based on vfs API
 * }
 * ```
 */
export declare function kosServiceRequest<Path extends ApiPath, Method extends HttpMethod = "get", Response = any, TransformedResponse = Response>(params: IKosServiceRequestParams<paths, Path, Method, Response, TransformedResponse>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Create an API client for vfs
 */
export declare const api: {
    get: <K extends "/api/vfs">(endpoint: K, params?: (paths[K]["get"] extends {
        parameters: infer P;
    } ? P : never) | undefined, options?: {
        ordered?: boolean | undefined;
        tracker?: string | undefined;
        timeout?: number | undefined;
        headers?: Record<string, string> | undefined;
        fos?: boolean | undefined;
        bridge?: boolean | undefined;
        destinationAddress?: string | undefined;
        studio?: boolean | undefined;
        signal?: AbortSignal | undefined;
        stream?: boolean | undefined;
        responseType?: "text" | "json" | "arraybuffer" | "blob" | undefined;
    } | undefined) => Promise<import('../../../../../core/util/kos-service-request').ServiceResponse<ClientResponse<paths, K, "get">>>;
    post: <K_1 extends never>(endpoint: K_1, params?: (paths[K_1]["post"] extends {
        parameters: infer P_1;
    } ? P_1 : never) | undefined, body?: (paths[K_1]["post"] extends {
        requestBody: {
            content: infer B;
        };
    } ? B[keyof B] : never) | undefined, options?: {
        ordered?: boolean | undefined;
        tracker?: string | undefined;
        timeout?: number | undefined;
        headers?: Record<string, string> | undefined;
        fos?: boolean | undefined;
        bridge?: boolean | undefined;
        destinationAddress?: string | undefined;
        studio?: boolean | undefined;
        signal?: AbortSignal | undefined;
        stream?: boolean | undefined;
        responseType?: "text" | "json" | "arraybuffer" | "blob" | undefined;
    } | undefined) => Promise<import('../../../../../core/util/kos-service-request').ServiceResponse<ClientResponse<paths, K_1, "post">>>;
    put: <K_2 extends never>(endpoint: K_2, params?: (paths[K_2]["put"] extends {
        parameters: infer P_2;
    } ? P_2 : never) | undefined, body?: (paths[K_2]["put"] extends {
        requestBody: {
            content: infer B_1;
        };
    } ? B_1[keyof B_1] : never) | undefined, options?: {
        ordered?: boolean | undefined;
        tracker?: string | undefined;
        timeout?: number | undefined;
        headers?: Record<string, string> | undefined;
        fos?: boolean | undefined;
        bridge?: boolean | undefined;
        destinationAddress?: string | undefined;
        studio?: boolean | undefined;
        signal?: AbortSignal | undefined;
        stream?: boolean | undefined;
        responseType?: "text" | "json" | "arraybuffer" | "blob" | undefined;
    } | undefined) => Promise<import('../../../../../core/util/kos-service-request').ServiceResponse<ClientResponse<paths, K_2, "put">>>;
    delete: <K_3 extends never>(endpoint: K_3, params?: (paths[K_3]["delete"] extends {
        parameters: infer P_3;
    } ? P_3 : never) | undefined, body?: (paths[K_3]["put"] extends {
        requestBody: {
            content: infer B_1;
        };
    } ? B_1[keyof B_1] : never) | undefined, options?: {
        ordered?: boolean | undefined;
        tracker?: string | undefined;
        timeout?: number | undefined;
        headers?: Record<string, string> | undefined;
        fos?: boolean | undefined;
        bridge?: boolean | undefined;
        destinationAddress?: string | undefined;
        studio?: boolean | undefined;
        signal?: AbortSignal | undefined;
        stream?: boolean | undefined;
        responseType?: "text" | "json" | "arraybuffer" | "blob" | undefined;
    } | undefined) => Promise<import('../../../../../core/util/kos-service-request').ServiceResponse<ClientResponse<paths, K_3, "delete">>>;
};
export default api;
//# sourceMappingURL=service.d.ts.map