///
import { Binding, BindingScope, Context } from '@loopback/core';
import { Request } from '@loopback/rest';
/**
* Log function interface
*/
export type Logger = typeof console.log;
/**
* Log the given resolution context/binding
* @param currentCtx - Current context object
* @param binding - Current binding
* @param logger - An optional log function
*/
export declare function logContexts(currentCtx: Context, binding: Binding, logger?: Logger): void;
/**
* Log the given context/binding
* @param type - Context type
* @param ctx - Context object
* @param binding - Current binding
* @param logger - An optional log function
*/
export declare function logContext(type: string, ctx: Context | undefined, binding: Binding, logger?: Logger): void;
/**
* Log the given HTTP request
* @param request HTTP request object
* @param logger An optional log function
*/
export declare function logRequest(request: Request, logger?: Logger): void;
export declare function log(message: string, ...args: unknown[]): void;
/**
* Set binding scope based on the `BINDING_SCOPE` environment variable. This is
* purely used for the purpose of demonstration to switch between two scopes. It
* is not recommended for typical applications, which should determine the binding
* scope based on the state requirement.
*
* @param - Name of the binding
* @param - Default binding scope
*/
export declare function bindingScope(name: string, defaultScope?: BindingScope): BindingScope;
export declare function count(ctx: Context, name: string): Promise;