@snap/camera-kit
Version:
Camera Kit Web
42 lines • 1.87 kB
TypeScript
import { TypedCustomEvent } from "../events/TypedCustomEvent";
import { TypedEventTarget } from "../events/TypedEventTarget";
import { Timer } from "../metrics/operational/Timer";
import type { ChainableHandler, RequestMetadata } from "./HandlerChainBuilder";
interface Started {
requestId: number;
timer: Timer<"download_latency">;
dimensions: Dimensions;
}
interface Completed {
requestId: number;
dimensions: Dimensions;
status: number;
sizeByte: number;
}
interface Errored {
requestId: number;
dimensions: Dimensions;
error: Error;
}
export type Dimensions = Record<string, string | undefined>;
export type RequestStateEvents = TypedCustomEvent<"started", Started> | TypedCustomEvent<"completed", Completed> | TypedCustomEvent<"errored", Errored>;
export declare const dispatchRequestStarted: (requestStateEventTarget: RequestStateEventTarget, data: Omit<Started, "requestId" | "timer">) => Started;
export declare const dispatchRequestCompleted: (requestStateEventTarget: RequestStateEventTarget, data: Completed) => Completed;
export declare const dispatchRequestErrored: (requestStateEventTarget: RequestStateEventTarget, data: Errored) => Errored;
export declare const createRequestStateEmittingHandler: <D extends Dimensions = Dimensions>(requestStateEventTarget: RequestStateEventTarget) => ChainableHandler<[RequestInfo, D], Response, RequestInfo, Response, RequestMetadata>;
/**
* This event target may be used to listen for any network request state changes initiated by CameraKit.
*
* @internal
*/
export type RequestStateEventTarget = TypedEventTarget<RequestStateEvents>;
/**
* @internal
*/
export declare const requestStateEventTargetFactory: {
(): RequestStateEventTarget;
token: "requestStateEventTarget";
dependencies: [];
};
export {};
//# sourceMappingURL=requestStateEmittingHandler.d.ts.map