import { Request } from 'express';
import EnvoyPluginSDK from './EnvoyPluginSDK';
import EnvoyMeta, { EnvoyEventMeta, EnvoyRouteMeta } from './EnvoyMeta';
import EntryPayload from '../payloads/EntryPayload';
import InvitePayload from '../payloads/InvitePayload';
import LocationPayload from '../payloads/LocationPayload';
import NotificationPayload from '../payloads/NotificationPayload';
import TakeoverPayload from '../payloads/TakeoverPayload';
import EnvoyEntryEvent from '../internal/EnvoyEntryEvent';
import EnvoyInviteEvent from '../internal/EnvoyInviteEvent';
import EnvoyLocationEvent from '../internal/EnvoyLocationEvent';
import EnvoyOptionsRouteResponseBody from '../internal/EnvoyOptionsRouteResponseBody';
import EnvoyOptionsRouteParams from '../internal/EnvoyOptionsRouteParams';
import EnvoySelectedValuesRouteResponseBody from '../internal/EnvoySelectedValuesRouteResponseBody';
import EnvoySelectedValuesRouteParams from '../internal/EnvoySelectedValuesRouteParams';
import EnvoyRemoteValueRouteResponseBody from '../internal/EnvoyRemoteValueRouteResponseBody';
/**
* @internal
*/
export declare const VERIFIED: unique symbol;
/**
* @internal
*/
export interface VerifiedRequest extends Request {
[VERIFIED]: boolean;
}
/**
* Base type for Envoy requests.
* You probably won't need to use this type directly.
* For routes, use {@link EnvoyRouteRequest},
* and for events, use {@link EnvoyEntryEventRequest} or {@link EnvoyInviteEventRequest}.
*
* @category Base
*/
export interface EnvoyBaseRequest extends VerifiedRequest {
envoy: EnvoyPluginSDK;
}
/**
* Use to type your `req` object in Envoy route handlers such as validation URLs.
*
* @category Request
*/
export declare type EnvoyRouteRequest, Params = Record> = EnvoyBaseRequest, Payload>;
/**
* Use to type your `req` object in Envoy "migration" route handlers.
*
* @category Request
*/
export declare type EnvoyMigrationRouteRequest> = EnvoyRouteRequest;
/**
* Use to type your `req` object in Envoy "options URL" route handlers.
*
* @category Request
*/
export declare type EnvoyOptionsRouteRequest> = EnvoyRouteRequest;
/**
* Use to type your `req` object in Envoy "selected values URL" route handlers.
*
* @category Request
*/
export declare type EnvoySelectedValuesRouteRequest> = EnvoyRouteRequest;
/**
* Use to type your `req` object in Envoy "remote value URL" route handlers.
*
* @category Request
*/
export declare type EnvoyRemoteValueRouteRequest> = EnvoyRouteRequest;
/**
* Use to type your `req` object in Envoy "validation URL" route handlers.
*
* @category Request
*/
export declare type EnvoyValidationRouteRequest, Config = Record> = EnvoyRouteRequest;
/**
* Base type for event requests.
* You should prefer specific types such as {@link EnvoyEntryEventRequest} or {@link EnvoyInviteEventRequest}.
*
* @category Request
*/
export declare type EnvoyEventRequest> = EnvoyBaseRequest, Payload>;
/**
* Use to type your `req` object in entry event handlers,
* such as handlers for `entry_sign_in`.
*
* @category Request
*/
export declare type EnvoyEntryEventRequest> = EnvoyEventRequest;
/**
* Use to type your `req` object in invite event handlers,
* such as handlers for `invite_created` or `upcoming_visit`.
*
* @category Request
*/
export declare type EnvoyInviteEventRequest> = EnvoyEventRequest;
/**
* Use to type your `req` object in location event handlers,
* such as handlers for `location_capacity_updated`.
*
* @category Request
*/
export declare type EnvoyLocationEventRequest> = EnvoyEventRequest;
/**
* Use to type your `req` object in your notification event handler.
*
* @category Request
*/
export declare type EnvoyNotificationEventRequest> = EnvoyEventRequest;
/**
* Use to type your `req` object in your takeover event handler.
*
* @category Request
*/
export declare type EnvoyTakeoverEventRequest> = EnvoyEventRequest;
/**
* You probably won't need to use this type directly.
* For routes, use {@link EnvoyRouteRequest},
* and for events, use {@link EnvoyEntryEventRequest} or {@link EnvoyInviteEventRequest}.
*
* @category Base
*/
declare type EnvoyRequest> = EnvoyBaseRequest | EnvoyEventMeta, Payload>;
export default EnvoyRequest;
//# sourceMappingURL=EnvoyRequest.d.ts.map