import { Core } from '../../client/core'; /** * Allows extending properties and methods of an Extendable */ export type Extension> = ( /** The extendable object to which this extension will be applied */ extendable: Extendable, /** An object with internal properties and methods not publicly accessible */ core: Core) => T; /** * An object that can be extended. * * To extend here means to add or replace the existing properties of this object, * as well as kicking off any related procedures. Like a structure on which you can * attach lego bricks. * * Ex: a { movie: "Up" } object can be extended by adding an audienceScore * property to it, and kicking off an api call that will constantly update this property from * an IMDb api. */ export declare class Extendable { private readonly core; constructor(core: Core); extend>(extension: Extension): T & typeof this; }