import { G as GenericSaleorWebhook, a as GenericWebhookConfig } from './generic-saleor-webhook-Cp6qiwDu.mjs';
import { P as PlatformAdapterInterface, A as ActionHandlerResult, d as WebhookContext } from './saleor-webhook-DUUfTEi7.mjs';
import { AsyncWebhookEventType, SyncWebhookEventType } from './types.mjs';

type WebApiHandlerInput = Request;
type WebApiHandler = (req: Request) => Response | Promise<Response>;
/** PlatformAdapter for Web API (Fetch API: Request and Response)
 *
 * Platform adapters are used in Actions to handle generic request logic
 * like getting body, headers, etc.
 *
 * Thanks to this Actions logic can be re-used for each platform

 * @see {PlatformAdapterInterface}
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Response}
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request}
 *
 * */
declare class WebApiAdapter<TRequest extends Request = Request, TResponse extends Response = Response> implements PlatformAdapterInterface<TRequest> {
    request: TRequest;
    ResponseConstructor: {
        new (...args: any): TResponse;
    };
    constructor(request: TRequest, ResponseConstructor: {
        new (...args: any): TResponse;
    });
    getHeader(name: string): string | null;
    getBody(): Promise<any>;
    getRawBody(): Promise<string>;
    getBaseUrl(): string;
    get method(): "POST" | "GET";
    send(result: ActionHandlerResult): Promise<TResponse>;
}

type WebhookConfig<Event = AsyncWebhookEventType | SyncWebhookEventType> = GenericWebhookConfig<WebApiHandlerInput, Event>;
/** Function type provided by consumer in `SaleorWebApiWebhook.createHandler` */
type WebApiWebhookHandler<TPayload = unknown, TRequest extends Request = Request, TResponse extends Response = Response> = (req: TRequest, ctx: WebhookContext<TPayload>) => TResponse | Promise<TResponse>;
declare abstract class SaleorWebApiWebhook<TPayload = unknown> extends GenericSaleorWebhook<WebApiHandlerInput, TPayload> {
    createHandler(handlerFn: WebApiWebhookHandler<TPayload>): WebApiHandler;
}

export { SaleorWebApiWebhook as S, type WebApiHandlerInput as W, type WebApiHandler as a, type WebhookConfig as b, type WebApiWebhookHandler as c, WebApiAdapter as d };
