import { ServiceRecordBuilder, ExtractDependency, RegistrationVisitor } from "./interfaces"; import { ActivationType } from "../interfaces"; export class RegistrationBuilder { private _activationType: ActivationType = "call"; private _overrides: { [m in keyof S]?: (...args: any) => void } | undefined; override(name: K, builder: S[K], raw: true): this; override(name: K, builder: (t: ServiceRecordBuilder) => void): this; override(name: S[K] extends ExtractDependency ? K : never, value: V): this; override(name: K, builder: S[K] | ((t: ServiceRecordBuilder) => void), raw: boolean = false) { if (!this._overrides) this._overrides = {}; if (raw) { } else if (builder instanceof Function) { } else { } return this; } activate(activation: ActivationType) { this._activationType = activation; return this; } inject(member: T[M] extends (...params: ExtractDependency) => any ? M : never, ...params: P) { return this; } visit(visitor: RegistrationVisitor) { } }