import * as is from "./guards"; import type { And } from "../types"; export declare enum ProxyHandlerAction { doDefault = "doDefault", throw = "throw" } /** * Self-binds all methods. * @param obj - Object. * @returns Proxy. */ export declare function classToInterface(obj: T): ClassToInterface; /** * Creates facade. * @param name - Facade name. * @param extension - Facade extension. * @returns Facade. */ export declare function createFacade(name: string, extension: E): Facade; /** * Returns an object that throws an error on any attempted accessed. * @returns An object. */ export declare function neverDemand(): T; /** * Generates resource on demand. * @param generator - Resource generator. * @returns Resource. */ export declare function onDemand(generator: () => T): T; /** * Creates safe access interface for an object. * @param obj - Object. * @param guards - Guards. * @param readonlyKeys - Readonly keys. * @returns Safe access interface. */ export declare function safeAccess(obj: T, guards: SafeAccessGuards, readonlyKeys?: readonly R[]): SafeAccess; /** * Delays program execution. * @param timeout - Timeout (ms). */ export declare function wait(timeout: number): Promise; /** * Adds missing methods to proxy handler. * @param id - ID. * @param action - Action for missing methods. * @param handler - Handler. * @returns New handler with missing methods added. */ export declare function wrapProxyHandler(id: string, action: ProxyHandlerAction, handler: Readonly>): ProxyHandler; export type ClassToInterface = { [K in keyof T]: T[K]; }; export type Facade = E & FacadeOwnMethods & I; export interface FacadeOwnMethods { /** * Sets implementation. * @param implementation - Implementation. */ readonly setImplementation: (implementation: I) => void; } export type SafeAccess = And<{ [K in W]: T[K]; }, { readonly [K in R]: T[K]; }>; export declare type SafeAccessGuards = { readonly [K in W]: is.Guard; }; //# sourceMappingURL=helpers.d.ts.map