export type Extended = (A extends Function ? A : B) & { [K in keyof (A & B)]: K extends keyof B ? B[K] : K extends keyof A ? A[K] : unknown; }; /** * Creates an object extension * @param parent any extensible object or function * @param extensions optional objects providing additional properties * @returns `A & B` * ### How are properties and methods resolved? * - calling the extent directly invokes the parent if the parent */ export declare function extend( parent: A, ...extensions: B[] ): Extended; export default extend;