import { DurableFetchEventData } from "../../fetch";
import { DurableEventData, DurableRequestData } from "../../data";
import { Pushable } from "./execute";
import type { DurableServiceWorkerRegistration } from "./container";
import { ServiceWorkerWorkerData } from "./worker";
export interface ServiceWorkerFetchOptions {
    tag?: string;
    entrypoint?: string;
    entrypointArguments?: string[];
    dispatch?: string | DurableEventData;
}
export interface FetchInit extends RequestInit, ServiceWorkerFetchOptions {
    duplex?: "half";
}
export interface FetchFn {
    (input: RequestInfo | URL, init?: FetchInit): Promise<Response>;
}
export declare function createServiceWorkerFetch(registration: DurableServiceWorkerRegistration, serviceWorkerInit?: Partial<ServiceWorkerWorkerData>, pushable?: Pushable<ServiceWorkerWorkerData, unknown>): FetchFn;
export declare function executeServiceWorkerFetch(registration: DurableServiceWorkerRegistration, request: Request | DurableRequestData, options?: ServiceWorkerFetchOptions, serviceWorkerInit?: Partial<ServiceWorkerWorkerData>, pushable?: Pushable<ServiceWorkerWorkerData, unknown>): Promise<Response>;
export declare function executeServiceWorkerFetchEvent(registration: DurableServiceWorkerRegistration, event: DurableFetchEventData, serviceWorkerInit?: Partial<ServiceWorkerWorkerData>, pushable?: Pushable<ServiceWorkerWorkerData, unknown>): Promise<Response>;
