import { G as GenericCreateAppRegisterHandlerOptions } from '../../saleor-webhook-D8MVgjL2.mjs';
import { W as WebApiHandlerInput, a as WebApiHandler, S as SaleorWebApiWebhook, b as WebhookConfig, c as WebApiWebhookHandler } from '../../saleor-webhook-Dn2np6F_.mjs';
export { d as WebApiAdapter } from '../../saleor-webhook-Dn2np6F_.mjs';
import { C as CreateManifestHandlerOptions$1, P as ProtectedHandlerContext } from '../../generic-saleor-webhook-hJap0j6s.mjs';
import { APL } from '../../APL/index.mjs';
import { Permission, AsyncWebhookEventType, SyncWebhookEventType } from '../../types.mjs';
import '../../saleor-app.mjs';
import 'graphql';
import '../../verify-signature-mKf0fpOE.mjs';

type CreateAppRegisterHandlerOptions = GenericCreateAppRegisterHandlerOptions<WebApiHandlerInput>;
/**
 * Returns API route handler for Web API compatible request handlers
 * (examples: Next.js app router, hono, deno, etc.)
 * that use signature: (req: Request) => Response
 * where Request and Response are Fetch API objects
 *
 * Handler is for register endpoint that is called by Saleor when installing the app
 *
 * It verifies the request and stores `app_token` from Saleor
 * in APL and along with all required AuthData fields (jwks, saleorApiUrl, ...)
 *
 * **Recommended path**: `/api/register`
 * (configured in manifest handler)
 *
 * To learn more check Saleor docs
 * @see {@link https://docs.saleor.io/developer/extending/apps/architecture/app-requirements#register-url}
 *
 * @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 const createAppRegisterHandler: (config: CreateAppRegisterHandlerOptions) => WebApiHandler;

type CreateManifestHandlerOptions = CreateManifestHandlerOptions$1<WebApiHandlerInput>;
/** Returns app manifest API route handler for Web API compatible request handlers
 * (examples: Next.js app router, hono, deno, etc.)
 * that use signature: (req: Request) => Response
 * where Request and Response are Fetch API objects
 *
 * App manifest is an endpoint that Saleor will call your App metadata.
 * It has the App's name and description, as well as all the necessary information to
 * register webhooks, permissions, and extensions.
 *
 * **Recommended path**: `/api/manifest`
 *
 * To learn more check Saleor docs
 * @see {@link https://docs.saleor.io/developer/extending/apps/architecture/app-requirements#manifest-url}
 *
 * @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 const createManifestHandler: (config: CreateManifestHandlerOptions) => WebApiHandler;

type WebApiProtectedHandler = (request: Request, ctx: ProtectedHandlerContext) => Response | Promise<Response>;
declare const createProtectedHandler: (handlerFn: WebApiProtectedHandler, apl: APL, requiredPermissions?: Permission[]) => WebApiHandler;

declare class SaleorAsyncWebhook<TPayload = unknown> extends SaleorWebApiWebhook<TPayload> {
    readonly event: AsyncWebhookEventType;
    protected readonly eventType: "async";
    constructor(configuration: WebhookConfig<AsyncWebhookEventType>);
    createHandler(handlerFn: WebApiWebhookHandler<TPayload>): WebApiHandler;
}

type WebApiSyncWebhookHandler<TPayload> = WebApiWebhookHandler<TPayload>;
declare class SaleorSyncWebhook<TPayload = unknown, TEvent extends SyncWebhookEventType = SyncWebhookEventType> extends SaleorWebApiWebhook<TPayload> {
    readonly event: TEvent;
    protected readonly eventType: "sync";
    constructor(configuration: WebhookConfig<TEvent>);
    createHandler(handlerFn: WebApiSyncWebhookHandler<TPayload>): WebApiHandler;
}

export { type CreateAppRegisterHandlerOptions, type CreateManifestHandlerOptions, SaleorAsyncWebhook, SaleorSyncWebhook, WebApiHandler, WebApiHandlerInput, type WebApiProtectedHandler, type WebApiSyncWebhookHandler, WebApiWebhookHandler, createAppRegisterHandler, createManifestHandler, createProtectedHandler };
