import { DataServiceAdapter } from './interface-registry';
import { DataService, JsonResultsAdapter } from './data-service';
import { MetadataStore, DataProperty } from './entity-metadata';
import { EntityManager } from './entity-manager';
import { MergeStrategy } from './query-options';
import { EntityQuery } from './entity-query';
/**
For use by breeze plugin authors only. The class is for use in building a [[IDataServiceAdapter]] implementation.
@adapter (see [[IDataServiceAdapter]])
@hidden
*/
export interface MergeOptions {
    mergeStrategy: MergeStrategy;
    includeDeleted?: boolean;
    noTracking?: boolean;
}
/** @hidden */
export interface MappingContextConfig {
    dataService: DataService;
    query?: EntityQuery | string;
    entityManager: EntityManager;
    mergeOptions: MergeOptions;
}
/**
For use by breeze plugin authors only. The class is for use in building a [[IDataServiceAdapter]] implementation.
@adapter (see [[IDataServiceAdapter]])
@hidden
*/
export declare class MappingContext {
    /** @hidden @internal */
    _$typeName: string;
    rawValueFn: typeof DataProperty.getRawValueFromServer;
    dataService: DataService;
    query: EntityQuery | string;
    entityManager: EntityManager;
    mergeOptions: MergeOptions;
    adapter: DataServiceAdapter;
    refMap: Record<string, any>;
    deferredFns: Function[];
    jsonResultsAdapter: JsonResultsAdapter;
    metadataStore: MetadataStore;
    constructor(config: MappingContextConfig);
    getUrl(): string;
    visitAndMerge(nodes: any[], nodeContext: any): any;
    processDeferred(): void;
}
