import Plugin from "./Plugin" ; export interface Serverless { cli : { log ( m ) ; } ; config : Config ; pluginManager : PluginManager ; setProvider ( name , provider ) ; getProvider ( name ) ; service : Service ; classes : any ; } export interface Service { service : string ; provider : ServiceProvider ; package : ServicePackage ; plugins : string [ ] ; functions : { [ key ] : ServiceFunction ; } ; getFunction ( name ) : ServiceFunction ; getAllFunctionsNames ( ) : string [ ] ; } export interface ServiceProvider { /** 如：aws、tencent */ name : string ; namespace ? : string ; region : string ; runtime : string ; credentials : string ; memorySize ? : number ; timeout ? : number ; vpc ? : string ; gpu ? : boolean ; environment ? : { [ key ] : string ; } ; } export interface ServicePackage { /** 打包后的zip文件路径 */ artifact : string ; } export interface ServiceFunction { name ? : string ; namespace ? : string ; handler : string ; description ? : string ; events ? : ServiceFunctionTriggerWrap [ ] ; memorySize ? : number ; timeout ? : number ; vpc ? : string ; gpu ? : boolean ; environment ? : { [ key ] : string ; } ; package : ServicePackage ; } export interface ServiceFunctionTriggerWrap { [ type ] : ServiceFunctionTrigger ; } export type ServiceFunctionTrigger = TimerTriggerOptions | CmqTriggerOptions | COSTriggerOptions | CKafkaTriggerOptions | APIGatewayTriggerOptions ; export interface TimerTriggerOptions { name : string ; cron : string ; } export interface CmqTriggerOptions { instance : string ; } export interface COSTriggerOptions { bucket : string ; event : string ; prefix : string ; suffix : string ; } export interface CKafkaTriggerOptions { instance : string ; topic : string ; batchSize : number ; } export interface APIGatewayTriggerOptions { /** 仅支持ID形式 */ service : string ; method : string ; stage : string ; auth : boolean ; } interface Config { update ( config ) ; } interface PluginClass { new ( ... any ) : Plugin ; } interface PluginManager { addPlugin ( Plugin ) ; spawn ( cmd ) ; } export interface ServerlessOptions { [ key ] : any ; }