import type { DwnInterface, DwnMessageReply, DwnResponse, ProcessDwnRequest, SendDwnRequest } from './types/dwn.js';
export type DwnReadThroughExecutor = {
    process<T extends DwnInterface>(request: ProcessDwnRequest<T>): Promise<DwnResponse<T>>;
    send<T extends DwnInterface>(request: SendDwnRequest<T>): Promise<DwnResponse<T>>;
};
/**
 * Reads from the local DWN first, then falls through to the remote DWN when the
 * local reply is well-formed but missing the requested durable dependency.
 */
export declare function processDwnRequestWithRemoteFallback<T extends DwnInterface>(executor: DwnReadThroughExecutor, request: ProcessDwnRequest<T>, hasUsableReply: (reply: DwnMessageReply[T]) => boolean): Promise<DwnResponse<T>>;
//# sourceMappingURL=dwn-read-through.d.ts.map