import type { DefinitionContext, RunningContext } from './context/index.js';
import { Buildable } from './buildable.js';
import { Maybe } from './utils.js';
export type Tag = {
    name: string;
} & Record<string, unknown>;
export declare abstract class Service extends Buildable {
    protected readonly scope: Maybe<string>;
    protected readonly tags: Tag[];
    protected readonly calls: {
        method: Buildable;
        params: Buildable[];
    }[];
    constructor(context: DefinitionContext, scope: Maybe<string>, tags: Tag[], calls: {
        method: Buildable;
        params: Buildable[];
    }[]);
    protected abstract instantiate(context: RunningContext): Promise<unknown>;
    protected assemble(context: RunningContext): Promise<unknown>;
    getScope(): Maybe<string>;
    getTagsByName(name: string): Tag[];
}
//# sourceMappingURL=service.d.ts.map