import type { Lens } from "../lens/Lens";
import type { LensState } from "../session/lensState";
import type { SessionState } from "../session/sessionState";
import type { Uri, UriHandler, UriRequest, UriResponse } from "./UriHandlers";
export type UriRequestEvent = {
    request: UriRequest;
    reply: (response: UriResponse) => void;
    lens: Lens;
};
/**
 * Represents a Remote API request cancellation handler function.
 */
export type RemoteApiCancelRequestHandler = () => void;
export type CreateLensRequestState<State> = (request: UriRequest, lens: Lens) => State;
export type ProcessRequest<State> = (input: {
    request: UriRequest;
    reply: (response: UriResponse) => void;
    lens: Lens;
    setCancellationHandler: (fn: () => void) => void;
    state: State;
}) => void;
export type ProcessError = (error: Error) => void;
/**
 * Creates a UriHandler for the provided URI.
 * Handles lens and sessions state events, so provides clear abstraction for internal usages.
 *
 * @internal
 */
export declare function createUriRequestProcessor<State = undefined>({ uri, lensState, sessionState, createLensRequestState, processRequest, processInternalError, }: {
    uri: Uri | Uri[];
    lensState: LensState;
    sessionState: SessionState;
    createLensRequestState?: CreateLensRequestState<State>;
    processRequest: ProcessRequest<State>;
    processInternalError: ProcessError;
}): UriHandler;
//# sourceMappingURL=uriRequestProcessor.d.ts.map