import Ajv from 'ajv';
import { Container } from 'inversify';
import { Engine } from './engine.js';
import { ActionClass, PipeClass } from './model/index.js';
import { InspectionClass } from './model/inspection.js';
import { JsonSchema } from './schema.js';
export interface ExtensionSpec {
    name: string;
    version: string;
    title: string;
    description: string;
    category: 'extension' | 'connector';
    modules: string[];
    entrypoint?: string;
    tags: string[];
    private: boolean;
}
export interface ExtensionManifest {
    name: string;
    title: string;
    description: string;
    latestVersion: string;
    versions: string[];
    tags: string[];
    private: boolean;
    category?: 'extension' | 'connector';
}
export interface ExtensionVersion {
    name: string;
    version: string;
}
export declare class Extension {
    dir: string;
    spec: ExtensionSpec;
    static load(dir: string): Promise<Extension>;
    actionClasses: ActionClass[];
    pipeClasses: PipeClass[];
    inspectionClasses: InspectionClass[];
    protected _container: Container | null;
    constructor(dir: string, spec: ExtensionSpec);
    isVersionWithinRange(range: string): boolean;
    init(engine: Engine): void;
    destroy(): void;
    isInitialized(): boolean;
    get container(): Container;
    protected loadModulesSync(): void;
    protected unloadModulesSync(): void;
    protected isActionClass(val: any): val is ActionClass;
    protected isPipeClass(val: any): val is PipeClass;
    protected isInspectionClass(val: any): val is InspectionClass;
    static loadExtensionSpec(dir: string): Promise<ExtensionSpec>;
    static loadPackageJson(dir: string): Promise<any>;
    static packExtensionBundle(dir: string, tarballFile: string): Promise<void>;
    static expandFilePatterns(cwd: string, patterns: string[]): Promise<string[]>;
    static expandFilePatternsSync(cwd: string, patterns: string[]): string[];
    static packageJsonSchema: JsonSchema;
    static packageJsonValidator: Ajv.ValidateFunction;
}
//# sourceMappingURL=extension.d.ts.map