import { ILogger } from '../logger';
import { StoreService } from '../store';
import { ExportOptions, MeshFlowJobExport, TimelineType, TransitionType, ExportFields } from '../../types/exporter';
import { ProviderClient, ProviderTransaction } from '../../types/provider';
import { StringStringType, Symbols } from '../../types/serializer';
declare class ExporterService {
    appId: string;
    logger: ILogger;
    store: StoreService<ProviderClient, ProviderTransaction>;
    symbols: Promise<Symbols> | Symbols;
    private static symbols;
    constructor(appId: string, store: StoreService<ProviderClient, ProviderTransaction>, logger: ILogger);
    /**
     * Convert the job hash from its compiles format into a MeshFlowJobExport object with
     * facets that describe the workflow in terms relevant to narrative storytelling.
     */
    export(jobId: string, options?: ExportOptions): Promise<MeshFlowJobExport>;
    /**
     * Inflates the job data from Redis into a MeshFlowJobExport object
     * @param jobHash - the job data from Redis
     * @param dependencyList - the list of dependencies for the job
     * @returns - the inflated job data
     */
    inflate(jobHash: StringStringType, options: ExportOptions): MeshFlowJobExport;
    resolveValue(raw: string, withValues: boolean): Record<string, any> | string | number | null;
    /**
     * Inflates the key from Redis, 3-character symbol
     * into a human-readable JSON path, reflecting the
     * tree-like structure of the unidimensional Hash
     * @private
     */
    inflateKey(key: string): string;
    filterFields(fullObject: MeshFlowJobExport, block?: ExportFields[], allow?: ExportFields[]): Partial<MeshFlowJobExport>;
    inflateTransition(match: RegExpMatchArray, value: string, transitionsObject: Record<string, TransitionType>): void;
    sortEntriesByCreated(obj: {
        [key: string]: TransitionType;
    }): TransitionType[];
    /**
     * marker names are overloaded with details like sequence, type, etc
     */
    keyToObject(key: string): {
        index: number;
        dimension?: string;
        secondary?: number;
    };
    /**
     * idem list has a complicated sort order based on indexes and dimensions
     */
    sortParts(parts: TimelineType[]): TimelineType[];
}
export { ExporterService };
