import type { Operation, OperationIndex } from './operation.js'; export type AugmentOps = { [K in keyof Base]: K extends keyof Augmentation ? AugmentOp : Base[K]; }; type OperationIndexAugmentation = Record; export type AugmentOp = { [K in keyof Base | keyof Augmentation]: K extends keyof Base & keyof Augmentation & 'parameters' ? Augmentation['parameters'] extends ParamAugmentation ? AugmentParams : Base['parameters'] : K extends keyof Augmentation & 'response' ? Augmentation[K] : K extends keyof Base ? Base[K] : never; }; type OperationAugmentation = { parameters?: ParamAugmentation; response?: any; }; export type AugmentParams = { [K in keyof Base | keyof Augmentation]: K extends keyof Augmentation & 'query' ? AugmentRecord, Exclude> : K extends keyof Augmentation & 'body' ? Augmentation['body'] : K extends keyof Base ? Base[K] : never; }; type ParamAugmentation = { query?: Record; body?: any; }; type AugmentRecord = 1 extends 0 ? never : { [K in keyof Base | keyof Augmentation]: K extends keyof Augmentation ? Augmentation[K] : K extends keyof Base ? Base[K] : never; }; export {};