{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.7.8",
    "schemaVersion": 1003,
    "oldestForwardsCompatibleVersion": 1001
  },
  "kind": "Package",
  "canonicalReference": "@loopback/core!",
  "docComment": "",
  "name": "@loopback/core",
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "@loopback/core!",
      "name": "",
      "members": [
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!addExtension:function(1)",
          "docComment": "/**\n * Register an extension for the given extension point to the context\n *\n * @param context - Context object\n *\n * @param extensionPointName - Name of the extension point\n *\n * @param extensionClass - Class or a provider for an extension\n *\n * @param options - Options Options for the creation of binding from class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function addExtension(context: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", extensionPointName: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", extensionClass: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": ", options?: "
            },
            {
              "kind": "Reference",
              "text": "BindingFromClassOptions",
              "canonicalReference": "@loopback/context!BindingFromClassOptions:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "extensionPointName",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "extensionClass",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "name": "addExtension"
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/core!Application:class",
          "docComment": "/**\n * Application is the container for various types of artifacts, such as components, servers, controllers, repositories, datasources, connectors, and models.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class Application extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "implements "
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Application",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/core!Application:constructor(1)",
              "docComment": "/**\n * Create an application with the given parent context\n *\n * @param parent - Parent context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(parent: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/core!Application:constructor(2)",
              "docComment": "/**\n * Create an application with the given configuration and parent context\n *\n * @param config - Application configuration\n *\n * @param parent - Parent context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(config?: "
                },
                {
                  "kind": "Reference",
                  "text": "ApplicationConfig",
                  "canonicalReference": "@loopback/core!ApplicationConfig:interface"
                },
                {
                  "kind": "Content",
                  "text": ", parent?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "config",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#assertInStates:member(1)",
              "docComment": "/**\n * Assert current state of the application to be one of the expected values\n *\n * @param op - The operation name, such as 'boot', 'start', or 'stop'\n *\n * @param states - Valid states\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected assertInStates(op: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", ...states: "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "op",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "states",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "assertInStates"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#assertNotInProcess:member(1)",
              "docComment": "/**\n * Assert there is no other operation is in progress, i.e., the state is not `*ing`, such as `starting` or `stopping`.\n *\n * @param op - The operation name, such as 'boot', 'start', or 'stop'\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected assertNotInProcess(op: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "op",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "assertNotInProcess"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#awaitState:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected awaitState(state: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "state",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "awaitState"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#component:member(1)",
              "docComment": "/**\n * Add a component to this application and register extensions such as controllers, providers, and servers from the component.\n *\n * @param componentCtor - The component class to add.\n *\n * @param name - Optional component name, default to the class name\n *\n * @example\n * ```ts\n *\n * export class ProductComponent {\n *   controllers = [ProductController];\n *   repositories = [ProductRepo, UserRepo];\n *   providers = {\n *     [AUTHENTICATION_STRATEGY]: AuthStrategy,\n *     [AUTHORIZATION_ROLE]: Role,\n *   };\n * };\n *\n * app.component(ProductComponent);\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "component(componentCtor: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Component",
                  "canonicalReference": "@loopback/core!Component:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Component",
                  "canonicalReference": "@loopback/core!Component:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "componentCtor",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "name": "component"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#controller:member(1)",
              "docComment": "/**\n * Register a controller class with this application.\n *\n * @param controllerCtor - The controller class (constructor function).\n *\n * @param name - Optional controller name, default to the class name\n *\n * @returns The newly created binding, you can use the reference to further modify the binding, e.g. lock the value to prevent further modifications.\n *\n * @example\n * ```ts\n * class MyController {\n * }\n * app.controller(MyController).lock();\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "controller(controllerCtor: "
                },
                {
                  "kind": "Reference",
                  "text": "ControllerClass",
                  "canonicalReference": "@loopback/core!ControllerClass:type"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "controllerCtor",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "controller"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#getServer:member(1)",
              "docComment": "/**\n * Retrieve the singleton instance for a bound server.\n *\n * @param ctor - The constructor that was used to make the binding.\n *\n * @typeParam T - Server type\n *\n * @returns A Promise of server instance\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getServer<T extends "
                },
                {
                  "kind": "Reference",
                  "text": "Server",
                  "canonicalReference": "@loopback/core!Server:interface"
                },
                {
                  "kind": "Content",
                  "text": ">(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T> | string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getServer"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#lifeCycleObserver:member(1)",
              "docComment": "/**\n * Register a life cycle observer class\n *\n * @param ctor - A class implements LifeCycleObserver\n *\n * @param name - Optional name for the life cycle observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "lifeCycleObserver<T extends "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">(ctor: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctor",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "lifeCycleObserver"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/core!Application#options:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly options: "
                },
                {
                  "kind": "Reference",
                  "text": "ApplicationConfig",
                  "canonicalReference": "@loopback/core!ApplicationConfig:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "options",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#server:member(1)",
              "docComment": "/**\n * Bind a Server constructor to the Application's master context. Each server constructor added in this way must provide a unique prefix to prevent binding overlap.\n *\n * @param server - The server constructor.\n *\n * @param name - Optional override for key name.\n *\n * @returns Binding for the server class\n *\n * @example\n * ```ts\n * app.server(RestServer);\n * // This server constructor will be bound under \"servers.RestServer\".\n * app.server(RestServer, \"v1API\");\n * // This server instance will be bound under \"servers.v1API\".\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "server<T extends "
                },
                {
                  "kind": "Reference",
                  "text": "Server",
                  "canonicalReference": "@loopback/core!Server:interface"
                },
                {
                  "kind": "Content",
                  "text": ">(ctor: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctor",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "server"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#servers:member(1)",
              "docComment": "/**\n * Bind an array of Server constructors to the Application's master context. Each server added in this way will automatically be named based on the class constructor name with the \"servers.\" prefix.\n *\n * @remarks\n *\n * If you wish to control the binding keys for particular server instances, use the app.server function instead.\n * ```ts\n * app.servers([\n *  RestServer,\n *  GRPCServer,\n * ]);\n * // Creates a binding for \"servers.RestServer\" and a binding for\n * // \"servers.GRPCServer\";\n * ```\n *\n * @param ctors - An array of Server constructors.\n *\n * @returns An array of bindings for the registered server classes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "servers<T extends "
                },
                {
                  "kind": "Reference",
                  "text": "Server",
                  "canonicalReference": "@loopback/core!Server:interface"
                },
                {
                  "kind": "Content",
                  "text": ">(ctors: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctors",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "servers"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#service:member(1)",
              "docComment": "/**\n * Add a service to this application.\n *\n * @param cls - The service or provider class\n *\n * @example\n * ```ts\n * // Define a class to be bound via ctx.toClass()\n * @bind({scope: BindingScope.SINGLETON})\n * export class LogService {\n *   log(msg: string) {\n *     console.log(msg);\n *   }\n * }\n *\n * // Define a class to be bound via ctx.toProvider()\n * import {v4 as uuidv4} from 'uuid';\n * export class UuidProvider implements Provider<string> {\n *   value() {\n *     return uuidv4();\n *   }\n * }\n *\n * // Register the local services\n * app.service(LogService);\n * app.service(UuidProvider, 'uuid');\n *\n * export class MyController {\n *   constructor(\n *     @inject('services.uuid') private uuid: string,\n *     @inject('services.LogService') private log: LogService,\n *   ) {\n *   }\n *\n *   greet(name: string) {\n *     this.log(`Greet request ${this.uuid} received: ${name}`);\n *     return `${this.uuid}: ${name}`;\n *   }\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "service<S>(cls: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<S> | "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider",
                  "canonicalReference": "@loopback/context!Provider:interface"
                },
                {
                  "kind": "Content",
                  "text": "<S>>"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string | "
                },
                {
                  "kind": "Reference",
                  "text": "ServiceOptions",
                  "canonicalReference": "@loopback/core!ServiceOptions:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<S>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "cls",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "S",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "service"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#setMetadata:member(1)",
              "docComment": "/**\n * Set application metadata. `@loopback/boot` calls this method to populate the metadata from `package.json`.\n *\n * @param metadata - Application metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "setMetadata(metadata: "
                },
                {
                  "kind": "Reference",
                  "text": "ApplicationMetadata",
                  "canonicalReference": "@loopback/core!ApplicationMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "setMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#setState:member(1)",
              "docComment": "/**\n * Transition the application to a new state and emit an event\n *\n * @param state - The new state\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected setState(state: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "state",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "setState"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#setupShutdown:member(1)",
              "docComment": "/**\n * Set up signals that are captured to shutdown the application\n *\n * @param signals - An array of signals to be trapped\n *\n * @param gracePeriod - A grace period in ms before forced exit\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected setupShutdown(signals: "
                },
                {
                  "kind": "Reference",
                  "text": "NodeJS.Signals",
                  "canonicalReference": "!NodeJS.Signals:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ", gracePeriod?: "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "signals",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "gracePeriod",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "setupShutdown"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#start:member(1)",
              "docComment": "/**\n * Start the application, and all of its registered observers. The application state is checked to ensure the integrity of `start`.\n *\n * If the application is already started, no operation is performed.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "start(): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "start"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/core!Application#state:member",
              "docComment": "/**\n * Get the state of the application. The initial state is `created` and it can transition as follows by `start` and `stop`:\n *\n * 1. start - !started -> starting -> started - started -> started (no-op) 2. stop - started -> stopping -> stopped - !started -> stopped (no-op)\n *\n * Two types of states are expected: - stable, such as `started` and `stopped` - in process, such as `booting` and `starting`\n *\n * Operations such as `start` and `stop` can only be called at a stable state. The logic should immediately set the state to a new one indicating work in process, such as `starting` and `stopping`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get state(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "state",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!Application#stop:member(1)",
              "docComment": "/**\n * Stop the application instance and all of its registered observers. The application state is checked to ensure the integrity of `stop`.\n *\n * If the application is already stopped or not started, no operation is performed.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "stop(): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "stop"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": [
            {
              "startIndex": 4,
              "endIndex": 6
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!ApplicationConfig:interface",
          "docComment": "/**\n * Configuration for application\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ApplicationConfig "
            }
          ],
          "releaseTag": "Public",
          "name": "ApplicationConfig",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/core!ApplicationConfig:index(1)",
              "docComment": "/**\n * Other properties\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[prop: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "prop",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!ApplicationConfig#shutdown:member",
              "docComment": "/**\n * Configuration for signals that shut down the application\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "shutdown?: "
                },
                {
                  "kind": "Reference",
                  "text": "ShutdownOptions",
                  "canonicalReference": "@loopback/core!ShutdownOptions:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "shutdown",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!ApplicationMetadata:interface",
          "docComment": "/**\n * Type description for `package.json`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ApplicationMetadata extends "
            },
            {
              "kind": "Reference",
              "text": "JSONObject",
              "canonicalReference": "@loopback/context!JSONObject:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ApplicationMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!ApplicationMetadata#description:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "description: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "description",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!ApplicationMetadata#name:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "name: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "name",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!ApplicationMetadata#version:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "version: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "version",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!asLifeCycleObserver:function(1)",
          "docComment": "/**\n * A `BindingTemplate` function to configure the binding as life cycle observer by tagging it with `CoreTags.LIFE_CYCLE_OBSERVER`.\n *\n * @param binding - Binding object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asLifeCycleObserver<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(binding: "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "binding",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "asLifeCycleObserver"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!asService:function(1)",
          "docComment": "/**\n * Create a binding template for a service interface\n *\n * @param serviceInterface - Service interface\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asService(serviceInterface: "
            },
            {
              "kind": "Reference",
              "text": "ServiceInterface",
              "canonicalReference": "@loopback/core!ServiceInterface:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "serviceInterface",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "asService"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!ClassMap:interface",
          "docComment": "/**\n * A map of classes to be bound to a context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ClassMap "
            }
          ],
          "releaseTag": "Public",
          "name": "ClassMap",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/core!ClassMap:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!Component:interface",
          "docComment": "/**\n * A component declares a set of artifacts so that they cane be contributed to an application as a group\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Component "
            }
          ],
          "releaseTag": "Public",
          "name": "Component",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/core!Component:index(1)",
              "docComment": "/**\n * Other properties\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[prop: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "prop",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#bindings:member",
              "docComment": "/**\n * An array of bindings to be aded to the application context.\n *\n * @example\n * ```ts\n * const bindingX = Binding.bind('x').to('Value X');\n * this.bindings = [bindingX]\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bindings?: "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindings",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#classes:member",
              "docComment": "/**\n * A map of classes to be bound to the application context.\n *\n * @example\n * ```ts\n * {\n *   'rest.body-parsers.xml': XmlBodyParser\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "classes?: "
                },
                {
                  "kind": "Reference",
                  "text": "ClassMap",
                  "canonicalReference": "@loopback/core!ClassMap:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "classes",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#controllers:member",
              "docComment": "/**\n * An array of controller classes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "controllers?: "
                },
                {
                  "kind": "Reference",
                  "text": "ControllerClass",
                  "canonicalReference": "@loopback/core!ControllerClass:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "controllers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#lifeCycleObservers:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "lifeCycleObservers?: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "lifeCycleObservers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#providers:member",
              "docComment": "/**\n * A map of providers to be bound to the application context\n *\n * @example\n * ```ts\n * {\n *   'authentication.strategies.ldap': LdapStrategyProvider\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "providers?: "
                },
                {
                  "kind": "Reference",
                  "text": "ProviderMap",
                  "canonicalReference": "@loopback/core!ProviderMap:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "providers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Component#servers:member",
              "docComment": "/**\n * A map of name/class pairs for servers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "servers?: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        [name: string]: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Server",
                  "canonicalReference": "@loopback/core!Server:interface"
                },
                {
                  "kind": "Content",
                  "text": ">;\n    }"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "servers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 6
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!ControllerClass:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ControllerClass = "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<any>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ControllerClass",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/core!CoreBindings:namespace",
          "docComment": "/**\n * Namespace for core binding keys\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace CoreBindings "
            }
          ],
          "releaseTag": "Public",
          "name": "CoreBindings",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.APPLICATION_CONFIG:var",
              "docComment": "/**\n * Binding key for application configuration\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "APPLICATION_CONFIG: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ApplicationConfig",
                  "canonicalReference": "@loopback/core!ApplicationConfig:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "APPLICATION_CONFIG",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.APPLICATION_INSTANCE:var",
              "docComment": "/**\n * Binding key for application instance itself\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "APPLICATION_INSTANCE: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Application",
                  "canonicalReference": "@loopback/core!Application:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "APPLICATION_INSTANCE",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.APPLICATION_METADATA:var",
              "docComment": "/**\n * Binding key for the content of `package.json`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "APPLICATION_METADATA: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ApplicationMetadata",
                  "canonicalReference": "@loopback/core!ApplicationMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "APPLICATION_METADATA",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.COMPONENTS:var",
              "docComment": "/**\n * Binding key for components\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "COMPONENTS = \"components\""
                }
              ],
              "releaseTag": "Public",
              "name": "COMPONENTS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.CONTROLLER_CLASS:var",
              "docComment": "/**\n * Binding key for the controller class resolved in the current request context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLER_CLASS: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<import(\"@loopback/context\")."
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<any>>"
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLER_CLASS",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.CONTROLLER_CURRENT:var",
              "docComment": "/**\n * Binding key for the controller instance resolved in the current request context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLER_CURRENT: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLER_CURRENT",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.CONTROLLER_METHOD_META:var",
              "docComment": "/**\n * Binding key for the controller method metadata resolved in the current request context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLER_METHOD_META = \"controller.method.meta\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLER_METHOD_META",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.CONTROLLER_METHOD_NAME:var",
              "docComment": "/**\n * Binding key for the controller method resolved in the current request context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLER_METHOD_NAME: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<string>"
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLER_METHOD_NAME",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.CONTROLLERS:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLERS = \"controllers\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLERS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.LIFE_CYCLE_OBSERVER_OPTIONS:var",
              "docComment": "/**\n * Binding key for life cycle observer options\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "LIFE_CYCLE_OBSERVER_OPTIONS: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverOptions",
                  "canonicalReference": "@loopback/core!LifeCycleObserverOptions:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "LIFE_CYCLE_OBSERVER_OPTIONS",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.LIFE_CYCLE_OBSERVER_REGISTRY:var",
              "docComment": "/**\n * Binding key for life cycle observer options\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "LIFE_CYCLE_OBSERVER_REGISTRY: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverRegistry",
                  "canonicalReference": "@loopback/core!LifeCycleObserverRegistry:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "LIFE_CYCLE_OBSERVER_REGISTRY",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.LIFE_CYCLE_OBSERVERS:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "LIFE_CYCLE_OBSERVERS = \"lifeCycleObservers\""
                }
              ],
              "releaseTag": "Public",
              "name": "LIFE_CYCLE_OBSERVERS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreBindings.SERVERS:var",
              "docComment": "/**\n * Binding key for servers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "SERVERS = \"servers\""
                }
              ],
              "releaseTag": "Public",
              "name": "SERVERS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ]
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/core!CoreTags:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace CoreTags "
            }
          ],
          "releaseTag": "Public",
          "name": "CoreTags",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.COMPONENT:var",
              "docComment": "/**\n * Binding tag for components\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "COMPONENT = \"component\""
                }
              ],
              "releaseTag": "Public",
              "name": "COMPONENT",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.CONTROLLER:var",
              "docComment": "/**\n * Binding tag for controllers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTROLLER = \"controller\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONTROLLER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.EXTENSION_FOR:var",
              "docComment": "/**\n * Binding tag for extensions to specify name of the extension point that an extension contributes to.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "EXTENSION_FOR = \"extensionFor\""
                }
              ],
              "releaseTag": "Public",
              "name": "EXTENSION_FOR",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.EXTENSION_POINT:var",
              "docComment": "/**\n * Binding tag for an extension point to specify name of the extension point\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "EXTENSION_POINT = \"extensionPoint\""
                }
              ],
              "releaseTag": "Public",
              "name": "EXTENSION_POINT",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.LIFE_CYCLE_OBSERVER_GROUP:var",
              "docComment": "/**\n * Binding tag for group name of life cycle observers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "LIFE_CYCLE_OBSERVER_GROUP = \"lifeCycleObserverGroup\""
                }
              ],
              "releaseTag": "Public",
              "name": "LIFE_CYCLE_OBSERVER_GROUP",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.LIFE_CYCLE_OBSERVER:var",
              "docComment": "/**\n * Binding tag for life cycle observers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "LIFE_CYCLE_OBSERVER = \"lifeCycleObserver\""
                }
              ],
              "releaseTag": "Public",
              "name": "LIFE_CYCLE_OBSERVER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.SERVER:var",
              "docComment": "/**\n * Binding tag for servers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "SERVER = \"server\""
                }
              ],
              "releaseTag": "Public",
              "name": "SERVER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.SERVICE_INTERFACE:var",
              "docComment": "/**\n * Binding tag for the service interface\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "SERVICE_INTERFACE = \"serviceInterface\""
                }
              ],
              "releaseTag": "Public",
              "name": "SERVICE_INTERFACE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/core!CoreTags.SERVICE:var",
              "docComment": "/**\n * Binding tag for services\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "SERVICE = \"service\""
                }
              ],
              "releaseTag": "Public",
              "name": "SERVICE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!createServiceBinding:function(1)",
          "docComment": "/**\n * Create a service binding from a class or provider\n *\n * @param cls - Service class or provider\n *\n * @param options - Service options\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function createServiceBinding<S>(cls: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<S> | "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Provider",
              "canonicalReference": "@loopback/context!Provider:interface"
            },
            {
              "kind": "Content",
              "text": "<S>>"
            },
            {
              "kind": "Content",
              "text": ", options?: "
            },
            {
              "kind": "Reference",
              "text": "ServiceOptions",
              "canonicalReference": "@loopback/core!ServiceOptions:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<S>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 7
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "S",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "createServiceBinding"
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/core!DEFAULT_ORDERED_GROUPS:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "DEFAULT_ORDERED_GROUPS: "
            },
            {
              "kind": "Content",
              "text": "string[]"
            }
          ],
          "releaseTag": "Public",
          "name": "DEFAULT_ORDERED_GROUPS",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!extensionFilter:function(1)",
          "docComment": "/**\n * A factory function to create binding filter for extensions of a named extension point\n *\n * @param extensionPointName - Name of the extension point\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function extensionFilter(extensionPointName: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "import(\"@loopback/context\")."
            },
            {
              "kind": "Reference",
              "text": "BindingTagFilter",
              "canonicalReference": "@loopback/context!BindingTagFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "extensionPointName",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "extensionFilter"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!extensionFor:function(1)",
          "docComment": "/**\n * A factory function to create binding template for extensions of the given extension point\n *\n * @param extensionPointName - Name of the extension point\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function extensionFor(extensionPointName: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "extensionPointName",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "extensionFor"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!extensionPoint:function(1)",
          "docComment": "/**\n * Decorate a class as a named extension point. If the decoration is not present, the name of the class will be used.\n *\n * @param name - Name of the extension point\n *\n * @example\n * ```ts\n * import {extensionPoint} from '@loopback/core';\n *\n * @extensionPoint(GREETER_EXTENSION_POINT_NAME)\n * export class GreetingService {\n *   // ...\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function extensionPoint(name: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", ...specs: "
            },
            {
              "kind": "Reference",
              "text": "BindingSpec",
              "canonicalReference": "@loopback/context!BindingSpec:type"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "name",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "specs",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              }
            }
          ],
          "name": "extensionPoint"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!extensions:function(1)",
          "docComment": "/**\n * Shortcut to inject extensions for the given extension point.\n *\n * @param extensionPointName - Name of the extension point. If not supplied, we use the `name` tag from the extension point binding or the class name of the extension point class. If a class needs to inject extensions from multiple extension points, use different `extensionPointName` for different types of extensions.\n *\n * @example\n * ```ts\n * import {Getter} from '@loopback/context';\n * import {extensionPoint, extensions} from '@loopback/core';\n *\n * @extensionPoint(GREETER_EXTENSION_POINT_NAME)\n * export class GreetingService {\n *  constructor(\n *    @extensions() // Inject extensions for the extension point\n *    private getGreeters: Getter<Greeter[]>,\n *    // ...\n * ) {\n *   // ...\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function extensions(extensionPointName?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "(target: "
            },
            {
              "kind": "Reference",
              "text": "Object",
              "canonicalReference": "!Object:interface"
            },
            {
              "kind": "Content",
              "text": ", member: string | undefined, methodDescriptorOrParameterIndex?: number | "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor",
              "canonicalReference": "!TypedPropertyDescriptor:interface"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "extensionPointName",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "extensions"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!filterByServiceInterface:function(1)",
          "docComment": "/**\n * Create a binding filter by service class\n *\n * @param serviceInterface - Service class matching the one used by `binding.toClass()`\n *\n * @param options - Options to control if subclasses should be skipped for matching\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function filterByServiceInterface(serviceInterface: "
            },
            {
              "kind": "Reference",
              "text": "ServiceInterface",
              "canonicalReference": "@loopback/core!ServiceInterface:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "serviceInterface",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "filterByServiceInterface"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!isLifeCycleObserver:function(1)",
          "docComment": "/**\n * Test if an object implements LifeCycleObserver\n *\n * @param obj - An object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isLifeCycleObserver(obj: "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "obj",
              "canonicalReference": "@loopback/core!~obj"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "obj",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "isLifeCycleObserver"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!isLifeCycleObserverClass:function(1)",
          "docComment": "/**\n * Test if a class implements LifeCycleObserver\n *\n * @param ctor - A class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isLifeCycleObserverClass(ctor: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ctor",
              "canonicalReference": "@loopback/core!~ctor"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 4,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "ctor",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "isLifeCycleObserverClass"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!lifeCycleObserver:function(1)",
          "docComment": "/**\n * Sugar decorator to mark a class as life cycle observer\n *\n * @param group - Optional observer group name\n *\n * @param specs - Optional bindings specs\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function lifeCycleObserver(group?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", ...specs: "
            },
            {
              "kind": "Reference",
              "text": "BindingSpec",
              "canonicalReference": "@loopback/context!BindingSpec:type"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "group",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "specs",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              }
            }
          ],
          "name": "lifeCycleObserver"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!LifeCycleObserver:interface",
          "docComment": "/**\n * Observers to handle life cycle start/stop events\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface LifeCycleObserver "
            }
          ],
          "releaseTag": "Public",
          "name": "LifeCycleObserver",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/core!LifeCycleObserver#start:member(1)",
              "docComment": "/**\n * The method to be invoked during `start`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "start?(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "start"
            },
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/core!LifeCycleObserver#stop:member(1)",
              "docComment": "/**\n * The method to be invoked during `stop`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "stop?(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "stop"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/core!lifeCycleObserverFilter:var",
          "docComment": "/**\n * Find all life cycle observer bindings. By default, a binding tagged with `CoreTags.LIFE_CYCLE_OBSERVER`. It's used as `BindingFilter`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "lifeCycleObserverFilter: "
            },
            {
              "kind": "Content",
              "text": "import(\"@loopback/context\")."
            },
            {
              "kind": "Reference",
              "text": "BindingTagFilter",
              "canonicalReference": "@loopback/context!BindingTagFilter:interface"
            }
          ],
          "releaseTag": "Public",
          "name": "lifeCycleObserverFilter",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!LifeCycleObserverGroup:type",
          "docComment": "/**\n * A group of life cycle observers\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type LifeCycleObserverGroup = "
            },
            {
              "kind": "Content",
              "text": "{\n    group: string;\n    bindings: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": ">>[];\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "LifeCycleObserverGroup",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!LifeCycleObserverOptions:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type LifeCycleObserverOptions = "
            },
            {
              "kind": "Content",
              "text": "{\n    orderedGroups: string[];\n    parallel?: boolean;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "LifeCycleObserverOptions",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/core!LifeCycleObserverRegistry:class",
          "docComment": "/**\n * A context-based registry for life cycle observers\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class LifeCycleObserverRegistry implements "
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "LifeCycleObserverRegistry",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `LifeCycleObserverRegistry` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(observersView: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextView",
                  "canonicalReference": "@loopback/context!ContextView:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverOptions",
                  "canonicalReference": "@loopback/core!LifeCycleObserverOptions:type"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observersView",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#getObserverGroup:member(1)",
              "docComment": "/**\n * Get the group for a given life cycle observer binding\n *\n * @param binding - Life cycle observer binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected getObserverGroup(binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 7
                  }
                }
              ],
              "name": "getObserverGroup"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#getObserverGroupsByOrder:member(1)",
              "docComment": "/**\n * Get observer groups ordered by the group\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getObserverGroupsByOrder(): "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverGroup",
                  "canonicalReference": "@loopback/core!LifeCycleObserverGroup:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "getObserverGroupsByOrder"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#invokeObserver:member(1)",
              "docComment": "/**\n * Invoke an observer for the given event\n *\n * @param observer - A life cycle observer\n *\n * @param event - Event name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected invokeObserver(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ", event: "
                },
                {
                  "kind": "Content",
                  "text": "keyof "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "name": "invokeObserver"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#notifyGroups:member(1)",
              "docComment": "/**\n * Emit events to the observer groups\n *\n * @param events - Event names\n *\n * @param groups - Observer groups\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected notifyGroups(events: "
                },
                {
                  "kind": "Content",
                  "text": "(keyof "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ")[]"
                },
                {
                  "kind": "Content",
                  "text": ", groups: "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverGroup",
                  "canonicalReference": "@loopback/core!LifeCycleObserverGroup:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ", reverse?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "events",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "groups",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "reverse",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "notifyGroups"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#notifyObservers:member(1)",
              "docComment": "/**\n * Notify an observer group of the given event\n *\n * @param group - A group of bindings for life cycle observers\n *\n * @param event - Event name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected notifyObservers(observers: "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ", bindings: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ", event: "
                },
                {
                  "kind": "Content",
                  "text": "keyof "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 16
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observers",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "bindings",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 13
                  }
                }
              ],
              "name": "notifyObservers"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#observersView:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly observersView: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextView",
                  "canonicalReference": "@loopback/context!ContextView:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "observersView",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#options:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly options: "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverOptions",
                  "canonicalReference": "@loopback/core!LifeCycleObserverOptions:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "options",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#setOrderedGroups:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "setOrderedGroups(groups: "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "groups",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "setOrderedGroups"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#sortObserverBindingsByGroup:member(1)",
              "docComment": "/**\n * Sort the life cycle observer bindings so that we can start/stop them in the right order. By default, we can start other observers before servers and stop them in the reverse order\n *\n * @param bindings - Life cycle observer bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected sortObserverBindingsByGroup(bindings: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserver",
                  "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "LifeCycleObserverGroup",
                  "canonicalReference": "@loopback/core!LifeCycleObserverGroup:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "bindings",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 7
                  }
                }
              ],
              "name": "sortObserverBindingsByGroup"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#start:member(1)",
              "docComment": "/**\n * Notify all life cycle observers by group of `start`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "start(): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "start"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/core!LifeCycleObserverRegistry#stop:member(1)",
              "docComment": "/**\n * Notify all life cycle observers by group of `stop`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "stop(): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "stop"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!mountComponent:function(1)",
          "docComment": "/**\n * Mount a component to an Application.\n *\n * @param app - Application\n *\n * @param component - Component instance\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function mountComponent(app: "
            },
            {
              "kind": "Reference",
              "text": "Application",
              "canonicalReference": "@loopback/core!Application:class"
            },
            {
              "kind": "Content",
              "text": ", component: "
            },
            {
              "kind": "Reference",
              "text": "Component",
              "canonicalReference": "@loopback/core!Component:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "app",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "component",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ],
          "name": "mountComponent"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!ProviderMap:interface",
          "docComment": "/**\n * A map of provider classes to be bound to a context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ProviderMap "
            }
          ],
          "releaseTag": "Public",
          "name": "ProviderMap",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/core!ProviderMap:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider",
                  "canonicalReference": "@loopback/context!Provider:interface"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/core!Server:interface",
          "docComment": "/**\n * Defines the requirements to implement a Server for LoopBack applications: start() : Promise<void> stop() : Promise<void> It is recommended that each Server implementation creates its own child Context, which inherits from the parent Application context. This way, any Server-specific bindings will remain local to the Server instance, and will avoid polluting its parent module scope.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Server extends "
            },
            {
              "kind": "Reference",
              "text": "LifeCycleObserver",
              "canonicalReference": "@loopback/core!LifeCycleObserver:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Server",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/core!Server#listening:member",
              "docComment": "/**\n * Tells whether the server is listening for connections or not\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly listening: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "listening",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/core!service:function(1)",
          "docComment": "/**\n * `@service` injects a service instance that matches the class or interface.\n *\n * @param serviceInterface - Interface for the service. It can be in one of the following forms:\n *\n * - A class, such as MyService - A string that identifies the interface, such as `'MyService'` - A symbol that identifies the interface, such as `Symbol('MyService')`\n *\n * If not provided, the value is inferred from the design:type of the parameter or property\n *\n * @example\n * ```ts\n *\n * const ctx = new Context();\n * ctx.bind('my-service').toClass(MyService);\n * ctx.bind('logger').toClass(Logger);\n *\n * export class MyController {\n *   constructor(@service(MyService) private myService: MyService) {}\n *\n *   @service()\n *   private logger: Logger;\n * }\n *\n * ctx.bind('my-controller').toClass(MyController);\n * await myController = ctx.get<MyController>('my-controller');\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function service(serviceInterface?: "
            },
            {
              "kind": "Reference",
              "text": "ServiceInterface",
              "canonicalReference": "@loopback/core!ServiceInterface:type"
            },
            {
              "kind": "Content",
              "text": ", metadata?: "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata",
              "canonicalReference": "@loopback/context!InjectionMetadata:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "(target: "
            },
            {
              "kind": "Reference",
              "text": "Object",
              "canonicalReference": "!Object:interface"
            },
            {
              "kind": "Content",
              "text": ", member: string | undefined, methodDescriptorOrParameterIndex?: number | "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor",
              "canonicalReference": "!TypedPropertyDescriptor:interface"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "serviceInterface",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "metadata",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ],
          "name": "service"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!ServiceInterface:type",
          "docComment": "/**\n * Representing an interface for services. In TypeScript, the `interface` does not have reflections at runtime. We use a string, a symbol or a Function as the type for the service interface.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ServiceInterface = "
            },
            {
              "kind": "Content",
              "text": "string | symbol | "
            },
            {
              "kind": "Reference",
              "text": "Function",
              "canonicalReference": "!Function:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ServiceInterface",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!ServiceOptions:type",
          "docComment": "/**\n * Options to register a service binding\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ServiceOptions = "
            },
            {
              "kind": "Content",
              "text": "{\n    name?: string;\n    interface?: "
            },
            {
              "kind": "Reference",
              "text": "ServiceInterface",
              "canonicalReference": "@loopback/core!ServiceInterface:type"
            },
            {
              "kind": "Content",
              "text": ";\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ServiceOptions",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/core!ShutdownOptions:type",
          "docComment": "/**\n * Options to set up application shutdown\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ShutdownOptions = "
            },
            {
              "kind": "Content",
              "text": "{\n    signals?: "
            },
            {
              "kind": "Reference",
              "text": "NodeJS.Signals",
              "canonicalReference": "!NodeJS.Signals:type"
            },
            {
              "kind": "Content",
              "text": "[];\n    gracePeriod?: number;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ShutdownOptions",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        }
      ]
    }
  ]
}
