{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.7.10",
    "schemaVersion": 1003,
    "oldestForwardsCompatibleVersion": 1001
  },
  "kind": "Package",
  "canonicalReference": "@loopback/context!",
  "docComment": "",
  "name": "@loopback/context",
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "@loopback/context!",
      "name": "",
      "members": [
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!ANY_TAG_VALUE:var",
          "docComment": "/**\n * A symbol that can be used to match binding tags by name regardless of the value.\n *\n * @example\n *\n * The following code matches bindings with tag `{controller: 'A'}` or `{controller: 'controller'}`. But if the tag name 'controller' does not exist for a binding, the binding will NOT be included.\n * ```ts\n * ctx.findByTag({controller: ANY_TAG_VALUE})\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "ANY_TAG_VALUE: "
            },
            {
              "kind": "Reference",
              "text": "TagValueMatcher",
              "canonicalReference": "@loopback/context!TagValueMatcher:interface"
            }
          ],
          "releaseTag": "Public",
          "name": "ANY_TAG_VALUE",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!asBindingTemplate:function(1)",
          "docComment": "/**\n * Convert binding scope and tags as a template function\n *\n * @param scopeAndTags - Binding scope and tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asBindingTemplate(scopeAndTags: "
            },
            {
              "kind": "Reference",
              "text": "BindingScopeAndTags",
              "canonicalReference": "@loopback/context!BindingScopeAndTags: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": "scopeAndTags",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "asBindingTemplate"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!asClassOrProvider:function(1)",
          "docComment": "/**\n * A factory function to create a template function to bind the target class as a class or `Provider`.\n *\n * @param target - Target class, which can be an implementation of `Provider`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asClassOrProvider(target: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 4,
            "endIndex": 5
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "asClassOrProvider"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!asGlobalInterceptor:function(1)",
          "docComment": "/**\n * The `BindingTemplate` function to configure a binding as a global interceptor by tagging it with `ContextTags.INTERCEPTOR`\n *\n * @param group - Group for ordering the interceptor\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asGlobalInterceptor(group?: "
            },
            {
              "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": "group",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "asGlobalInterceptor"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!AsInterceptedFunction:type",
          "docComment": "/**\n * The intercepted variant of a function to return `ValueOrPromise<T>`. If `T` is not a function, the type is `T`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type AsInterceptedFunction<T> = "
            },
            {
              "kind": "Content",
              "text": "T extends (...args: "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs",
              "canonicalReference": "@loopback/context!InvocationArgs:type"
            },
            {
              "kind": "Content",
              "text": ") => infer R ? (...args: "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs",
              "canonicalReference": "@loopback/context!InvocationArgs:type"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "AsValueOrPromise",
              "canonicalReference": "@loopback/context!AsValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<R> : T"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsInterceptedFunction",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!asProvider:function(1)",
          "docComment": "/**\n * A factory function to create a template function to bind the target class as a `Provider`.\n *\n * @param target - Target provider class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asProvider(target: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Provider",
              "canonicalReference": "@loopback/context!Provider:interface"
            },
            {
              "kind": "Content",
              "text": "<unknown>>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "name": "asProvider"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!asResolutionOptions:function(1)",
          "docComment": "/**\n * Normalize ResolutionOptionsOrSession to ResolutionOptions\n *\n * @param optionsOrSession - resolution options or session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function asResolutionOptions(optionsOrSession?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptionsOrSession",
              "canonicalReference": "@loopback/context!ResolutionOptionsOrSession:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions",
              "canonicalReference": "@loopback/context!ResolutionOptions:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "optionsOrSession",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "asResolutionOptions"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!assertTargetType:function(1)",
          "docComment": "/**\n * Assert the target type inspected from TypeScript for injection to be the expected type. If the types don't match, an error is thrown.\n *\n * @param injection - Injection information\n *\n * @param expectedType - Expected type\n *\n * @param expectedTypeName - Name of the expected type to be used in the error\n *\n * @returns The name of the target\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function assertTargetType(injection: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection",
              "canonicalReference": "@loopback/context!Injection:interface"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", expectedType: "
            },
            {
              "kind": "Reference",
              "text": "Function",
              "canonicalReference": "!Function:interface"
            },
            {
              "kind": "Content",
              "text": ", expectedTypeName?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "injection",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "parameterName": "expectedType",
              "parameterTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              }
            },
            {
              "parameterName": "expectedTypeName",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "name": "assertTargetType"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!AsValueOrPromise:type",
          "docComment": "/**\n * Create the Promise type for `T`. If `T` extends `Promise`, the type is `T`, otherwise the type is `ValueOrPromise<T>`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type AsValueOrPromise<T> = "
            },
            {
              "kind": "Content",
              "text": "T extends "
            },
            {
              "kind": "Reference",
              "text": "Promise",
              "canonicalReference": "!Promise:interface"
            },
            {
              "kind": "Content",
              "text": "<unknown> ? T : "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsValueOrPromise",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!AsyncProxy:type",
          "docComment": "/**\n * The proxy type for `T`. The return type for any method of `T` with original return type `R` becomes `ValueOrPromise<R>` if `R` does not extend `Promise`. Property types stay untouched.\n *\n * @example\n * ```ts\n * class MyController {\n *   name: string;\n *\n *   greet(name: string): string {\n *     return `Hello, ${name}`;\n *   }\n *\n *   async hello(name: string) {\n *     return `Hello, ${name}`;\n *   }\n * }\n * ```\n *\n * `AsyncProxy<MyController>` will be:\n * ```ts\n * {\n *   name: string; // the same as MyController\n *   greet(name: string): ValueOrPromise<string>; // the return type becomes `ValueOrPromise<string>`\n *   hello(name: string): Promise<string>; // the same as MyController\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type AsyncProxy<T> = "
            },
            {
              "kind": "Content",
              "text": "{\n    [P in keyof T]: "
            },
            {
              "kind": "Reference",
              "text": "AsInterceptedFunction",
              "canonicalReference": "@loopback/context!AsInterceptedFunction:type"
            },
            {
              "kind": "Content",
              "text": "<T[P]>;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsyncProxy",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!bind:function(1)",
          "docComment": "/**\n * Decorate a class with binding configuration\n *\n * @param specs - A list of binding scope/tags or template functions to configure the binding\n *\n * @example\n * ```ts\n * @bind((binding) => {binding.inScope(BindingScope.SINGLETON).tag('controller')}\n * )\n * export class MyController {\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function bind(...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": 4,
            "endIndex": 5
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "specs",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "bind"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!bind:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace bind "
            }
          ],
          "releaseTag": "Public",
          "name": "bind",
          "members": [
            {
              "kind": "Function",
              "canonicalReference": "@loopback/context!bind.provider:function(1)",
              "docComment": "/**\n * `@bind.provider` to denote a provider class\n *\n * A list of binding scope/tags or template functions to configure the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "function provider(...specs: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSpec",
                  "canonicalReference": "@loopback/context!BindingSpec:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider",
                  "canonicalReference": "@loopback/context!Provider:interface"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>) => void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "specs",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "provider"
            }
          ]
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!BINDING_METADATA_KEY:var",
          "docComment": "/**\n * Metadata key for binding metadata\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "BINDING_METADATA_KEY: "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor",
              "canonicalReference": "@loopback/metadata!MetadataAccessor:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BindingMetadata",
              "canonicalReference": "@loopback/context!BindingMetadata:type"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "BINDING_METADATA_KEY",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 7
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!Binding:class",
          "docComment": "/**\n * Binding represents an entry in the `Context`. Each binding has a key and a corresponding value getter.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class Binding<T = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": "> extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter",
              "canonicalReference": "!internal.EventEmitter:class"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "Binding",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!Binding:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `Binding` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", isLocked?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "isLocked",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#apply:member(1)",
              "docComment": "/**\n * Apply one or more template functions to set up the binding with scope, tags, and other attributes as a group.\n *\n * @param templateFns - One or more functions to configure the binding\n *\n * @example\n * ```ts\n * const serverTemplate = (binding: Binding) =>\n *   binding.inScope(BindingScope.SINGLETON).tag('server');\n *\n * const serverBinding = new Binding<RestServer>('servers.RestServer1');\n * serverBinding.apply(serverTemplate);\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "apply(...templateFns: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTemplate",
                  "canonicalReference": "@loopback/context!BindingTemplate:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "templateFns",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "apply"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#applyDefaultScope:member(1)",
              "docComment": "/**\n * Apply default scope to the binding. It only changes the scope if it's not set yet\n *\n * @param scope - Default binding scope\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "applyDefaultScope(scope: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope",
                  "canonicalReference": "@loopback/context!BindingScope:enum"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "scope",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "applyDefaultScope"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding.bind:member(1)",
              "docComment": "/**\n * A static method to create a binding so that we can do `Binding.bind('foo').to('bar');` as `new Binding('foo').to('bar')` is not easy to read.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static bind<T = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "bind"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding.configure:member(1)",
              "docComment": "/**\n * Create a configuration binding for the given key\n *\n * @param key - Key for the binding to be configured\n *\n * @typeParam  - T Generic type for the configuration value (not the binding to be configured)\n *\n * @example\n * ```ts\n * const configBinding = Binding.configure('servers.RestServer.server1')\n *   .to({port: 3000});\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static configure<T = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "configure"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#getValue:member(1)",
              "docComment": "/**\n * This is an internal function optimized for performance. Users should use `@inject(key)` or `ctx.get(key)` instead.\n *\n * Get the value bound to this key. Depending on `isSync`, this function returns either: - the bound value - a promise of the bound value\n *\n * Consumers wishing to consume sync values directly should use `isPromiseLike` to check the type of the returned value to decide how to handle it.\n *\n * @param ctx - Context for the resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @example\n * ```\n * const result = binding.getValue(ctx);\n * if (isPromiseLike(result)) {\n *   result.then(doSomething)\n * } else {\n *   doSomething(result);\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getValue(ctx: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#getValue:member(2)",
              "docComment": "/**\n * Returns a value or promise for this binding in the given context. The resolved value can be `undefined` if `optional` is set to `true` in `options`.\n *\n * @param ctx - Context for the resolution\n *\n * @param options - Optional options for binding and dependency resolution\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getValue(ctx: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<T | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#inScope:member(1)",
              "docComment": "/**\n * Set the binding scope\n *\n * @param scope - Binding scope\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "inScope(scope: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope",
                  "canonicalReference": "@loopback/context!BindingScope:enum"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "scope",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "inScope"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#inspect:member(1)",
              "docComment": "/**\n * Inspect the binding to return a json representation of the binding information\n *\n * @param options - Options to control what information should be included\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "inspect(options?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingInspectOptions",
                  "canonicalReference": "@loopback/context!BindingInspectOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "JSONObject",
                  "canonicalReference": "@loopback/context!JSONObject:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "inspect"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#isLocked:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "isLocked: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "isLocked",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#key:member",
              "docComment": "/**\n * Key of the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#lock:member(1)",
              "docComment": "/**\n * Lock the binding so that it cannot be rebound\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "lock(): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "lock"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#providerConstructor:member",
              "docComment": "/**\n * For bindings bound via `toProvider()`, this property contains the constructor function of the provider class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get providerConstructor(): "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider",
                  "canonicalReference": "@loopback/context!Provider:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "providerConstructor",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#scope:member",
              "docComment": "/**\n * Scope of the binding to control how the value is cached/shared\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get scope(): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope",
                  "canonicalReference": "@loopback/context!BindingScope:enum"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "scope",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#tag:member(1)",
              "docComment": "/**\n * Tag the binding with names or name/value objects. A tag has a name and an optional value. If not supplied, the tag name is used as the value.\n *\n * @param tags - A list of names or name/value objects. Each parameter can be in one of the following forms: - string: A tag name without value - string[]: An array of tag names - TagMap: A map of tag name/value pairs\n *\n * @example\n * ```ts\n * // Add a named tag `controller`\n * binding.tag('controller');\n *\n * // Add two named tags: `controller` and `rest`\n * binding.tag('controller', 'rest');\n *\n * // Add two tags\n * // - `controller` (name = 'controller')\n * // `{name: 'my-controller'}` (name = 'name', value = 'my-controller')\n * binding.tag('controller', {name: 'my-controller'});\n *\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "tag(...tags: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag",
                  "canonicalReference": "@loopback/context!BindingTag:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "tags",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "tag"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#tagMap:member",
              "docComment": "/**\n * Map for tag name/value pairs\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly tagMap: "
                },
                {
                  "kind": "Reference",
                  "text": "TagMap",
                  "canonicalReference": "@loopback/context!TagMap:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "tagMap",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#tagNames:member",
              "docComment": "/**\n * Get an array of tag names\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get tagNames(): "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "tagNames",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#to:member(1)",
              "docComment": "/**\n * Bind the key to a constant value. The value must be already available at binding time, it is not allowed to pass a Promise instance.\n *\n * @param value - The bound value.\n *\n * @example\n * ```ts\n * ctx.bind('appName').to('CodeHub');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "to(value: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "to"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#toAlias:member(1)",
              "docComment": "/**\n * Bind the key to an alias of another binding\n *\n * @param keyWithPath - Target binding key with optional path, such as `servers.RestServer.options#apiExplorer`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toAlias(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "toAlias"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#toClass:member(1)",
              "docComment": "/**\n * Bind the key to an instance of the given class.\n *\n * @param ctor - The class constructor to call. Any constructor arguments must be annotated with `@inject` so that we can resolve them from the context.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toClass(ctor: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctor",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "toClass"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#toDynamicValue:member(1)",
              "docComment": "/**\n * Bind the key to a computed (dynamic) value.\n *\n * @param factoryFn - The factory function creating the value. Both sync and async functions are supported.\n *\n * @example\n * ```ts\n * // synchronous\n * ctx.bind('now').toDynamicValue(() => Date.now());\n *\n * // asynchronous\n * ctx.bind('something').toDynamicValue(\n *  async () => Promise.delay(10).then(doSomething)\n * );\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toDynamicValue(factoryFn: "
                },
                {
                  "kind": "Content",
                  "text": "() => "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "factoryFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 4
                  }
                }
              ],
              "name": "toDynamicValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#toJSON:member(1)",
              "docComment": "/**\n * Convert to a plain JSON object\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toJSON(): "
                },
                {
                  "kind": "Reference",
                  "text": "JSONObject",
                  "canonicalReference": "@loopback/context!JSONObject:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toJSON"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#toProvider:member(1)",
              "docComment": "/**\n * Bind the key to a value computed by a Provider.\n *\n * *\n *\n * @param provider - The value provider to use.\n *\n * @example\n * ```ts\n * export class DateProvider implements Provider<Date> {\n *   constructor(@inject('stringDate') private param: String){}\n *   value(): Date {\n *     return new Date(param);\n *   }\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toProvider(providerClass: "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider",
                  "canonicalReference": "@loopback/context!Provider:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "providerClass",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                }
              ],
              "name": "toProvider"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#type:member",
              "docComment": "/**\n * Type of the binding value getter\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get type(): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingType",
                  "canonicalReference": "@loopback/context!BindingType:enum"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Binding#unlock:member(1)",
              "docComment": "/**\n * Unlock the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unlock(): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "unlock"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Binding#valueConstructor:member",
              "docComment": "/**\n * For bindings bound via `toClass()`, this property contains the constructor function of the class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get valueConstructor(): "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor",
                  "canonicalReference": "@loopback/context!Constructor:type"
                },
                {
                  "kind": "Content",
                  "text": "<T> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "valueConstructor",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingAddress:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingAddress<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "string | "
            },
            {
              "kind": "Reference",
              "text": "BindingKey",
              "canonicalReference": "@loopback/context!BindingKey:class"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingAddress",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!BindingComparator:interface",
          "docComment": "/**\n * Compare function to sort an array of bindings. It is used by `Array.prototype.sort()`.\n *\n * @example\n * ```ts\n * const compareByKey: BindingComparator = (a, b) => a.key.localeCompare(b.key);\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface BindingComparator "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingComparator",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "@loopback/context!BindingComparator:call(1)",
              "docComment": "/**\n * Compare two bindings\n *\n * @param bindingA - First binding\n *\n * @param bindingB - Second binding\n *\n * @returns A number to determine order of bindingA and bindingB - 0 leaves bindingA and bindingB unchanged - <0 bindingA comes before bindingB - >0 bindingA comes after bindingB\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "(bindingA: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": ", bindingB: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "bindingA",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "bindingB",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Enum",
          "canonicalReference": "@loopback/context!BindingCreationPolicy:enum",
          "docComment": "/**\n * Policy to control if a binding should be created for the context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum BindingCreationPolicy "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingCreationPolicy",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingCreationPolicy.ALWAYS_CREATE:member",
              "docComment": "/**\n * Always create a binding with the key for the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "ALWAYS_CREATE = "
                },
                {
                  "kind": "Content",
                  "text": "\"Always\""
                }
              ],
              "releaseTag": "Public",
              "name": "ALWAYS_CREATE",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingCreationPolicy.CREATE_IF_NOT_BOUND:member",
              "docComment": "/**\n * Create a binding if the key is not bound in the context. Otherwise, return the existing binding.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CREATE_IF_NOT_BOUND = "
                },
                {
                  "kind": "Content",
                  "text": "\"IfNotBound\""
                }
              ],
              "releaseTag": "Public",
              "name": "CREATE_IF_NOT_BOUND",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingCreationPolicy.NEVER_CREATE:member",
              "docComment": "/**\n * Never create a binding for the context. If the key is not bound in the context, throw an error.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "NEVER_CREATE = "
                },
                {
                  "kind": "Content",
                  "text": "\"Never\""
                }
              ],
              "releaseTag": "Public",
              "name": "NEVER_CREATE",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!BindingElement:interface",
          "docComment": "/**\n * Wrapper for bindings tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface BindingElement "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingElement",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!BindingElement#type:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "type: "
                },
                {
                  "kind": "Content",
                  "text": "'binding'"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!BindingElement#value:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "value: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingEvent:type",
          "docComment": "/**\n * Information for a binding event\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingEvent = "
            },
            {
              "kind": "Content",
              "text": "{\n    type: string;\n    binding: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>>;\n    operation: string;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingEvent",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingEventListener:type",
          "docComment": "/**\n * Event listeners for binding events\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingEventListener = "
            },
            {
              "kind": "Content",
              "text": "(\nevent: "
            },
            {
              "kind": "Reference",
              "text": "BindingEvent",
              "canonicalReference": "@loopback/context!BindingEvent:type"
            },
            {
              "kind": "Content",
              "text": ") => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingEventListener",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!BindingFilter:interface",
          "docComment": "/**\n * A function that filters bindings. It returns `true` to select a given binding.\n *\n * @remarks\n *\n * Originally, we allowed filters to be tied with a single value type. This actually does not make much sense - the filter function is typically invoked on all bindings to find those ones matching the given criteria. Filters must be prepared to handle bindings of any value type. We learned about this problem after enabling TypeScript's `strictFunctionTypes` check. This aspect is resolved by typing the input argument as `Binding<unknown>`.\n *\n * Ideally, `BindingFilter` should be declared as a type guard as follows:\n * ```ts\n * export type BindingFilterGuard<ValueType = unknown> = (\n *   binding: Readonly<Binding<unknown>>,\n * ) => binding is Readonly<Binding<ValueType>>;\n * ```\n *\n * But TypeScript treats the following types as incompatible and does not accept type 1 for type 2.\n *\n * 1. `(binding: Readonly<Binding<unknown>>) => boolean` 2. `(binding: Readonly<Binding<unknown>>) => binding is Readonly<Binding<ValueType>>`\n *\n * If we described BindingFilter as a type-guard, then all filter implementations would have to be explicitly typed as type-guards too, which would make it tedious to write quick filter functions like `b => b.key.startsWith('services')`.\n *\n * To keep things simple and easy to use, we use `boolean` as the return type of a binding filter function.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface BindingFilter "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingFilter",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "@loopback/context!BindingFilter:call(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "(binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingFromClassOptions:type",
          "docComment": "/**\n * Options to customize the binding created from a class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingFromClassOptions = "
            },
            {
              "kind": "Content",
              "text": "{\n    key?: "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress",
              "canonicalReference": "@loopback/context!BindingAddress:type"
            },
            {
              "kind": "Content",
              "text": ";\n    type?: string;\n    name?: string;\n    namespace?: string;\n    typeNamespaceMapping?: "
            },
            {
              "kind": "Reference",
              "text": "TypeNamespaceMapping",
              "canonicalReference": "@loopback/context!TypeNamespaceMapping:type"
            },
            {
              "kind": "Content",
              "text": ";\n    defaultScope?: "
            },
            {
              "kind": "Reference",
              "text": "BindingScope",
              "canonicalReference": "@loopback/context!BindingScope:enum"
            },
            {
              "kind": "Content",
              "text": ";\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingFromClassOptions",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!BindingInspectOptions:interface",
          "docComment": "/**\n * Options for binding.inspect()\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface BindingInspectOptions "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingInspectOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!BindingInspectOptions#includeInjections:member",
              "docComment": "/**\n * The flag to control if injections should be inspected\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "includeInjections?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "includeInjections",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!BindingKey:class",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class BindingKey<ValueType> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "BindingKey",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey.buildKeyForConfig:member(1)",
              "docComment": "/**\n * Build a binding key for the configuration of the given binding. The format is `<key>:$config`\n *\n * @param key - Key of the target binding to be configured\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static buildKeyForConfig<T>(key?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "buildKeyForConfig"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!BindingKey.CONFIG_NAMESPACE:member",
              "docComment": "/**\n * Name space for configuration binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static CONFIG_NAMESPACE: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIG_NAMESPACE",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": true
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey.create:member(1)",
              "docComment": "/**\n * Create a new key for a binding bound to a value of type `ValueType`.\n *\n * @param key - The binding key. When propertyPath is not provided, the key is allowed to contain propertyPath as encoded via `BindingKey#toString()`\n *\n * @param propertyPath - Optional path to a deep property of the bound value.\n *\n * @example\n * ```ts\n * BindingKey.create<string>('application.name');\n * BindingKey.create<number>('config', 'rest.port);\n * BindingKey.create<number>('config#rest.port');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static create<ValueType>(key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey#deepProperty:member(1)",
              "docComment": "/**\n * Get a binding address for retrieving a deep property of the object bound to the current binding key.\n *\n * @param propertyPath - A dot-separated path to a (deep) property, e.g. \"server.port\".\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "deepProperty<PropertyValueType>(propertyPath: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<PropertyValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "PropertyValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "deepProperty"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!BindingKey#key:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey.parseKeyWithPath:member(1)",
              "docComment": "/**\n * Parse a string containing both the binding key and the path to the deeply nested property to retrieve.\n *\n * @param keyWithPath - The key with an optional path, e.g. \"application.instance\" or \"config#rest.port\".\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static parseKeyWithPath<T>(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "parseKeyWithPath"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!BindingKey.PROPERTY_SEPARATOR:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static readonly PROPERTY_SEPARATOR = \"#\";"
                }
              ],
              "releaseTag": "Public",
              "name": "PROPERTY_SEPARATOR",
              "propertyTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "isStatic": true
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!BindingKey#propertyPath:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "propertyPath",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey#toString:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toString(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toString"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!BindingKey.validate:member(1)",
              "docComment": "/**\n * Validate the binding key format. Please note that `#` is reserved. Returns a string representation of the binding key.\n *\n * @param key - Binding key, such as `a`, `a.b`, `a:b`, or `a/b`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static validate<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "validate"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingMetadata:type",
          "docComment": "/**\n * Binding metadata from `@bind`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingMetadata = "
            },
            {
              "kind": "Content",
              "text": "{\n    templates: "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": "[];\n    target: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<unknown>;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingMetadata",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 6
          }
        },
        {
          "kind": "Enum",
          "canonicalReference": "@loopback/context!BindingScope:enum",
          "docComment": "/**\n * Scope for binding values\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum BindingScope "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingScope",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingScope.CONTEXT:member",
              "docComment": "/**\n * The binding provides a value as a singleton within each local context. The value is calculated only once per context and cached for subsequential uses. Child contexts have their own value and do not share with their ancestors.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * 1. `0` is the resolved value for `'b1'` within the `app` afterward - app.get('b1') ==> 0 (always)\n *\n * 2. `'b1'` is resolved in `app` but not in `req1`, a new value `1` is calculated and used for `req1` afterward - req1.get('b1') ==> 1 (always)\n *\n * 3. `'b1'` is resolved in `app` but not in `req2`, a new value `2` is calculated and used for `req2` afterward - req2.get('b1') ==> 2 (always)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONTEXT = "
                },
                {
                  "kind": "Content",
                  "text": "\"Context\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONTEXT",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingScope.SINGLETON:member",
              "docComment": "/**\n * The binding provides a value as a singleton within the context hierarchy (the owning context and its descendants). The value is calculated only once for the owning context and cached for subsequential uses. Child contexts share the same value as their ancestors.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * 1. `0` is the singleton for `app` afterward - app.get('b1') ==> 0 (always)\n *\n * 2. `'b1'` is resolved in `app`, reuse it for `req1` - req1.get('b1') ==> 0 (always)\n *\n * 3. `'b1'` is resolved in `app`, reuse it for `req2` - req2.get('b1') ==> 0 (always)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "SINGLETON = "
                },
                {
                  "kind": "Content",
                  "text": "\"Singleton\""
                }
              ],
              "releaseTag": "Public",
              "name": "SINGLETON",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingScope.TRANSIENT:member",
              "docComment": "/**\n * The binding provides a value that is calculated each time. This will be the default scope if not set.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * Now `'b1'` is resolved to a new value each time for `app` and its descendants `req1` and `req2`: - app.get('b1') ==> 0 - req1.get('b1') ==> 1 - req2.get('b1') ==> 2 - req2.get('b1') ==> 3 - app.get('b1') ==> 4\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "TRANSIENT = "
                },
                {
                  "kind": "Content",
                  "text": "\"Transient\""
                }
              ],
              "releaseTag": "Public",
              "name": "TRANSIENT",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingScopeAndTags:type",
          "docComment": "/**\n * An object to configure binding scope and tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingScopeAndTags = "
            },
            {
              "kind": "Content",
              "text": "{\n    scope?: "
            },
            {
              "kind": "Reference",
              "text": "BindingScope",
              "canonicalReference": "@loopback/context!BindingScope:enum"
            },
            {
              "kind": "Content",
              "text": ";\n    tags?: "
            },
            {
              "kind": "Reference",
              "text": "BindingTag",
              "canonicalReference": "@loopback/context!BindingTag:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingTag",
              "canonicalReference": "@loopback/context!BindingTag:type"
            },
            {
              "kind": "Content",
              "text": "[];\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingScopeAndTags",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingSelector:type",
          "docComment": "/**\n * Select binding(s) by key or a filter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingSelector<ValueType = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress",
              "canonicalReference": "@loopback/context!BindingAddress:type"
            },
            {
              "kind": "Content",
              "text": "<ValueType> | "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingSelector",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingSpec:type",
          "docComment": "/**\n * Specification of parameters for `@bind()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingSpec = "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingScopeAndTags",
              "canonicalReference": "@loopback/context!BindingScopeAndTags:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingSpec",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingTag:type",
          "docComment": "/**\n * Binding tag can be a simple name or name/value pairs\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingTag = "
            },
            {
              "kind": "Reference",
              "text": "TagMap",
              "canonicalReference": "@loopback/context!TagMap:type"
            },
            {
              "kind": "Content",
              "text": " | string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingTag",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!BindingTagFilter:interface",
          "docComment": "/**\n * Binding filter function that holds a binding tag pattern. `Context.find()` uses the `bindingTagPattern` to optimize the matching of bindings by tag to avoid expensive check for all bindings.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface BindingTagFilter extends "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingTagFilter",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!BindingTagFilter#bindingTagPattern:member",
              "docComment": "/**\n * A special property on the filter function to provide access to the binding tag pattern which can be utilized to optimize the matching of bindings by tag in a context.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bindingTagPattern: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag",
                  "canonicalReference": "@loopback/context!BindingTag:type"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp",
                  "canonicalReference": "!RegExp:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingTagPattern",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BindingTemplate:type",
          "docComment": "/**\n * A function as the template to configure bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BindingTemplate<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "(binding: "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<T>) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingTemplate",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!bindingTemplateFor:function(1)",
          "docComment": "/**\n * Get the binding template for a class with binding metadata\n *\n * @param cls - A class with optional `@bind`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function bindingTemplateFor<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(cls: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<T | "
            },
            {
              "kind": "Reference",
              "text": "Provider",
              "canonicalReference": "@loopback/context!Provider:interface"
            },
            {
              "kind": "Content",
              "text": "<T>>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate",
              "canonicalReference": "@loopback/context!BindingTemplate:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "bindingTemplateFor"
        },
        {
          "kind": "Enum",
          "canonicalReference": "@loopback/context!BindingType:enum",
          "docComment": "/**\n * Type of the binding source\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum BindingType "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingType",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingType.ALIAS:member",
              "docComment": "/**\n * A alias to another binding key with optional path\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "ALIAS = "
                },
                {
                  "kind": "Content",
                  "text": "\"Alias\""
                }
              ],
              "releaseTag": "Public",
              "name": "ALIAS",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingType.CLASS:member",
              "docComment": "/**\n * A class to be instantiated as the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CLASS = "
                },
                {
                  "kind": "Content",
                  "text": "\"Class\""
                }
              ],
              "releaseTag": "Public",
              "name": "CLASS",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingType.CONSTANT:member",
              "docComment": "/**\n * A fixed value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONSTANT = "
                },
                {
                  "kind": "Content",
                  "text": "\"Constant\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONSTANT",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingType.DYNAMIC_VALUE:member",
              "docComment": "/**\n * A function to get the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "DYNAMIC_VALUE = "
                },
                {
                  "kind": "Content",
                  "text": "\"DynamicValue\""
                }
              ],
              "releaseTag": "Public",
              "name": "DYNAMIC_VALUE",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/context!BindingType.PROVIDER:member",
              "docComment": "/**\n * A provider class with `value()` function to get the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "PROVIDER = "
                },
                {
                  "kind": "Content",
                  "text": "\"Provider\""
                }
              ],
              "releaseTag": "Public",
              "name": "PROVIDER",
              "initializerTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!BoundValue:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type BoundValue = "
            },
            {
              "kind": "Content",
              "text": "any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BoundValue",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!compareBindingsByTag:function(1)",
          "docComment": "/**\n * Creates a binding compare function to sort bindings by tagged phase name.\n *\n * @remarks\n *\n * Two bindings are compared as follows:\n *\n * 1. Get values for the given tag as `phase` for bindings, if the tag is not present, default `phase` to `''`. 2. If both bindings have `phase` value in `orderOfPhases`, honor the order specified by `orderOfPhases`. 3. If a binding's `phase` does not exist in `orderOfPhases`, it comes before the one with `phase` exists in `orderOfPhases`. 4. If both bindings have `phase` value outside of `orderOfPhases`, they are ordered by phase names alphabetically and symbol values come before string values.\n *\n * @param phaseTagName - Name of the binding tag for phase\n *\n * @param orderOfPhases - An array of phase names as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function compareBindingsByTag(phaseTagName?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", orderOfPhases?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingComparator",
              "canonicalReference": "@loopback/context!BindingComparator:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "phaseTagName",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "orderOfPhases",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ],
          "name": "compareBindingsByTag"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!compareByOrder:function(1)",
          "docComment": "/**\n * Compare two values by the predefined order\n *\n * @remarks\n *\n * The comparison is performed as follows:\n *\n * 1. If both values are included in `order`, they are sorted by their indexes in `order`. 2. The value included in `order` comes after the value not included in `order`. 3. If neither values are included in `order`, they are sorted: - symbol values come before string values - alphabetical order for two symbols or two strings\n *\n * @param a - First value\n *\n * @param b - Second value\n *\n * @param order - An array of values as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function compareByOrder(a: "
            },
            {
              "kind": "Content",
              "text": "string | symbol | undefined | null"
            },
            {
              "kind": "Content",
              "text": ", b: "
            },
            {
              "kind": "Content",
              "text": "string | symbol | undefined | null"
            },
            {
              "kind": "Content",
              "text": ", order?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "number"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "a",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "b",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "order",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "compareByOrder"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!config:function(1)",
          "docComment": "/**\n * Inject a property from `config` of the current binding. If no corresponding config value is present, `undefined` will be injected as the configuration binding is resolved with `optional: true` by default.\n *\n * @param propertyPath - Optional property path of the config. If is `''` or not present, the `config` object will be returned.\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @example\n * ```ts\n * class Store {\n *   constructor(\n *     @config('x') public optionX: number,\n *     @config('y') public optionY: string,\n *   ) { }\n * }\n *\n * ctx.configure('store1', { x: 1, y: 'a' });\n * ctx.configure('store2', { x: 2, y: 'b' });\n *\n * ctx.bind('store1').toClass(Store);\n * ctx.bind('store2').toClass(Store);\n *\n * const store1 = ctx.getSync('store1');\n * expect(store1.optionX).to.eql(1);\n * expect(store1.optionY).to.eql('a');\n *\n * const store2 = ctx.getSync('store2');\n * expect(store2.optionX).to.eql(2);\n * expect(store2.optionY).to.eql('b');\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function config(propertyPath?: "
            },
            {
              "kind": "Content",
              "text": "string | "
            },
            {
              "kind": "Reference",
              "text": "ConfigInjectionMetadata",
              "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface"
            },
            {
              "kind": "Content",
              "text": ", metadata?: "
            },
            {
              "kind": "Reference",
              "text": "ConfigInjectionMetadata",
              "canonicalReference": "@loopback/context!ConfigInjectionMetadata: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": 6,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "propertyPath",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "metadata",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            }
          ],
          "name": "config"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!config:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace config "
            }
          ],
          "releaseTag": "Public",
          "name": "config",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!config.getter:var",
              "docComment": "/**\n * `@inject.getter` decorator to inject a config getter function\n *\n * @param propertyPath - Optional property path of the config object\n *\n * @param metadata - Injection metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getter: "
                },
                {
                  "kind": "Content",
                  "text": "(propertyPath?: string | "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigInjectionMetadata",
                  "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigInjectionMetadata",
                  "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "getter",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!config.view:var",
              "docComment": "/**\n * `@inject.view` decorator to inject a config context view to allow dynamic changes in configuration\n *\n * @param propertyPath - Optional property path of the config object\n *\n * @param metadata - Injection metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "view: "
                },
                {
                  "kind": "Content",
                  "text": "(propertyPath?: string | "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigInjectionMetadata",
                  "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigInjectionMetadata",
                  "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "view",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!configBindingKeyFor:function(1)",
          "docComment": "/**\n * Create binding key for configuration of the binding\n *\n * @param key - Binding key for the target binding\n *\n * @param propertyPath - Property path for the configuration\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function configBindingKeyFor<ConfigValueType = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(key: "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress",
              "canonicalReference": "@loopback/context!BindingAddress:type"
            },
            {
              "kind": "Content",
              "text": ", propertyPath?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingKey",
              "canonicalReference": "@loopback/context!BindingKey:class"
            },
            {
              "kind": "Content",
              "text": "<ConfigValueType>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "key",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "propertyPath",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "ConfigValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "configBindingKeyFor"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ConfigInjectionMetadata:interface",
          "docComment": "/**\n * Injection metadata for `@config.*`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ConfigInjectionMetadata extends "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata",
              "canonicalReference": "@loopback/context!InjectionMetadata:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ConfigInjectionMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ConfigInjectionMetadata#fromBinding:member",
              "docComment": "/**\n * Customize the target binding key from which the configuration is fetched. If not specified, the configuration of the current binding that contains the injection is used.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "fromBinding?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "fromBinding",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ConfigInjectionMetadata#propertyPath:member",
              "docComment": "/**\n * Property path to retrieve the configuration of the target binding, for example, `rest.host`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "propertyPath",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ConfigurationResolver:interface",
          "docComment": "/**\n * Resolver for configuration of bindings. It's responsible for finding corresponding configuration for a given binding key.\n *\n * By default, `undefined` is expected if no configuration is provided. The behavior can be overridden by setting `optional` to `false` in resolution options.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ConfigurationResolver "
            }
          ],
          "releaseTag": "Public",
          "name": "ConfigurationResolver",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/context!ConfigurationResolver#getConfigAsValueOrPromise:member(1)",
              "docComment": "/**\n * Resolve config for the binding key\n *\n * @param key - Binding key\n *\n * @param propertyPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `config` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution. - optional: if not set or set to `true`, `undefined` will be returned if no corresponding value is found. Otherwise, an error will be thrown.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getConfigAsValueOrPromise<ConfigValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", resolutionOptions?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<ConfigValueType | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!Constructor:type",
          "docComment": "/**\n * A class constructor accepting arbitrary arguments.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type Constructor<T> = "
            },
            {
              "kind": "Content",
              "text": "new (...args: any[]) => T"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Constructor",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!Context:class",
          "docComment": "/**\n * Context provides an implementation of Inversion of Control (IoC) container\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class Context extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter",
              "canonicalReference": "!internal.EventEmitter:class"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Context",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#_findByTagIndex:member(1)",
              "docComment": "/**\n * Find bindings by tag leveraging indexes\n *\n * @param tag - Tag name pattern or name/value pairs\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _findByTagIndex<ValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(tag: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag",
                  "canonicalReference": "@loopback/context!BindingTag:type"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp",
                  "canonicalReference": "!RegExp:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "tag",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "_findByTagIndex"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#_mergeWithParent:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _mergeWithParent<ValueType>(childList: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": ", parentList?: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 15
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "childList",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "parentList",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "_mergeWithParent"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#_parent:member",
              "docComment": "/**\n * Parent context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _parent?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_parent",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!Context:constructor(1)",
              "docComment": "/**\n * Create a new context.\n *\n * @param _parent - The optional parent context\n *\n * @param name - Name of the context, if not provided, a `uuid` will be generated as the name\n *\n * @example\n * ```ts\n * // Create a new root context, let the framework to create a unique name\n * const rootCtx = new Context();\n *\n * // Create a new child context inheriting bindings from `rootCtx`\n * const childCtx = new Context(rootCtx);\n *\n * // Create another root context called \"application\"\n * const appCtx = new Context('application');\n *\n * // Create a new child context called \"request\" and inheriting bindings\n * // from `appCtx`\n * const reqCtx = new Context(appCtx, 'request');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(_parent?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": " | string"
                },
                {
                  "kind": "Content",
                  "text": ", name?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "_parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#add:member(1)",
              "docComment": "/**\n * Add a binding to the context. If a locked binding already exists with the same key, an error will be thrown.\n *\n * @param binding - The configured binding to be added\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "add(binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "name": "add"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#bind:member(1)",
              "docComment": "/**\n * Create a binding with the given key in the context. If a locked binding already exists with the same key, an error will be thrown.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bind<ValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "bind"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#close:member(1)",
              "docComment": "/**\n * Close the context: clear observers, stop notifications, and remove event listeners from its parent context.\n *\n * @remarks\n *\n * This method MUST be called to avoid memory leaks once a context object is no longer needed and should be recycled. An example is the `RequestContext`, which is created per request.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "close(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "close"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#configResolver:member",
              "docComment": "/**\n * Configuration resolver\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected configResolver: "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver",
                  "canonicalReference": "@loopback/context!ConfigurationResolver:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "configResolver",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#configure:member(1)",
              "docComment": "/**\n * Create a corresponding binding for configuration of the target bound by the given key in the context.\n *\n * For example, `ctx.configure('controllers.MyController').to({x: 1})` will create binding `controllers.MyController:$config` with value `{x: 1}`.\n *\n * @param key - The key for the binding to be configured\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "configure<ConfigValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(key?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ConfigValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "configure"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#contains:member(1)",
              "docComment": "/**\n * Check if a binding exists with the given key in the local context without delegating to the parent context\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "contains(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "contains"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#createView:member(1)",
              "docComment": "/**\n * Create a view of the context chain with the given binding filter\n *\n * @param filter - A function to match bindings\n *\n * @param comparator - A function to sort matched bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "createView<T = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">(filter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ", comparator?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator",
                  "canonicalReference": "@loopback/context!BindingComparator:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ContextView",
                  "canonicalReference": "@loopback/context!ContextView:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "createView"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#emitError:member(1)",
              "docComment": "/**\n * Emit an `error` event\n *\n * @param  - err Error\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "emitError(err: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "err",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "emitError"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#emitEvent:member(1)",
              "docComment": "/**\n * A strongly-typed method to emit context events\n *\n * @param  - type Event type\n *\n * @param  - event Context event\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "emitEvent<T extends "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEvent",
                  "canonicalReference": "@loopback/context!ContextEvent:type"
                },
                {
                  "kind": "Content",
                  "text": ">(type: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", event: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "type",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "emitEvent"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#find:member(1)",
              "docComment": "/**\n * Find bindings using a key pattern or filter function\n *\n * @param pattern - A filter function, a regexp or a wildcard pattern with optional `*` and `?`. Find returns such bindings where the key matches the provided pattern.\n *\n * For a wildcard: - `*` matches zero or more characters except `.` and `:` - `?` matches exactly one character except `.` and `:`\n *\n * For a filter function: - return `true` to include the binding in the results - return `false` to exclude it.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "find<ValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(pattern?: "
                },
                {
                  "kind": "Content",
                  "text": "string | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp",
                  "canonicalReference": "!RegExp:interface"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "pattern",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "find"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#findByTag:member(1)",
              "docComment": "/**\n * Find bindings using the tag filter. If the filter matches one of the binding tags, the binding is included.\n *\n * @param tagFilter - A filter for tags. It can be in one of the following forms: - A regular expression, such as `/controller/` - A wildcard pattern string with optional `*` and `?`, such as `'con*'` For a wildcard: - `*` matches zero or more characters except `.` and `:` - `?` matches exactly one character except `.` and `:` - An object containing tag name/value pairs, such as `{name: 'my-controller'}`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "findByTag<ValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(tagFilter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag",
                  "canonicalReference": "@loopback/context!BindingTag:type"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp",
                  "canonicalReference": "!RegExp:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "tagFilter",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "findByTag"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#findOrCreateBinding:member(1)",
              "docComment": "/**\n * Find or create a binding for the given key\n *\n * @param key - Binding address\n *\n * @param policy - Binding creation policy\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "findOrCreateBinding<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", policy?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingCreationPolicy",
                  "canonicalReference": "@loopback/context!BindingCreationPolicy:enum"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "policy",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "findOrCreateBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#get:member(1)",
              "docComment": "/**\n * Get the value bound to the given key, throw an error when no value is bound for the given key.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param session - Optional session for resolution (accepted for backward compatibility)\n *\n * @returns A promise of the bound value.\n *\n * @example\n * ```ts\n * // get the value bound to \"application.instance\"\n * const app = await ctx.get<Application>('application.instance');\n *\n * // get \"rest\" property from the value bound to \"config\"\n * const config = await ctx.get<RestComponentConfig>('config#rest');\n *\n * // get \"a\" property of \"numbers\" property from the value bound to \"data\"\n * ctx.bind('data').to({numbers: {a: 1, b: 2}, port: 3000});\n * const a = await ctx.get<number>('data#numbers.a');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get<ValueType>(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "get"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#get:member(2)",
              "docComment": "/**\n * Get the value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param options - Options for resolution.\n *\n * @returns A promise of the bound value, or a promise of undefined when the optional binding is not found.\n *\n * @example\n * ```ts\n * // get \"rest\" property from the value bound to \"config\"\n * // use `undefined` when no config is provided\n * const config = await ctx.get<RestComponentConfig>('config#rest', {\n *   optional: true\n * });\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get<ValueType>(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ", options: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "get"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getBinding:member(1)",
              "docComment": "/**\n * Look up a binding by key in the context and its ancestors. If no matching binding is found, an error will be thrown.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getBinding<ValueType = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "getBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getBinding:member(2)",
              "docComment": "/**\n * Look up a binding by key in the context and its ancestors. If no matching binding is found and `options.optional` is not set to true, an error will be thrown.\n *\n * @param key - Binding key\n *\n * @param options - Options to control if the binding is optional. If `options.optional` is set to true, the method will return `undefined` instead of throwing an error if the binding key is not found.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getBinding<ValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        optional?: boolean;\n    }"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getConfig:member(1)",
              "docComment": "/**\n * Resolve configuration for the binding by key\n *\n * @param key - Binding key\n *\n * @param propertyPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `<config>` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getConfig<ConfigValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", resolutionOptions?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<ConfigValueType | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfig"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getConfigAsValueOrPromise:member(1)",
              "docComment": "/**\n * Get the value or promise of configuration for a given binding by key\n *\n * @param key - Binding key\n *\n * @param propertyPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `<config>` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution. - optional: if not set or set to `true`, `undefined` will be returned if no corresponding value is found. Otherwise, an error will be thrown.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getConfigAsValueOrPromise<ConfigValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", resolutionOptions?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<ConfigValueType | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getConfigSync:member(1)",
              "docComment": "/**\n * Resolve configuration synchronously for the binding by key\n *\n * @param key - Binding key\n *\n * @param propertyPath - Property path for the option. For example, `x.y` requests for `config.x.y`. If not set, the `config` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getConfigSync<ConfigValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", resolutionOptions?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "ConfigValueType | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getOwnerContext:member(1)",
              "docComment": "/**\n * Get the owning context for a binding key\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getOwnerContext(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "getOwnerContext"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getSync:member(1)",
              "docComment": "/**\n * Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param session - Session for resolution (accepted for backward compatibility)\n *\n * @returns A promise of the bound value.\n *\n * @example\n * ```ts\n * // get the value bound to \"application.instance\"\n * const app = ctx.getSync<Application>('application.instance');\n *\n * // get \"rest\" property from the value bound to \"config\"\n * const config = await ctx.getSync<RestComponentConfig>('config#rest');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getSync<ValueType>(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#getSync:member(2)",
              "docComment": "/**\n * Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param options - Options for resolution.\n *\n * @returns The bound value, or undefined when an optional binding is not found.\n *\n * @example\n * ```ts\n * // get \"rest\" property from the value bound to \"config\"\n * // use \"undefined\" when no config is provided\n * const config = await ctx.getSync<RestComponentConfig>('config#rest', {\n *   optional: true\n * });\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getSync<ValueType>(keyWithPath: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "ValueType | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#inspect:member(1)",
              "docComment": "/**\n * Inspect the context and dump out a JSON object representing the context hierarchy\n *\n * @param options - Options for inspect\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "inspect(options?: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextInspectOptions",
                  "canonicalReference": "@loopback/context!ContextInspectOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "JSONObject",
                  "canonicalReference": "@loopback/context!JSONObject:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "inspect"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#isBound:member(1)",
              "docComment": "/**\n * Check if a key is bound in the context or its ancestors\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "isBound(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "isBound"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#isSubscribed:member(1)",
              "docComment": "/**\n * Check if an observer is subscribed to this context\n *\n * @param observer - Context observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "isSubscribed(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextObserver",
                  "canonicalReference": "@loopback/context!ContextObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "isSubscribed"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#name:member",
              "docComment": "/**\n * Name of the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly name: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "name",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#registry:member",
              "docComment": "/**\n * Key to binding map as the internal registry\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly registry: "
                },
                {
                  "kind": "Reference",
                  "text": "Map",
                  "canonicalReference": "!Map:interface"
                },
                {
                  "kind": "Content",
                  "text": "<string, "
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "registry",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#setupConfigurationResolverIfNeeded:member(1)",
              "docComment": "/**\n * Set up the configuration resolver if needed\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected setupConfigurationResolverIfNeeded(): "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver",
                  "canonicalReference": "@loopback/context!ConfigurationResolver:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "setupConfigurationResolverIfNeeded"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#subscribe:member(1)",
              "docComment": "/**\n * Add a context event observer to the context\n *\n * @param observer - Context observer instance or function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "subscribe(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Subscription",
                  "canonicalReference": "@loopback/context!Subscription:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "subscribe"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#subscriptionManager:member",
              "docComment": "/**\n * Manager for observer subscriptions\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly subscriptionManager: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextSubscriptionManager",
                  "canonicalReference": "@loopback/context!ContextSubscriptionManager:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "subscriptionManager",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!Context#tagIndexer:member",
              "docComment": "/**\n * Indexer for bindings by tag\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly tagIndexer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextTagIndexer",
                  "canonicalReference": "@loopback/context!ContextTagIndexer:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "tagIndexer",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#toJSON:member(1)",
              "docComment": "/**\n * Create a plain JSON object for the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toJSON(): "
                },
                {
                  "kind": "Reference",
                  "text": "JSONObject",
                  "canonicalReference": "@loopback/context!JSONObject:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toJSON"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#unbind:member(1)",
              "docComment": "/**\n * Unbind a binding from the context. No parent contexts will be checked.\n *\n * @remarks\n *\n * If you need to unbind a binding owned by a parent context, use the code below:\n * ```ts\n * const ownerCtx = ctx.getOwnerContext(key);\n * return ownerCtx != null && ownerCtx.unbind(key);\n * ```\n *\n * @param key - Binding key\n *\n * @returns true if the binding key is found and removed from this context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unbind(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "unbind"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!Context#unsubscribe:member(1)",
              "docComment": "/**\n * Remove the context event observer from the context\n *\n * @param observer - Context event observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unsubscribe(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "unsubscribe"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!ContextBindings:namespace",
          "docComment": "/**\n * Namespace for context bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace ContextBindings "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextBindings",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextBindings.CONFIGURATION_RESOLVER:var",
              "docComment": "/**\n * Binding key for ConfigurationResolver\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONFIGURATION_RESOLVER: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver",
                  "canonicalReference": "@loopback/context!ConfigurationResolver:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIGURATION_RESOLVER",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextBindings.GLOBAL_INTERCEPTOR_ORDERED_GROUPS:var",
              "docComment": "/**\n * Binding key for ordered groups of global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "GLOBAL_INTERCEPTOR_ORDERED_GROUPS: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<string[]>"
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR_ORDERED_GROUPS",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ContextEvent:type",
          "docComment": "/**\n * Events emitted by a context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ContextEvent = "
            },
            {
              "kind": "Content",
              "text": "{\n    context: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ";\n    binding: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>>;\n    type: string;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEvent",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ContextEventListener:type",
          "docComment": "/**\n * Synchronous listener for context events\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ContextEventListener = "
            },
            {
              "kind": "Content",
              "text": "(event: "
            },
            {
              "kind": "Reference",
              "text": "ContextEvent",
              "canonicalReference": "@loopback/context!ContextEvent:type"
            },
            {
              "kind": "Content",
              "text": ") => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEventListener",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ContextEventObserver:type",
          "docComment": "/**\n * Context event observer type - An instance of `ContextObserver` or a function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ContextEventObserver = "
            },
            {
              "kind": "Reference",
              "text": "ContextObserver",
              "canonicalReference": "@loopback/context!ContextObserver:interface"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "ContextObserverFn",
              "canonicalReference": "@loopback/context!ContextObserverFn:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEventObserver",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ContextEventType:type",
          "docComment": "/**\n * Context event types. We support `bind` and `unbind` for now but keep it open for new types\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ContextEventType = "
            },
            {
              "kind": "Content",
              "text": "'bind' | 'unbind' | string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEventType",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ContextInspectOptions:interface",
          "docComment": "/**\n * Options for context.inspect()\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ContextInspectOptions extends "
            },
            {
              "kind": "Reference",
              "text": "BindingInspectOptions",
              "canonicalReference": "@loopback/context!BindingInspectOptions:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextInspectOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ContextInspectOptions#includeParent:member",
              "docComment": "/**\n * The flag to control if parent context should be inspected\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "includeParent?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "includeParent",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ContextObserver:interface",
          "docComment": "/**\n * Observers of context bind/unbind events\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ContextObserver "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextObserver",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ContextObserver#filter:member",
              "docComment": "/**\n * An optional filter function to match bindings. If not present, the listener will be notified of all binding events.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "filter?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "filter",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ContextObserver#observe:member",
              "docComment": "/**\n * Listen on `bind`, `unbind`, or other events\n *\n * @param eventType - Context event type\n *\n * @param binding - The binding as event source\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "observe: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextObserverFn",
                  "canonicalReference": "@loopback/context!ContextObserverFn:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "observe",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ContextObserverFn:type",
          "docComment": "/**\n * Listen on `bind`, `unbind`, or other events\n *\n * @param eventType - Context event type\n *\n * @param binding - The binding as event source\n *\n * @param context - Context object for the binding event\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ContextObserverFn = "
            },
            {
              "kind": "Content",
              "text": "(eventType: "
            },
            {
              "kind": "Reference",
              "text": "ContextEventType",
              "canonicalReference": "@loopback/context!ContextEventType:type"
            },
            {
              "kind": "Content",
              "text": ", binding: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>>, context: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<void>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextObserverFn",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 12
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!ContextSubscriptionManager:class",
          "docComment": "/**\n * Manager for context observer subscriptions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ContextSubscriptionManager extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter",
              "canonicalReference": "!internal.EventEmitter:class"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextSubscriptionManager",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#_observers:member",
              "docComment": "/**\n * A list of registered context observers. The Set will be created when the first observer is added.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _observers: "
                },
                {
                  "kind": "Reference",
                  "text": "Set",
                  "canonicalReference": "!Set:interface"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_observers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#_parentContextEventListener:member",
              "docComment": "/**\n * A listener to watch parent context events\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _parentContextEventListener?: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventListener",
                  "canonicalReference": "@loopback/context!ContextEventListener:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_parentContextEventListener",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `ContextSubscriptionManager` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#close:member(1)",
              "docComment": "/**\n * Close the context: clear observers, stop notifications, and remove event listeners from its parent context.\n *\n * @remarks\n *\n * This method MUST be called to avoid memory leaks once a context object is no longer needed and should be recycled. An example is the `RequestContext`, which is created per request.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "close(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "close"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#context:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#isSubscribed:member(1)",
              "docComment": "/**\n * Check if an observer is subscribed to this context\n *\n * @param observer - Context observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "isSubscribed(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextObserver",
                  "canonicalReference": "@loopback/context!ContextObserver:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "isSubscribed"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#notifyObservers:member(1)",
              "docComment": "/**\n * Publish an event to the registered observers. Please note the notification is queued and performed asynchronously so that we allow fluent APIs such as `ctx.bind('key').to(...).tag(...);` and give observers the fully populated binding.\n *\n * @param event - Context event\n *\n * @param observers - Current set of context observers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected notifyObservers(event: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEvent",
                  "canonicalReference": "@loopback/context!ContextEvent:type"
                },
                {
                  "kind": "Content",
                  "text": ", observers?: "
                },
                {
                  "kind": "Reference",
                  "text": "Set",
                  "canonicalReference": "!Set:interface"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "observers",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                }
              ],
              "name": "notifyObservers"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#subscribe:member(1)",
              "docComment": "/**\n * Add a context event observer to the context\n *\n * @param observer - Context observer instance or function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "subscribe(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Subscription",
                  "canonicalReference": "@loopback/context!Subscription:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "subscribe"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#unsubscribe:member(1)",
              "docComment": "/**\n * Remove the context event observer from the context\n *\n * @param observer - Context event observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unsubscribe(observer: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "unsubscribe"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextSubscriptionManager#waitUntilPendingNotificationsDone:member(1)",
              "docComment": "/**\n * Wait until observers are notified for all of currently pending notification events.\n *\n * This method is for test only to perform assertions after observers are notified for relevant events.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "waitUntilPendingNotificationsDone(timeout?: "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "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": "timeout",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "waitUntilPendingNotificationsDone"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!ContextTags:namespace",
          "docComment": "/**\n * Namespace for context tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace ContextTags "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextTags",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.CLASS:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CLASS = \"class\""
                }
              ],
              "releaseTag": "Public",
              "name": "CLASS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.CONFIGURATION_FOR:var",
              "docComment": "/**\n * Binding tag to associate a configuration binding with the target binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "CONFIGURATION_FOR = \"configurationFor\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIGURATION_FOR",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.GLOBAL_INTERCEPTOR_GROUP:var",
              "docComment": "/**\n * Binding tag for group name of global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "GLOBAL_INTERCEPTOR_GROUP = \"globalInterceptorGroup\""
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR_GROUP",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.GLOBAL_INTERCEPTOR_SOURCE:var",
              "docComment": "/**\n * Binding tag for global interceptors to specify sources of invocations that the interceptor should apply. The tag value can be a string or string[], such as `'route'` or `['route', 'proxy']`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "GLOBAL_INTERCEPTOR_SOURCE = \"globalInterceptorSource\""
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR_SOURCE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.GLOBAL_INTERCEPTOR:var",
              "docComment": "/**\n * Binding tag for global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "GLOBAL_INTERCEPTOR = \"globalInterceptor\""
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.KEY:var",
              "docComment": "/**\n * Binding key for the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "KEY = \"key\""
                }
              ],
              "releaseTag": "Public",
              "name": "KEY",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.NAME:var",
              "docComment": "/**\n * Name of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "NAME = \"name\""
                }
              ],
              "releaseTag": "Public",
              "name": "NAME",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.NAMESPACE:var",
              "docComment": "/**\n * Namespace of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "NAMESPACE = \"namespace\""
                }
              ],
              "releaseTag": "Public",
              "name": "NAMESPACE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.PROVIDER:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "PROVIDER = \"provider\""
                }
              ],
              "releaseTag": "Public",
              "name": "PROVIDER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!ContextTags.TYPE:var",
              "docComment": "/**\n * Type of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "TYPE = \"type\""
                }
              ],
              "releaseTag": "Public",
              "name": "TYPE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!ContextView:class",
          "docComment": "/**\n * `ContextView` provides a view for a given context chain to maintain a live list of matching bindings and their resolved values within the context hierarchy.\n *\n * This class is the key utility to implement dynamic extensions for extension points. For example, the RestServer can react to `controller` bindings even they are added/removed/updated after the application starts.\n *\n * `ContextView` is an event emitter that emits the following events: - 'bind': when a binding is added to the view - 'unbind': when a binding is removed from the view - 'close': when the view is closed (stopped observing context events) - 'refresh': when the view is refreshed as bindings are added/removed - 'resolve': when the cached values are resolved and updated\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ContextView<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter",
              "canonicalReference": "!internal.EventEmitter:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "implements "
            },
            {
              "kind": "Reference",
              "text": "ContextObserver",
              "canonicalReference": "@loopback/context!ContextObserver:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "ContextView",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#_cachedBindings:member",
              "docComment": "/**\n * An array of cached bindings that matches the binding filter\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _cachedBindings: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>>[] | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_cachedBindings",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#_cachedValues:member",
              "docComment": "/**\n * A map of cached values by binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected _cachedValues: "
                },
                {
                  "kind": "Reference",
                  "text": "Map",
                  "canonicalReference": "!Map:interface"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>>, T> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_cachedValues",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!ContextView:constructor(1)",
              "docComment": "/**\n * Create a context view\n *\n * @param context - Context object to watch\n *\n * @param filter - Binding filter to match bindings of interest\n *\n * @param comparator - Comparator to sort the matched bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", filter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ", comparator?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator",
                  "canonicalReference": "@loopback/context!BindingComparator:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#asGetter:member(1)",
              "docComment": "/**\n * As a `Getter` function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "asGetter(session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Getter",
                  "canonicalReference": "@loopback/context!Getter:type"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "asGetter"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#bindings:member",
              "docComment": "/**\n * Get the list of matched bindings. If they are not cached, it tries to find them from the context.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get bindings(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindings",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#close:member(1)",
              "docComment": "/**\n * Stop listening events from the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "close(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "close"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#comparator:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly comparator?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator",
                  "canonicalReference": "@loopback/context!BindingComparator:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "comparator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#context:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ContextView#filter:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly filter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "filter",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#findBindings:member(1)",
              "docComment": "/**\n * Find matching bindings and refresh the cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected findBindings(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<T>>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "findBindings"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#observe:member(1)",
              "docComment": "/**\n * Listen on `bind` or `unbind` and invalidate the cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "observe(event: "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventType",
                  "canonicalReference": "@loopback/context!ContextEventType:type"
                },
                {
                  "kind": "Content",
                  "text": ", binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": ", context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "observe"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#open:member(1)",
              "docComment": "/**\n * Start listening events from the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "open(): "
                },
                {
                  "kind": "Reference",
                  "text": "Subscription",
                  "canonicalReference": "@loopback/context!Subscription:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "open"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#refresh:member(1)",
              "docComment": "/**\n * Refresh the view by invalidating its cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "refresh(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "refresh"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#resolve:member(1)",
              "docComment": "/**\n * Resolve values for the matching bindings\n *\n * @param session - Resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "resolve(session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "resolve"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#singleValue:member(1)",
              "docComment": "/**\n * Get the single value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "singleValue(session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "singleValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ContextView#values:member(1)",
              "docComment": "/**\n * Get the list of resolved values. If they are not cached, it tries to find and resolve them.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "values(session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise",
                  "canonicalReference": "!Promise:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "values"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": [
            {
              "startIndex": 6,
              "endIndex": 8
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ContextViewEvent:interface",
          "docComment": "/**\n * An event emitted by a `ContextView`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ContextViewEvent<T> extends "
            },
            {
              "kind": "Reference",
              "text": "ContextEvent",
              "canonicalReference": "@loopback/context!ContextEvent:type"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "ContextViewEvent",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ContextViewEvent#cachedValue:member",
              "docComment": "/**\n * Optional cached value for an `unbind` event\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "cachedValue?: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "cachedValue",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!createBindingFromClass:function(1)",
          "docComment": "/**\n * Create a binding from a class with decorated metadata. The class is attached to the binding as follows: - `binding.toClass(cls)`: if `cls` is a plain class such as `MyController` - `binding.toProvider(cls)`: it `cls` is a value provider class with a prototype method `value()`\n *\n * @param cls - A class. It can be either a plain class or a value provider class\n *\n * @param options - Options to customize the binding key\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function createBindingFromClass<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(cls: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<T | "
            },
            {
              "kind": "Reference",
              "text": "Provider",
              "canonicalReference": "@loopback/context!Provider:interface"
            },
            {
              "kind": "Content",
              "text": "<T>>"
            },
            {
              "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": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "createBindingFromClass"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!createProxyWithInterceptors:function(1)",
          "docComment": "/**\n * Create a proxy that applies interceptors for method invocations\n *\n * @param target - Target class or object\n *\n * @param context - Context object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function createProxyWithInterceptors<T extends "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ">(target: "
            },
            {
              "kind": "Content",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", context?: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "AsyncProxy",
              "canonicalReference": "@loopback/context!AsyncProxy:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 9,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "createProxyWithInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!createViewGetter:function(1)",
          "docComment": "/**\n * Create a context view as a getter with the given filter\n *\n * @param ctx - Context object\n *\n * @param bindingFilter - A function to match bindings\n *\n * @param session - Resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function createViewGetter<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", bindingFilter: "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Getter",
              "canonicalReference": "@loopback/context!Getter:type"
            },
            {
              "kind": "Content",
              "text": "<T[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 9,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "bindingFilter",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "createViewGetter"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!createViewGetter:function(2)",
          "docComment": "/**\n * Create a context view as a getter with the given filter and sort matched bindings by the comparator.\n *\n * @param ctx - Context object\n *\n * @param bindingFilter - A function to match bindings\n *\n * @param bindingComparator - A function to compare two bindings\n *\n * @param session - Resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function createViewGetter<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">(ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", bindingFilter: "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": ", bindingComparator?: "
            },
            {
              "kind": "Reference",
              "text": "BindingComparator",
              "canonicalReference": "@loopback/context!BindingComparator:interface"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Getter",
              "canonicalReference": "@loopback/context!Getter:type"
            },
            {
              "kind": "Content",
              "text": "<T[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 13
          },
          "releaseTag": "Public",
          "overloadIndex": 2,
          "parameters": [
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "bindingFilter",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "bindingComparator",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "createViewGetter"
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!DEFAULT_TYPE_NAMESPACES:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "DEFAULT_TYPE_NAMESPACES: "
            },
            {
              "kind": "Reference",
              "text": "TypeNamespaceMapping",
              "canonicalReference": "@loopback/context!TypeNamespaceMapping:type"
            }
          ],
          "releaseTag": "Public",
          "name": "DEFAULT_TYPE_NAMESPACES",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!DefaultConfigurationResolver:class",
          "docComment": "/**\n * Resolver for configurations of bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class DefaultConfigurationResolver implements "
            },
            {
              "kind": "Reference",
              "text": "ConfigurationResolver",
              "canonicalReference": "@loopback/context!ConfigurationResolver:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "DefaultConfigurationResolver",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!DefaultConfigurationResolver:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `DefaultConfigurationResolver` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!DefaultConfigurationResolver#context:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly context: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!DefaultConfigurationResolver#getConfigAsValueOrPromise:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getConfigAsValueOrPromise<ConfigValueType>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": ", propertyPath?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", resolutionOptions?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions",
                  "canonicalReference": "@loopback/context!ResolutionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<ConfigValueType | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!describeInjectedArguments:function(1)",
          "docComment": "/**\n * Return an array of injection objects for parameters\n *\n * @param target - The target class for constructor or static methods, or the prototype for instance methods\n *\n * @param method - Method name, undefined for constructor\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function describeInjectedArguments(target: "
            },
            {
              "kind": "Reference",
              "text": "Object",
              "canonicalReference": "!Object:interface"
            },
            {
              "kind": "Content",
              "text": ", method?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection",
              "canonicalReference": "@loopback/context!Injection:interface"
            },
            {
              "kind": "Content",
              "text": ">[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ],
          "name": "describeInjectedArguments"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!describeInjectedProperties:function(1)",
          "docComment": "/**\n * Return a map of injection objects for properties\n *\n * @param target - The target class for static properties or prototype for instance properties.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function describeInjectedProperties(target: "
            },
            {
              "kind": "Reference",
              "text": "Object",
              "canonicalReference": "!Object:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection",
              "canonicalReference": "@loopback/context!Injection:interface"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "describeInjectedProperties"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!filterByKey:function(1)",
          "docComment": "/**\n * Create a binding filter from key pattern\n *\n * @param keyPattern - Binding key/wildcard, regexp, or a filter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function filterByKey(keyPattern?: "
            },
            {
              "kind": "Content",
              "text": "string | "
            },
            {
              "kind": "Reference",
              "text": "RegExp",
              "canonicalReference": "!RegExp:interface"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "keyPattern",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "name": "filterByKey"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!filterByTag:function(1)",
          "docComment": "/**\n * Create a binding filter for the tag pattern\n *\n * @param tagPattern - Binding tag name, regexp, or object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function filterByTag(tagPattern: "
            },
            {
              "kind": "Reference",
              "text": "BindingTag",
              "canonicalReference": "@loopback/context!BindingTag:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "RegExp",
              "canonicalReference": "!RegExp:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTagFilter",
              "canonicalReference": "@loopback/context!BindingTagFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "tagPattern",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              }
            }
          ],
          "name": "filterByTag"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!GenericInterceptor:type",
          "docComment": "/**\n * An interceptor function to be invoked in a chain for the given context. It serves as the base interface for various types of interceptors, such as method invocation interceptor or request/response processing interceptor.\n *\n * @param context - Context object\n *\n * @param next - A function to proceed with downstream interceptors or the target operation\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n *\n * @returns The invocation result as a value (sync) or promise (async)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type GenericInterceptor<C extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "(context: C, next: "
            },
            {
              "kind": "Reference",
              "text": "Next",
              "canonicalReference": "@loopback/context!Next:type"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult",
              "canonicalReference": "@loopback/context!InvocationResult:type"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "GenericInterceptor",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "defaultTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 6,
            "endIndex": 13
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!GenericInterceptorChain:class",
          "docComment": "/**\n * A chain of generic interceptors to be invoked for the given context\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class GenericInterceptorChain<C extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "defaultTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            }
          ],
          "name": "GenericInterceptorChain",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!GenericInterceptorChain:constructor(1)",
              "docComment": "/**\n * Create an invocation chain with a list of interceptor functions or binding keys\n *\n * @param context - Context object\n *\n * @param interceptors - An array of interceptor functions or binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context: "
                },
                {
                  "kind": "Content",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ", interceptors: "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey",
                  "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<C>[]"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "interceptors",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ]
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!GenericInterceptorChain:constructor(2)",
              "docComment": "/**\n * Create an invocation interceptor chain with a binding filter and comparator. The interceptors are discovered from the context using the binding filter and sorted by the comparator (if provided).\n *\n * @param context - Context object\n *\n * @param filter - A binding filter function to select interceptors\n *\n * @param comparator - An optional comparator to sort matched interceptor bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context: "
                },
                {
                  "kind": "Content",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ", filter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ", comparator?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator",
                  "canonicalReference": "@loopback/context!BindingComparator:interface"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!GenericInterceptorChain#getInterceptors:member",
              "docComment": "/**\n * A getter for an array of interceptor functions or binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected getInterceptors: "
                },
                {
                  "kind": "Content",
                  "text": "() => "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey",
                  "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<C>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "getInterceptors",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!GenericInterceptorChain#invokeInterceptors:member(1)",
              "docComment": "/**\n * Invoke the interceptor chain\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "invokeInterceptors(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "InvocationResult",
                  "canonicalReference": "@loopback/context!InvocationResult:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "invokeInterceptors"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type",
          "docComment": "/**\n * Interceptor function or a binding key that resolves a generic interceptor function\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n *\n * @typeParam T - Return type of `next()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type GenericInterceptorOrKey<C extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress",
              "canonicalReference": "@loopback/context!BindingAddress:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor",
              "canonicalReference": "@loopback/context!GenericInterceptor:type"
            },
            {
              "kind": "Content",
              "text": "<C>> | "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor",
              "canonicalReference": "@loopback/context!GenericInterceptor:type"
            },
            {
              "kind": "Content",
              "text": "<C>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "GenericInterceptorOrKey",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "defaultTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 6,
            "endIndex": 12
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!getBindingMetadata:function(1)",
          "docComment": "/**\n * Get binding metadata for a class\n *\n * @param target - The target class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function getBindingMetadata(target: "
            },
            {
              "kind": "Reference",
              "text": "Function",
              "canonicalReference": "!Function:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingMetadata",
              "canonicalReference": "@loopback/context!BindingMetadata:type"
            },
            {
              "kind": "Content",
              "text": " | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "getBindingMetadata"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!getDeepProperty:function(1)",
          "docComment": "/**\n * Get nested properties of an object by path\n *\n * @param value - Value of the source object\n *\n * @param path - Path to the property\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function getDeepProperty<OUT = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": ", IN = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": ">(value: "
            },
            {
              "kind": "Content",
              "text": "IN"
            },
            {
              "kind": "Content",
              "text": ", path: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "OUT | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 9,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "value",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "path",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "OUT",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "typeParameterName": "IN",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            }
          ],
          "name": "getDeepProperty"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!Getter:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace Getter "
            }
          ],
          "releaseTag": "Public",
          "name": "Getter",
          "members": [
            {
              "kind": "Function",
              "canonicalReference": "@loopback/context!Getter.fromValue:function(1)",
              "docComment": "/**\n * Convert a value into a Getter returning that value.\n *\n * @param  - value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "function fromValue<T>(value: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Getter",
                  "canonicalReference": "@loopback/context!Getter:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "fromValue"
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!Getter:type",
          "docComment": "/**\n * The function injected by `@inject.getter(bindingSelector)`. It can be used to fetch bound value(s) from the underlying binding(s). The return value will be an array if the `bindingSelector` is a `BindingFilter` function.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type Getter<T> = "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "Promise",
              "canonicalReference": "!Promise:interface"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Getter",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!GLOBAL_INTERCEPTOR_NAMESPACE:var",
          "docComment": "/**\n * Default namespace for global interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "GLOBAL_INTERCEPTOR_NAMESPACE = \"globalInterceptors\""
            }
          ],
          "releaseTag": "Public",
          "name": "GLOBAL_INTERCEPTOR_NAMESPACE",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!globalInterceptor:function(1)",
          "docComment": "/**\n * `@globalInterceptor` decorator to mark the class as a global interceptor\n *\n * @param group - Group for ordering the interceptor\n *\n * @param specs - Extra binding specs\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function globalInterceptor(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": "globalInterceptor"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!includesTagValue:function(1)",
          "docComment": "/**\n * Create a tag value matcher function that returns `true` if the target tag value equals to the item value or is an array that includes the item value.\n *\n * @param itemValue - Tag item value\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function includesTagValue(itemValue: "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "TagValueMatcher",
              "canonicalReference": "@loopback/context!TagValueMatcher:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "itemValue",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "includesTagValue"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!inject:function(1)",
          "docComment": "/**\n * A decorator to annotate method arguments for automatic injection by LoopBack IoC container.\n *\n * @param bindingSelector - What binding to use in order to resolve the value of the decorated constructor parameter or property.\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @param resolve - Optional function to resolve the injection\n *\n * @example\n *\n * Usage - Typescript:\n * ```ts\n * class InfoController {\n *   @inject('authentication.user') public userName: string;\n *\n *   constructor(@inject('application.name') public appName: string) {\n *   }\n *   // ...\n * }\n * ```\n *\n * Usage - JavaScript:\n *\n * - TODO(bajtos)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function inject(bindingSelector: "
            },
            {
              "kind": "Reference",
              "text": "BindingSelector",
              "canonicalReference": "@loopback/context!BindingSelector:type"
            },
            {
              "kind": "Content",
              "text": ", metadata?: "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata",
              "canonicalReference": "@loopback/context!InjectionMetadata:interface"
            },
            {
              "kind": "Content",
              "text": ", resolve?: "
            },
            {
              "kind": "Reference",
              "text": "ResolverFunction",
              "canonicalReference": "@loopback/context!ResolverFunction: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": 7,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "bindingSelector",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "metadata",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "resolve",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "inject"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/context!inject:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace inject "
            }
          ],
          "releaseTag": "Public",
          "name": "inject",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.binding:var",
              "docComment": "/**\n * Inject the binding object for the given key. This is useful if a binding needs to be set up beyond just a constant value allowed by `@inject.setter`. The injected binding is found or created based on the `metadata.bindingCreation` option. See `BindingCreationPolicy` for more details.\n *\n * @param bindingKey - Binding key\n *\n * @param metadata - Metadata for the injection\n *\n * @example\n * ```ts\n * class MyAuthAction {\n *   @inject.binding('current-user', {\n *     bindingCreation: BindingCreationPolicy.ALWAYS_CREATE,\n *   })\n *   private userBinding: Binding<UserProfile>;\n *\n *   async authenticate() {\n *     this.userBinding.toDynamicValue(() => {...});\n *   }\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "binding: "
                },
                {
                  "kind": "Content",
                  "text": "(bindingKey?: string | import(\"./binding-key\")."
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey",
                  "canonicalReference": "@loopback/context!BindingKey:class"
                },
                {
                  "kind": "Content",
                  "text": "<unknown> | undefined, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectBindingMetadata",
                  "canonicalReference": "@loopback/context!InjectBindingMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "binding",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.context:var",
              "docComment": "/**\n * Inject the context object.\n *\n * @example\n * ```ts\n * class MyProvider {\n *  constructor(@inject.context() private ctx: Context) {}\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "context: "
                },
                {
                  "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"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 6
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.getter:var",
              "docComment": "/**\n * Inject a function for getting the actual bound value.\n *\n * This is useful when implementing Actions, where the action is instantiated for Sequence constructor, but some of action's dependencies become bound only after other actions have been executed by the sequence.\n *\n * See also `Getter<T>`.\n *\n * @param bindingSelector - The binding key or filter we want to eventually get value(s) from.\n *\n * @param metadata - Optional metadata to help the injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getter: "
                },
                {
                  "kind": "Content",
                  "text": "(bindingSelector: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector",
                  "canonicalReference": "@loopback/context!BindingSelector:type"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata",
                  "canonicalReference": "@loopback/context!InjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "getter",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.setter:var",
              "docComment": "/**\n * Inject a function for setting (binding) the given key to a given value. (Only static/constant values are supported, it's not possible to bind a key to a class or a provider.)\n *\n * This is useful e.g. when implementing Actions that are contributing new Elements.\n *\n * See also `Setter<T>`.\n *\n * @param bindingKey - The key of the value we want to set.\n *\n * @param metadata - Optional metadata to help the injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "setter: "
                },
                {
                  "kind": "Content",
                  "text": "(bindingKey: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress",
                  "canonicalReference": "@loopback/context!BindingAddress:type"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectBindingMetadata",
                  "canonicalReference": "@loopback/context!InjectBindingMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "setter",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.tag:var",
              "docComment": "/**\n * Inject an array of values by a tag pattern string or regexp\n *\n * @param bindingTag - Tag name, regex or object\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @example\n * ```ts\n * class AuthenticationManager {\n *   constructor(\n *     @inject.tag('authentication.strategy') public strategies: Strategy[],\n *   ) {}\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "tag: "
                },
                {
                  "kind": "Content",
                  "text": "(bindingTag: string | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp",
                  "canonicalReference": "!RegExp:interface"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "Record",
                  "canonicalReference": "!Record:type"
                },
                {
                  "kind": "Content",
                  "text": "<string, any>, metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata",
                  "canonicalReference": "@loopback/context!InjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "tag",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 12
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/context!inject.view:var",
              "docComment": "/**\n * Inject matching bound values by the filter function\n *\n * @param bindingFilter - A binding filter function\n *\n * @param  - metadata\n *\n * @example\n * ```ts\n * class MyControllerWithView {\n *   @inject.view(filterByTag('foo'))\n *   view: ContextView<string[]>;\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "view: "
                },
                {
                  "kind": "Content",
                  "text": "(bindingFilter: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter",
                  "canonicalReference": "@loopback/context!BindingFilter:interface"
                },
                {
                  "kind": "Content",
                  "text": ", metadata?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata",
                  "canonicalReference": "@loopback/context!InjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => (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"
                }
              ],
              "releaseTag": "Public",
              "name": "view",
              "variableTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 10
              }
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!InjectBindingMetadata:interface",
          "docComment": "/**\n * Metadata for `@inject.binding`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface InjectBindingMetadata extends "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata",
              "canonicalReference": "@loopback/context!InjectionMetadata:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectBindingMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InjectBindingMetadata#bindingCreation:member",
              "docComment": "/**\n * Controls how the underlying binding is resolved/created\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bindingCreation?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingCreationPolicy",
                  "canonicalReference": "@loopback/context!BindingCreationPolicy:enum"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingCreation",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!Injection:interface",
          "docComment": "/**\n * Descriptor for an injection point\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Injection<ValueType = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "Injection",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#bindingSelector:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bindingSelector: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector",
                  "canonicalReference": "@loopback/context!BindingSelector:type"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingSelector",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#member:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "member?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "member",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#metadata:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "metadata: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata",
                  "canonicalReference": "@loopback/context!InjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "metadata",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#methodDescriptorOrParameterIndex:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "methodDescriptorOrParameterIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<ValueType> | number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "methodDescriptorOrParameterIndex",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#resolve:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "resolve?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolverFunction",
                  "canonicalReference": "@loopback/context!ResolverFunction:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resolve",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Injection#target:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "target",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!InjectionElement:interface",
          "docComment": "/**\n * Wrapper for injections tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface InjectionElement "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectionElement",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InjectionElement#type:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "type: "
                },
                {
                  "kind": "Content",
                  "text": "'injection'"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InjectionElement#value:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "value: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!InjectionMetadata:interface",
          "docComment": "/**\n * An object to provide metadata for `@inject`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface InjectionMetadata extends "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions",
              "canonicalReference": "@loopback/context!ResolutionOptions:interface"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectionMetadata",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/context!InjectionMetadata:index(1)",
              "docComment": "/**\n * Other attributes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[attribute: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "attribute",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InjectionMetadata#bindingComparator:member",
              "docComment": "/**\n * Optional comparator for matched bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "bindingComparator?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator",
                  "canonicalReference": "@loopback/context!BindingComparator:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingComparator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InjectionMetadata#decorator:member",
              "docComment": "/**\n * Name of the decorator function, such as `@inject` or `@inject.setter`. It's usually set by the decorator implementation.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "decorator?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "decorator",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!inspectInjections:function(1)",
          "docComment": "/**\n * Inspect injections for a binding created with `toClass` or `toProvider`\n *\n * @param binding - Binding object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function inspectInjections(binding: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "JSONObject",
              "canonicalReference": "@loopback/context!JSONObject:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "binding",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "name": "inspectInjections"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!inspectTargetType:function(1)",
          "docComment": "/**\n * Inspect the target type for the injection to find out the corresponding JavaScript type\n *\n * @param injection - Injection information\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function inspectTargetType(injection: "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection",
              "canonicalReference": "@loopback/context!Injection:interface"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Function",
              "canonicalReference": "!Function:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 6,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "injection",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "name": "inspectTargetType"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!instantiateClass:function(1)",
          "docComment": "/**\n * Create an instance of a class which constructor has arguments decorated with `@inject`.\n *\n * The function returns a class when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param ctor - The class constructor to call.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function instantiateClass<T>(ctor: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ", ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": ", nonInjectedArgs?: "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "ctor",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "instantiateClass"
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!INTERCEPT_CLASS_KEY:var",
          "docComment": "/**\n * Metadata key for method-level interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "INTERCEPT_CLASS_KEY: "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor",
              "canonicalReference": "@loopback/metadata!MetadataAccessor:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey",
              "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": ">[], "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "INTERCEPT_CLASS_KEY",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 9
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/context!INTERCEPT_METHOD_KEY:var",
          "docComment": "/**\n * Metadata key for method-level interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "INTERCEPT_METHOD_KEY: "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor",
              "canonicalReference": "@loopback/metadata!MetadataAccessor:class"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey",
              "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": ">[], "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator",
              "canonicalReference": "!MethodDecorator:type"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "INTERCEPT_METHOD_KEY",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 9
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!intercept:function(1)",
          "docComment": "/**\n * Decorator function `@intercept` for classes/methods to apply interceptors. It can be applied on a class and its public methods. Multiple occurrences of `@intercept` are allowed on the same target class or method. The decorator takes a list of `interceptor` functions or binding keys.\n *\n * @param interceptorOrKeys - One or more interceptors or binding keys that are resolved to be interceptors\n *\n * @example\n * ```ts\n * @intercept(log, metrics)\n * class MyController {\n *   @intercept('caching-interceptor')\n *   @intercept('name-validation-interceptor')\n *   greet(name: string) {\n *     return `Hello, ${name}`;\n *   }\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function intercept(...interceptorOrKeys: "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey",
              "canonicalReference": "@loopback/context!InterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "(target: any, method?: string | undefined, methodDescriptor?: "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor",
              "canonicalReference": "!TypedPropertyDescriptor:interface"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 4,
            "endIndex": 7
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "interceptorOrKeys",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "intercept"
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!InterceptedInvocationContext:class",
          "docComment": "/**\n * A specialized InvocationContext for interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class InterceptedInvocationContext extends "
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InterceptedInvocationContext",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InterceptedInvocationContext#getGlobalInterceptorBindingKeys:member(1)",
              "docComment": "/**\n * Discover all binding keys for global interceptors (tagged by ContextTags.GLOBAL_INTERCEPTOR)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getGlobalInterceptorBindingKeys(): "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "getGlobalInterceptorBindingKeys"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InterceptedInvocationContext#loadInterceptors:member(1)",
              "docComment": "/**\n * Load all interceptors for the given invocation context. It adds interceptors from possibly three sources: 1. method level `@intercept` 2. class level `@intercept` 3. global interceptors discovered in the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "loadInterceptors(): "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey",
                  "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "InvocationContext",
                  "canonicalReference": "@loopback/context!InvocationContext:class"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "loadInterceptors"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!InterceptionHandler:class",
          "docComment": "/**\n * A proxy handler that applies interceptors\n *\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class InterceptionHandler<T extends "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": "> implements "
            },
            {
              "kind": "Reference",
              "text": "ProxyHandler",
              "canonicalReference": "!ProxyHandler:interface"
            },
            {
              "kind": "Content",
              "text": "<T> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "InterceptionHandler",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!InterceptionHandler:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `InterceptionHandler` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(context?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InterceptionHandler#get:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get(target: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", propertyName: "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyKey",
                  "canonicalReference": "!PropertyKey:type"
                },
                {
                  "kind": "Content",
                  "text": ", receiver: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "receiver",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "get"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!Interceptor:interface",
          "docComment": "/**\n * Interceptor function to intercept method invocations\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Interceptor extends "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor",
              "canonicalReference": "@loopback/context!GenericInterceptor:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "Interceptor",
          "members": [],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!InterceptorOrKey:type",
          "docComment": "/**\n * Interceptor function or binding key that can be used as parameters for `@intercept()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type InterceptorOrKey = "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey",
              "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InterceptorOrKey",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 5
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!InvocationArgs:type",
          "docComment": "/**\n * Array of arguments for a method invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type InvocationArgs = "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationArgs",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!InvocationContext:class",
          "docComment": "/**\n * InvocationContext represents the context to invoke interceptors for a method. The context can be used to access metadata about the invocation as well as other dependencies.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class InvocationContext extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationContext",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!InvocationContext:constructor(1)",
              "docComment": "/**\n * Construct a new instance of `InvocationContext`\n *\n * @param parent - Parent context, such as the RequestContext\n *\n * @param target - Target class (for static methods) or prototype/object (for instance methods)\n *\n * @param methodName - Method name\n *\n * @param args - An array of arguments\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(parent: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ", methodName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", args: "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationArgs",
                  "canonicalReference": "@loopback/context!InvocationArgs:type"
                },
                {
                  "kind": "Content",
                  "text": ", source?: "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationSource",
                  "canonicalReference": "@loopback/context!InvocationSource:interface"
                },
                {
                  "kind": "Content",
                  "text": "<unknown> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "args",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "source",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 11
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#args:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly args: "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationArgs",
                  "canonicalReference": "@loopback/context!InvocationArgs:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "args",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InvocationContext#assertMethodExists:member(1)",
              "docComment": "/**\n * Assert the method exists on the target. An error will be thrown if otherwise.\n *\n * @param context - Invocation context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "assertMethodExists(): "
                },
                {
                  "kind": "Reference",
                  "text": "Record",
                  "canonicalReference": "!Record:type"
                },
                {
                  "kind": "Content",
                  "text": "<string, "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "assertMethodExists"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#description:member",
              "docComment": "/**\n * Description of the invocation\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get description(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "description",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InvocationContext#invokeTargetMethod:member(1)",
              "docComment": "/**\n * Invoke the target method with the given context\n *\n * @param context - Invocation context\n *\n * @param options - Options for the invocation\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "invokeTargetMethod(options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationOptions",
                  "canonicalReference": "@loopback/context!InvocationOptions:type"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "invokeTargetMethod"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#methodName:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly methodName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "methodName",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#source:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly source?: "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationSource",
                  "canonicalReference": "@loopback/context!InvocationSource:interface"
                },
                {
                  "kind": "Content",
                  "text": "<unknown> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "source",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#target:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly target: "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "target",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#targetClass:member",
              "docComment": "/**\n * The target class, such as `OrderController`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get targetClass(): "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "targetClass",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!InvocationContext#targetName:member",
              "docComment": "/**\n * The target name, such as `OrderController.prototype.cancelOrder`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get targetName(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "targetName",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!InvocationContext#toString:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toString(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toString"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!InvocationOptions:type",
          "docComment": "/**\n * Options to control invocations\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type InvocationOptions = "
            },
            {
              "kind": "Content",
              "text": "{\n    skipParameterInjection?: boolean;\n    skipInterceptors?: boolean;\n    source?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationSource",
              "canonicalReference": "@loopback/context!InvocationSource:interface"
            },
            {
              "kind": "Content",
              "text": ";\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationOptions",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!InvocationResult:type",
          "docComment": "/**\n * Return value for a method invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type InvocationResult = "
            },
            {
              "kind": "Content",
              "text": "any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationResult",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!InvocationSource:interface",
          "docComment": "/**\n * An interface to represent the caller of the invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface InvocationSource<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "InvocationSource",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InvocationSource#type:member",
              "docComment": "/**\n * Type of the invoker, such as `proxy` and `route`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly type: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!InvocationSource#value:member",
              "docComment": "/**\n * Metadata for the source, such as `ResolutionSession`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly value: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!invokeInterceptors:function(1)",
          "docComment": "/**\n * Invoke a chain of interceptors with the context\n *\n * @param context - Context object\n *\n * @param interceptors - An array of interceptor functions or binding keys\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function invokeInterceptors<C extends "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", T = "
            },
            {
              "kind": "Reference",
              "text": "InvocationResult",
              "canonicalReference": "@loopback/context!InvocationResult:type"
            },
            {
              "kind": "Content",
              "text": ">(context: "
            },
            {
              "kind": "Content",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ", interceptors: "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey",
              "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "<C>[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T | undefined>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 13,
            "endIndex": 15
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            },
            {
              "parameterName": "interceptors",
              "parameterTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "defaultTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            },
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              }
            }
          ],
          "name": "invokeInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!invokeMethod:function(1)",
          "docComment": "/**\n * Invoke a method using dependency injection. Interceptors are invoked as part of the invocation.\n *\n * @param target - Target of the method, it will be the class for a static method, and instance or class prototype for a prototype method\n *\n * @param method - Name of the method\n *\n * @param ctx - Context object\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n *\n * @param options - Options for the invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function invokeMethod(target: "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", method: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", nonInjectedArgs?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs",
              "canonicalReference": "@loopback/context!InvocationArgs:type"
            },
            {
              "kind": "Content",
              "text": ", options?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationOptions",
              "canonicalReference": "@loopback/context!InvocationOptions:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult",
              "canonicalReference": "@loopback/context!InvocationResult:type"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 15
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "invokeMethod"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!invokeMethodWithInterceptors:function(1)",
          "docComment": "/**\n * Invoke a method with the given context\n *\n * @param context - Context object\n *\n * @param target - Target class (for static methods) or object (for instance methods)\n *\n * @param methodName - Method name\n *\n * @param args - An array of argument values\n *\n * @param options - Options for the invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function invokeMethodWithInterceptors(context: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", target: "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", methodName: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", args: "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs",
              "canonicalReference": "@loopback/context!InvocationArgs:type"
            },
            {
              "kind": "Content",
              "text": ", options?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationOptions",
              "canonicalReference": "@loopback/context!InvocationOptions:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult",
              "canonicalReference": "@loopback/context!InvocationResult:type"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 15
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "methodName",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "args",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "invokeMethodWithInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!isBindingAddress:function(1)",
          "docComment": "/**\n * Type guard for binding address\n *\n * @param bindingSelector - Binding key or filter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isBindingAddress(bindingSelector: "
            },
            {
              "kind": "Reference",
              "text": "BindingSelector",
              "canonicalReference": "@loopback/context!BindingSelector:type"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "bindingSelector",
              "canonicalReference": "@loopback/context!~bindingSelector"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress",
              "canonicalReference": "@loopback/context!BindingAddress:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "bindingSelector",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "isBindingAddress"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!isBindingTagFilter:function(1)",
          "docComment": "/**\n * Type guard for BindingTagFilter\n *\n * @param filter - A BindingFilter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isBindingTagFilter(filter?: "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter",
              "canonicalReference": "@loopback/context!BindingFilter:interface"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "filter",
              "canonicalReference": "@loopback/context!~filter"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "BindingTagFilter",
              "canonicalReference": "@loopback/context!BindingTagFilter:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "filter",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "isBindingTagFilter"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!isPromiseLike:function(1)",
          "docComment": "/**\n * Check whether a value is a Promise-like instance. Recognizes both native promises and third-party promise libraries.\n *\n * @param value - The value to check.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isPromiseLike<T>(value: "
            },
            {
              "kind": "Content",
              "text": "T | "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike",
              "canonicalReference": "!PromiseLike:interface"
            },
            {
              "kind": "Content",
              "text": "<T> | undefined"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "value",
              "canonicalReference": "@loopback/context!~value"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike",
              "canonicalReference": "!PromiseLike:interface"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 5,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "value",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "isPromiseLike"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!isProviderClass:function(1)",
          "docComment": "/**\n * Check if a class implements `Provider` interface\n *\n * @param cls - A class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function isProviderClass(cls: "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "cls",
              "canonicalReference": "@loopback/context!~cls"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "Constructor",
              "canonicalReference": "@loopback/context!Constructor:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Provider",
              "canonicalReference": "@loopback/context!Provider:interface"
            },
            {
              "kind": "Content",
              "text": "<unknown>>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 4,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "isProviderClass"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!JSONArray:interface",
          "docComment": "/**\n * JSON array\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface JSONArray extends "
            },
            {
              "kind": "Reference",
              "text": "Array",
              "canonicalReference": "!Array:interface"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "JSONValue",
              "canonicalReference": "@loopback/context!JSONValue:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "JSONArray",
          "members": [],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!JSONObject:interface",
          "docComment": "/**\n * JSON object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface JSONObject extends "
            },
            {
              "kind": "Reference",
              "text": "Record",
              "canonicalReference": "!Record:type"
            },
            {
              "kind": "Content",
              "text": "<string, "
            },
            {
              "kind": "Reference",
              "text": "JSONValue",
              "canonicalReference": "@loopback/context!JSONValue:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "JSONObject",
          "members": [],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!JSONPrimitive:type",
          "docComment": "/**\n * JSON primitive types: - string - number - boolean - null\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type JSONPrimitive = "
            },
            {
              "kind": "Content",
              "text": "string | number | boolean | null"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "JSONPrimitive",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!JSONValue:type",
          "docComment": "/**\n * JSON values - primitive - object - array\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type JSONValue = "
            },
            {
              "kind": "Reference",
              "text": "JSONPrimitive",
              "canonicalReference": "@loopback/context!JSONPrimitive:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "JSONObject",
              "canonicalReference": "@loopback/context!JSONObject:interface"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "JSONArray",
              "canonicalReference": "@loopback/context!JSONArray:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "JSONValue",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!MapObject:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type MapObject<T> = "
            },
            {
              "kind": "Reference",
              "text": "Record",
              "canonicalReference": "!Record:type"
            },
            {
              "kind": "Content",
              "text": "<string, T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "MapObject",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!mergeInterceptors:function(1)",
          "docComment": "/**\n * Adding interceptors from the spec to the front of existing ones. Duplicate entries are eliminated from the spec side.\n *\n * For example:\n *\n * - [log] + [cache, log] => [cache, log] - [log] + [log, cache] => [log, cache] - [] + [cache, log] => [cache, log] - [cache, log] + [] => [cache, log] - [log] + [cache] => [log, cache]\n *\n * @param interceptorsFromSpec - Interceptors from `@intercept`\n *\n * @param existingInterceptors - Interceptors already applied for the method\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function mergeInterceptors(interceptorsFromSpec: "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey",
              "canonicalReference": "@loopback/context!InterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": ", existingInterceptors: "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey",
              "canonicalReference": "@loopback/context!InterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey",
              "canonicalReference": "@loopback/context!GenericInterceptorOrKey:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext",
              "canonicalReference": "@loopback/context!InvocationContext:class"
            },
            {
              "kind": "Content",
              "text": ">[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "interceptorsFromSpec",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "existingInterceptors",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 6
              }
            }
          ],
          "name": "mergeInterceptors"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!Next:type",
          "docComment": "/**\n * The `next` function that can be used to invoke next generic interceptor in the chain\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type Next = "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult",
              "canonicalReference": "@loopback/context!InvocationResult:type"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Next",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 6
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!Notification:interface",
          "docComment": "/**\n * Event data for observer notifications\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Notification extends "
            },
            {
              "kind": "Reference",
              "text": "ContextEvent",
              "canonicalReference": "@loopback/context!ContextEvent:type"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Notification",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Notification#observers:member",
              "docComment": "/**\n * A snapshot of observers when the original event is emitted\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "observers: "
                },
                {
                  "kind": "Reference",
                  "text": "Set",
                  "canonicalReference": "!Set:interface"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver",
                  "canonicalReference": "@loopback/context!ContextEventObserver:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "observers",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 3
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!Provider:interface",
          "docComment": "/**\n * Providers allow developers to compute injected values dynamically, with any dependencies required by the value getter injected automatically from the Context.\n *\n * @example\n * ```ts\n * export class DateProvider implements Provider<Date> {\n *   constructor(@inject('stringDate') private param: String){}\n *   value(): Date {\n *     return new Date(param);\n *   }\n * }\n *\n * ctx.bind('stringDate').to('2017-01-01')\n * ctx.bind('provider_key').toProvider(DateProvider);\n *\n * const value = ctx.getAsync('provider_key');\n * // value is a Date instance\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Provider<T> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "Provider",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/context!Provider#value:member(1)",
              "docComment": "/**\n * @returns The value to inject to dependents. This method can return a promise too, in which case the IoC framework will resolve this promise to obtain the value to inject.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "value(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "value"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!ProxySource:class",
          "docComment": "/**\n * Invocation source for injected proxies. It wraps a snapshot of the `ResolutionSession` that tracks the binding/injection stack.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ProxySource implements "
            },
            {
              "kind": "Reference",
              "text": "InvocationSource",
              "canonicalReference": "@loopback/context!InvocationSource:interface"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "ProxySource",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/context!ProxySource:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `ProxySource` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(value: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ProxySource#toString:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toString(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toString"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ProxySource#type:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "type: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ProxySource#value:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly value: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 1,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!removeNameAndKeyTags:function(1)",
          "docComment": "/**\n * A binding template function to delete `name` and `key` tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function removeNameAndKeyTags(binding: "
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 4,
            "endIndex": 5
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "binding",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            }
          ],
          "name": "removeNameAndKeyTags"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ResolutionAction:type",
          "docComment": "/**\n * A function to be executed with the resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ResolutionAction = "
            },
            {
              "kind": "Content",
              "text": "(session: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionAction",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ResolutionElement:type",
          "docComment": "/**\n * Binding or injection elements tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ResolutionElement = "
            },
            {
              "kind": "Reference",
              "text": "BindingElement",
              "canonicalReference": "@loopback/context!BindingElement:interface"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "InjectionElement",
              "canonicalReference": "@loopback/context!InjectionElement:interface"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionElement",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ResolutionOptions:interface",
          "docComment": "/**\n * Options for binding/dependency resolution\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ResolutionOptions "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ResolutionOptions#asProxyWithInterceptors:member",
              "docComment": "/**\n * A boolean flag to control if a proxy should be created to apply interceptors for the resolved value. It's only honored for bindings backed by a class.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "asProxyWithInterceptors?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "asProxyWithInterceptors",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ResolutionOptions#optional:member",
              "docComment": "/**\n * A boolean flag to indicate if the dependency is optional. If it's set to `true` and the binding is not bound in a context, the resolution will return `undefined` instead of throwing an error.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "optional?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "optional",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!ResolutionOptions#session:member",
              "docComment": "/**\n * A session to track bindings and injections\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "session",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ResolutionOptionsOrSession:type",
          "docComment": "/**\n * Resolution options or session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ResolutionOptionsOrSession = "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions",
              "canonicalReference": "@loopback/context!ResolutionOptions:interface"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionOptionsOrSession",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/context!ResolutionSession:class",
          "docComment": "/**\n * Object to keep states for a session to resolve bindings and their dependencies within a context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ResolutionSession "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionSession",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ResolutionSession#bindingStack:member",
              "docComment": "/**\n * Getter for bindings on the stack\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get bindingStack(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingStack",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ResolutionSession#currentBinding:member",
              "docComment": "/**\n * Getter for the current binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get currentBinding(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "currentBinding",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ResolutionSession#currentInjection:member",
              "docComment": "/**\n * Getter for the current injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get currentInjection(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "currentInjection",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession.describeInjection:member(1)",
              "docComment": "/**\n * Describe the injection for debugging purpose\n *\n * @param injection - Injection object\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static describeInjection(injection: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "{\n        targetName: string;\n        bindingSelector: import(\"./binding-filter\")."
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector",
                  "canonicalReference": "@loopback/context!BindingSelector:type"
                },
                {
                  "kind": "Content",
                  "text": "<any>;\n        metadata: import(\"./inject\")."
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata",
                  "canonicalReference": "@loopback/context!InjectionMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": ";\n    }"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                }
              ],
              "name": "describeInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession.fork:member(1)",
              "docComment": "/**\n * Fork the current session so that a new one with the same stack can be used in parallel or future resolutions, such as multiple method arguments, multiple properties, or a getter function\n *\n * @param session - The current session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static fork(session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "fork"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#getBindingPath:member(1)",
              "docComment": "/**\n * Get the binding path as `bindingA --> bindingB --> bindingC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getBindingPath(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "getBindingPath"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#getInjectionPath:member(1)",
              "docComment": "/**\n * Get the injection path as `injectionA --> injectionB --> injectionC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getInjectionPath(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "getInjectionPath"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#getResolutionPath:member(1)",
              "docComment": "/**\n * Get the resolution path including bindings and injections, for example: `bindingA --> @ClassA[0] --> bindingB --> @ClassB.prototype.prop1 --> bindingC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getResolutionPath(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "getResolutionPath"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ResolutionSession#injectionStack:member",
              "docComment": "/**\n * Getter for injections on the stack\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "get injectionStack(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "injectionStack",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#popBinding:member(1)",
              "docComment": "/**\n * Exit the resolution of a binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "popBinding(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "popBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#popInjection:member(1)",
              "docComment": "/**\n * Pop the last injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "popInjection(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any>>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "popInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#pushBinding:member(1)",
              "docComment": "/**\n * Enter the resolution of the given binding. If\n *\n * @param binding - Binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "pushBinding(binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                }
              ],
              "name": "pushBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#pushInjection:member(1)",
              "docComment": "/**\n * Push the injection onto the session\n *\n * @param injection - Injection The current injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "pushInjection(injection: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                }
              ],
              "name": "pushInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession.runWithBinding:member(1)",
              "docComment": "/**\n * Run the given action with the given binding and session\n *\n * @param action - A function to do some work with the resolution session\n *\n * @param binding - The current binding\n *\n * @param session - The current resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static runWithBinding(action: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionAction",
                  "canonicalReference": "@loopback/context!ResolutionAction:type"
                },
                {
                  "kind": "Content",
                  "text": ", binding: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding",
                  "canonicalReference": "@loopback/context!Binding:class"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "action",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "runWithBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession.runWithInjection:member(1)",
              "docComment": "/**\n * Run the given action with the given injection and session\n *\n * @param action - A function to do some work with the resolution session\n *\n * @param binding - The current injection\n *\n * @param session - The current resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static runWithInjection(action: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionAction",
                  "canonicalReference": "@loopback/context!ResolutionAction:type"
                },
                {
                  "kind": "Content",
                  "text": ", injection: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", session?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "action",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "runWithInjection"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/context!ResolutionSession#stack:member",
              "docComment": "/**\n * A stack of bindings for the current resolution session. It's used to track the path of dependency resolution and detect circular dependencies.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly stack: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionElement",
                  "canonicalReference": "@loopback/context!ResolutionElement:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "stack",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/context!ResolutionSession#toString:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toString(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toString"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!resolveInjectedArguments:function(1)",
          "docComment": "/**\n * Given a function with arguments decorated with `@inject`, return the list of arguments resolved using the values bound in `ctx`.\n *\n * The function returns an argument array when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param target - The class for constructor injection or prototype for method injection\n *\n * @param method - The method name. If set to '', the constructor will be used.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function resolveInjectedArguments(target: "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", method: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": ", nonInjectedArgs?: "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": "[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 15
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "resolveInjectedArguments"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!resolveInjectedProperties:function(1)",
          "docComment": "/**\n * Given a class with properties decorated with `@inject`, return the map of properties resolved using the values bound in `ctx`.\n *\n * The function returns an argument array when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param constructor - The class for which properties should be resolved.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function resolveInjectedProperties(constructor: "
            },
            {
              "kind": "Reference",
              "text": "Function",
              "canonicalReference": "!Function:interface"
            },
            {
              "kind": "Content",
              "text": ", ctx: "
            },
            {
              "kind": "Reference",
              "text": "Context",
              "canonicalReference": "@loopback/context!Context:class"
            },
            {
              "kind": "Content",
              "text": ", session?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession",
              "canonicalReference": "@loopback/context!ResolutionSession:class"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "MapObject",
              "canonicalReference": "@loopback/context!MapObject:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue",
              "canonicalReference": "@loopback/context!BoundValue:type"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 13
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "constructor",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "resolveInjectedProperties"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!resolveList:function(1)",
          "docComment": "/**\n * Resolve entries of an array into a new array with the same indexes. If one or more entries of the source array are resolved to a promise by the `resolver` function, this method returns a promise which will be resolved to the new array with fully resolved entries.\n *\n * @param list - The original array containing the source entries\n *\n * @param resolver - A function resolves an entry to a value or promise. It will be invoked with the property value, the property index, and the source array.\n *\n * @example\n *\n * - Example 1: resolve all entries synchronously\n * ```ts\n * const result = resolveList(['a', 'b'], v => v.toUpperCase());\n * ```\n *\n * The `result` will be `['A', 'B']`.\n *\n * - Example 2: resolve one or more entries asynchronously\n * ```ts\n * const result = resolveList(['a', 'b'], v =>\n *   Promise.resolve(v.toUpperCase()),\n * );\n * ```\n *\n * The `result` will be a promise of `['A', 'B']`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function resolveList<T, V>(list: "
            },
            {
              "kind": "Content",
              "text": "T[]"
            },
            {
              "kind": "Content",
              "text": ", resolver: "
            },
            {
              "kind": "Content",
              "text": "(val: T, index: number, list: T[]) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "list",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 6
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveList"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!resolveMap:function(1)",
          "docComment": "/**\n * Resolve entries of an object into a new object with the same keys. If one or more entries of the source object are resolved to a promise by the `resolver` function, this method returns a promise which will be resolved to the new object with fully resolved entries.\n *\n * @param map - The original object containing the source entries\n *\n * @param resolver - A function resolves an entry to a value or promise. It will be invoked with the property value, the property name, and the source object.\n *\n * @example\n *\n * - Example 1: resolve all entries synchronously\n * ```ts\n * const result = resolveMap({a: 'x', b: 'y'}, v => v.toUpperCase());\n * ```\n *\n * The `result` will be `{a: 'X', b: 'Y'}`.\n *\n * - Example 2: resolve one or more entries asynchronously\n * ```ts\n * const result = resolveMap({a: 'x', b: 'y'}, v =>\n *   Promise.resolve(v.toUpperCase()),\n * );\n * ```\n *\n * The `result` will be a promise of `{a: 'X', b: 'Y'}`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function resolveMap<T, V>(map: "
            },
            {
              "kind": "Reference",
              "text": "MapObject",
              "canonicalReference": "@loopback/context!MapObject:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ", resolver: "
            },
            {
              "kind": "Content",
              "text": "(val: T, key: string, map: "
            },
            {
              "kind": "Reference",
              "text": "MapObject",
              "canonicalReference": "@loopback/context!MapObject:type"
            },
            {
              "kind": "Content",
              "text": "<T>) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "MapObject",
              "canonicalReference": "@loopback/context!MapObject:type"
            },
            {
              "kind": "Content",
              "text": "<V>>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 14
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "map",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 9
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveMap"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!ResolverFunction:interface",
          "docComment": "/**\n * A function to provide resolution of injected values\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface ResolverFunction "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolverFunction",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "@loopback/context!ResolverFunction:call(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "(ctx: "
                },
                {
                  "kind": "Reference",
                  "text": "Context",
                  "canonicalReference": "@loopback/context!Context:class"
                },
                {
                  "kind": "Content",
                  "text": ", injection: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection",
                  "canonicalReference": "@loopback/context!Injection:interface"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", session: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession",
                  "canonicalReference": "@loopback/context!ResolutionSession:class"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise",
                  "canonicalReference": "@loopback/context!ValueOrPromise:type"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue",
                  "canonicalReference": "@loopback/context!BoundValue:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 14
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!resolveUntil:function(1)",
          "docComment": "/**\n * Resolve an iterator of source values into a result until the evaluator returns `true`\n *\n * @param source - The iterator of source values\n *\n * @param resolver - The resolve function that maps the source value to a result\n *\n * @param evaluator - The evaluate function that decides when to stop\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function resolveUntil<T, V>(source: "
            },
            {
              "kind": "Reference",
              "text": "Iterator",
              "canonicalReference": "!Iterator:interface"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ", resolver: "
            },
            {
              "kind": "Content",
              "text": "(sourceVal: T) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V | undefined>"
            },
            {
              "kind": "Content",
              "text": ", evaluator: "
            },
            {
              "kind": "Content",
              "text": "(sourceVal: T, targetVal: V | undefined) => boolean"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V | undefined>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "source",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 7
              }
            },
            {
              "parameterName": "evaluator",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveUntil"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!Setter:type",
          "docComment": "/**\n * The function injected by `@inject.setter(bindingKey)`. It sets the underlying binding to a constant value using `binding.to(value)`.\n *\n * @param value - The value for the underlying binding\n *\n * @example\n * ```ts\n * setterFn('my-value');\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type Setter<T> = "
            },
            {
              "kind": "Content",
              "text": "(value: T) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Setter",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!sortBindingsByPhase:function(1)",
          "docComment": "/**\n * Sort bindings by phase names denoted by a tag and the predefined order\n *\n * @param bindings - An array of bindings\n *\n * @param phaseTagName - Tag name for phase, for example, we can use the value `'a'` of tag `order` as the phase name for `binding.tag({order: 'a'})`.\n *\n * @param orderOfPhases - An array of phase names as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function sortBindingsByPhase<T = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "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": "<T>>[]"
            },
            {
              "kind": "Content",
              "text": ", phaseTagName?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", orderOfPhases?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Readonly",
              "canonicalReference": "!Readonly:type"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding",
              "canonicalReference": "@loopback/context!Binding:class"
            },
            {
              "kind": "Content",
              "text": "<T>>[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 12,
            "endIndex": 16
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "bindings",
              "parameterTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              }
            },
            {
              "parameterName": "phaseTagName",
              "parameterTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            },
            {
              "parameterName": "orderOfPhases",
              "parameterTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "name": "sortBindingsByPhase"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!Subscription:interface",
          "docComment": "/**\n * Subscription of context events. It's modeled after https://github.com/tc39/proposal-observable.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface Subscription "
            }
          ],
          "releaseTag": "Public",
          "name": "Subscription",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/context!Subscription#closed:member",
              "docComment": "/**\n * Is the subscription closed?\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "closed: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "closed",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/context!Subscription#unsubscribe:member(1)",
              "docComment": "/**\n * unsubscribe\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "unsubscribe(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "unsubscribe"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!TagMap:type",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type TagMap = "
            },
            {
              "kind": "Reference",
              "text": "MapObject",
              "canonicalReference": "@loopback/context!MapObject:type"
            },
            {
              "kind": "Content",
              "text": "<any>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "TagMap",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/context!TagValueMatcher:interface",
          "docComment": "/**\n * A function to check if a given tag value is matched for `filterByTag`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface TagValueMatcher "
            }
          ],
          "releaseTag": "Public",
          "name": "TagValueMatcher",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "@loopback/context!TagValueMatcher:call(1)",
              "docComment": "/**\n * Check if the given tag value matches the search criteria\n *\n * @param tagValue - Tag value from the binding\n *\n * @param tagName - Tag name\n *\n * @param tagMap - Tag map from the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "(tagValue: "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ", tagName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", tagMap: "
                },
                {
                  "kind": "Reference",
                  "text": "MapObject",
                  "canonicalReference": "@loopback/context!MapObject:type"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "tagValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "tagName",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "tagMap",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!transformValueOrPromise:function(1)",
          "docComment": "/**\n * Transform a value or promise with a function that produces a new value or promise\n *\n * @param valueOrPromise - The value or promise\n *\n * @param transformer - A function that maps the source value to a value or promise\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function transformValueOrPromise<T, V>(valueOrPromise: "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ", transformer: "
            },
            {
              "kind": "Content",
              "text": "(val: T) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<V>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "valueOrPromise",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "parameterName": "transformer",
              "parameterTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 7
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "transformValueOrPromise"
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/context!tryWithFinally:function(1)",
          "docComment": "/**\n * Try to run an action that returns a promise or a value\n *\n * @param action - A function that returns a promise or a value\n *\n * @param finalAction - A function to be called once the action is fulfilled or rejected (synchronously or asynchronously)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function tryWithFinally<T>(action: "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ", finalAction: "
            },
            {
              "kind": "Content",
              "text": "() => void"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise",
              "canonicalReference": "@loopback/context!ValueOrPromise:type"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "action",
              "parameterTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 4
              }
            },
            {
              "parameterName": "finalAction",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "tryWithFinally"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!TypeNamespaceMapping:type",
          "docComment": "/**\n * Mapping artifact types to binding key namespaces (prefixes).\n *\n * @example\n * ```ts\n * {\n *   repository: 'repositories'\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type TypeNamespaceMapping = "
            },
            {
              "kind": "Content",
              "text": "{\n    [name: string]: string;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "TypeNamespaceMapping",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/context!ValueOrPromise:type",
          "docComment": "/**\n * Representing a value or promise. This type is used to represent results of synchronous/asynchronous resolution of values.\n *\n * Note that we are using PromiseLike instead of native Promise to describe the asynchronous variant. This allows producers of async values to use any Promise implementation (e.g. Bluebird) instead of native Promises provided by JavaScript runtime.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type ValueOrPromise<T> = "
            },
            {
              "kind": "Content",
              "text": "T | "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike",
              "canonicalReference": "!PromiseLike:interface"
            },
            {
              "kind": "Content",
              "text": "<T>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ValueOrPromise",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 4
          }
        }
      ]
    }
  ]
}
