export interface PJSON { [k: string]: any; dependencies?: { [name: string]: string; }; oclif: { schema?: number; }; } export declare namespace PJSON { interface Plugin extends PJSON { name: string; version: string; oclif: PJSON['oclif'] & { schema?: number; title?: string; description?: string; hooks?: { [name: string]: (string | string[]); }; commands?: string; plugins?: string[]; devPlugins?: string[]; aliases?: { [name: string]: string | null; }; update: { s3: S3; autoupdate?: { rollout?: number; debounce?: number; }; node: { version?: string; targets?: string[]; }; }; topics?: { [k: string]: { description?: string; subtopics?: Plugin['oclif']['topics']; hidden?: boolean; }; }; }; } interface S3 { bucket?: string; host?: string; xz?: boolean; gz?: boolean; templates: { target: S3.Templates; vanilla: S3.Templates; }; } namespace S3 { interface Templates { baseDir: string; versioned: string; unversioned: string; manifest: string; } } interface CLI extends Plugin { oclif: Plugin['oclif'] & { schema?: number; bin?: string; npmRegistry?: string; scope?: string; dirname?: string; }; } interface User extends PJSON { private?: boolean; oclif: PJSON['oclif'] & { plugins?: (string | PluginTypes.User | PluginTypes.Link)[]; }; } type PluginTypes = PluginTypes.User | PluginTypes.Link | { root: string; }; namespace PluginTypes { interface User { type: 'user'; name: string; url?: string; tag?: string; } interface Link { type: 'link'; name: string; root: string; } } }