import type { Uri, UriCancelRequest, UriRequest, UriResponse } from "../lens-core-module/generated-types";
import type { Lens } from "../lens/Lens";
export declare function extractSchemeAndRoute(uri: Uri): {
    scheme: string;
    route: string;
};
export declare function isUriHandlers(value: unknown): value is UriHandlers;
export declare function isUriResponse(value: unknown): value is UriResponse;
/**
 * Provides a way for a lens to call into external services that work under HTTP-like protocol.
 * @internal
 */
export interface UriHandler {
    /**
     * [scheme]://[route] pattern that this handler processes or an array of patterns.
     */
    uri: Uri | Uri[];
    /**
     * Called to process the provided request.
     * @param request Lens request.
     * @param reply A callback function to send response back.
     * The function can be called none or multiple number of times.
     * @param lens Lens the request is coming from.
     */
    handleRequest(request: UriRequest, reply: (response: UriResponse) => void, lens: Lens): void;
    /**
     * Called to indicated that URI request initated earlier is cancelled.
     * @param request Lens request.
     * @param lens Lens the request is coming from.
     */
    cancelRequest?(request: UriCancelRequest, lens: Lens): void;
}
/**
 * Array of {@link UriHandler} objects.
 * @internal
 */
export type UriHandlers = UriHandler[];
/**
 * An extension point for client URI handlers.
 * @internal
 */
export declare const uriHandlersFactory: {
    (): UriHandlers;
    token: "UriHandlers";
    dependencies: [];
};
export { Uri, UriCancelRequest, UriRequest, UriResponse } from "../lens-core-module/generated-types";
//# sourceMappingURL=UriHandlers.d.ts.map