import type { IArcGISContext } from "../types/IArcGISContext";
export type ProtocolResolver = (ref: string, context: IArcGISContext) => Promise<unknown>;
export interface IResolveOptions {
    resolvers?: Record<string, ProtocolResolver>;
    cache?: Map<string, unknown>;
}
/**
 * Resolves $ref placeholders in objects so downstream functions can work with concrete data.
 * This keeps objects portable (they can point at remote entities) while consumers get a fully materialized object.
 * Note: This was designed for the Layout system, and the default resolvers reflect that,
 * but the function is generic and can be used to resolve any references in any object,
 * as long as appropriate resolvers are provided for the protocols in use.
 */
export declare function resolve<T>(obj: T, context: IArcGISContext, options?: IResolveOptions): Promise<T>;
