import { LibraryInfo } from './../models/plugin-info'; /** * A type which can be created using `new` syntax. * @example * function create(type: Type): T { * return new type(); * } */ export declare type Type = new (...args: any[]) => T; /** * A library which has been loaded using the `@Library` decorator. */ export interface LoadedLib { info: LibraryInfo; target: Type; dependencies: string[]; } /** * A loaded library with an associated instance of it. */ export interface ManagedLib { instance: T; info: LoadedLib; } /** * A description of a packet hook defined in a library. */ export interface HookInfo { target: string; method: string; packet: string; signature: HookParamType[]; } /** * The types which can be used as hook method parameters. */ export declare const enum HookParamType { Other = 0, Packet = 1, Client = 2 }