import { Observable } from 'rxjs'; import { AnyFunction, Callback, Codec } from "../../types/types"; declare type Cons = ((v: V, ...t: T) => void) extends ((...r: infer R) => void) ? R : never; declare type Push = ((Cons> extends infer R ? { [K in keyof R]: K extends keyof T ? T[K] : V; } : never) extends infer P ? P extends any[] ? P : never : never); export declare type ApiTypes = 'promise' | 'rxjs'; export declare type ObsInnerType> = O extends Observable ? U : never; export declare type UnsubscribePromise = Promise<() => void>; export declare type PromiseOrObs = ApiType extends 'rxjs' ? Observable : Promise; export interface RxResult { (...args: Parameters): Observable>>; (...args: Parameters): Observable; } export interface PromiseResult { (...args: Parameters): Promise>>; (...args: Push, Callback>>>): UnsubscribePromise; (...args: Parameters): Promise; (...args: Push, Callback>): UnsubscribePromise; } export declare type MethodResult = ApiType extends 'rxjs' ? RxResult : PromiseResult; export interface DecorateMethodOptions { methodName?: string; } export declare type DecorateMethod = Observable>(method: Method, options?: DecorateMethodOptions) => any; export {};