import { DefinitionContext } from './context/index.js';
import { Tag } from './service.js';
import { Maybe } from './utils.js';
export type Call<T> = {
    method: T;
    params: T[];
};
export declare abstract class Processor<T> {
    protected abstract glob(pattern: string): string[];
    protected abstract getFullPath(baseFile: string, relative: string, shouldExist?: boolean): string;
    protected abstract readContents(path: string): string;
    protected abstract serialise(path: string, data: unknown): string;
    protected abstract deserialise(path: string, data: string): unknown;
    protected abstract addExtend(path: string): void;
    protected abstract addParameter(id: string, parameter: T): void;
    protected abstract addAlias(id: string, alias: T): void;
    protected abstract addService(id: string, service: T): void;
    fromPaths(pattern: string): void;
    fromPath(path: string): void;
    fromContent(path: string, content: string): void;
    fromData(path: string, content: unknown): void;
    protected abstract processEnvStrValue(context: DefinitionContext, name: string, fallback: Maybe<string>): T;
    protected abstract processEnvBoolValue(context: DefinitionContext, name: string, fallback: Maybe<string>): T;
    protected abstract processEnvNumValue(context: DefinitionContext, name: string, fallback: Maybe<string>): T;
    protected abstract processEvalValue(context: DefinitionContext, code: string): T;
    protected abstract processLiteralValue(context: DefinitionContext, value: unknown): T;
    protected abstract processParameterValue(context: DefinitionContext, id: string): T;
    protected abstract processServiceValue(context: DefinitionContext, id: string): T;
    protected abstract processSymbolValue(context: DefinitionContext, path: string, name: Maybe<string>): T;
    protected abstract processTagListValue(context: DefinitionContext, name: string): T;
    protected abstract processTagObjectValue(context: DefinitionContext, name: string): T;
    protected parseValue(context: DefinitionContext, value: unknown): T;
    protected abstract processAlias(context: DefinitionContext, aliased: string): T;
    protected parseAlias(context: DefinitionContext, value: unknown): T;
    protected abstract processConstructorService(context: DefinitionContext, symbol: T, args: T[], scope: Maybe<string>, tags: Tag[], calls: Call<T>[]): T;
    protected abstract processFactoryService(context: DefinitionContext, symbol: T, factory: T, args: T[], scope: Maybe<string>, tags: Tag[], calls: Call<T>[]): T;
    protected abstract processPropertyService(context: DefinitionContext, symbol: T, property: T, scope: Maybe<string>, tags: Tag[], calls: Call<T>[]): T;
    private parseTag;
    private parseCall;
    protected parseService(context: DefinitionContext, value: unknown): T;
}
//# sourceMappingURL=processor.d.ts.map