import type { Observable } from "rxjs"; import type { DefaultErrorHandler, DefaultEventHandler, LensCoreModule, PlayCanvasInput } from "./generated-types"; import type { LensCoreError } from "./lensCoreError"; type SafeOmit = T extends any ? Omit : never; /** * LensCore methods that require additional handling. */ type LensCoreCustomMethods = { initialize(input: PromisifiedParam>): Promise; provideRemoteAssetsResponse(input: MapParamErrorCallback<"provideRemoteAssetsResponse", "onFailure">): void; playCanvas(input: Omit): Promise; }; type LensCoreCustomMethodNames = keyof LensCoreCustomMethods extends keyof LensCoreModule ? keyof LensCoreCustomMethods : never; type PropertyKinds = "enum" | "sync method" | "promisifiable method" | "custom method"; type LensCorePropertyKinds = { [K in keyof LensCoreModule]: LensCoreModule[K] extends (...args: any[]) => any ? K extends LensCoreCustomMethodNames ? "custom method" : Parameters[0] extends { onSuccess?: DefaultEventHandler; onFailure?: DefaultErrorHandler; } ? "promisifiable method" : "sync method" : "enum"; }; type PropertiesOfKind = Exclude<{ [K in keyof LensCorePropertyKinds]: LensCorePropertyKinds[K] extends T ? K : never; }[keyof LensCorePropertyKinds], undefined>; type FirstParameter = T extends (first: infer P, ...rest: any[]) => any ? P : never; type LensCoreEnums = Pick>; type LensCoreSyncMethods = Pick>; type LensCorePromisifiedMethods = { [K in PropertiesOfKind<"promisifiable method">]: K extends keyof LensCoreModule ? keyof SafeOmit[0], "onSuccess" | "onFailure"> extends never ? () => Promise[0]["onSuccess"]>> : (input: SafeOmit[0], "onSuccess" | "onFailure">) => Promise[0]["onSuccess"]>> : never; }; type PromisifiedParam = { [P in keyof T as P extends "onSuccess" | "onFailure" ? never : P]: T[P]; }; type MapParamErrorCallback, U extends keyof LensCoreMethodFirstParam> = MapErrorCallback, U>; type LensCoreMethodFirstParam> = Parameters[0]; type MapErrorCallback = { [P in keyof T]: P extends U ? (err: LensCoreError) => void : T[P]; }; /** @internal */ export type LensCore = LensCoreEnums & LensCoreSyncMethods & LensCorePromisifiedMethods & LensCoreCustomMethods & LensCoreErrorField; /** * @internal */ export interface LensCoreErrorField { errors: Observable; } /** * Create wrapper around LensCore module which adds Promise interfaces to the methods. * * NOTE: We try to keep as close to the native LensCore module as possible. * Ideally when LensCore makes its interface Promises, we won't need this Proxy. * * @internal */ export declare const createLensCore: (lensCoreModule: LensCoreModule) => LensCore; export {}; //# sourceMappingURL=lensCore.d.ts.map