import { RequestMessage, ResponseMessage, Transaction } from "./channel/types.cjs";
import { SliceZone } from "@prismicio/client";

//#region src/types.d.ts
type ActiveSlice = {
  rect: DOMRect;
  sliceID: string;
  variationID: string;
  index: number;
};
type SliceZoneSize = {
  rect: DOMRect;
};
declare enum APIRequestType {
  SetActiveSlice = "setActiveSlice",
  SetSliceZoneSize = "setSliceZoneSize"
}
type APITransactions = {
  [APIRequestType.SetActiveSlice]: Transaction<RequestMessage<APIRequestType.SetActiveSlice, ActiveSlice | null>>;
  [APIRequestType.SetSliceZoneSize]: Transaction<RequestMessage<APIRequestType.SetSliceZoneSize, SliceZoneSize>>;
};
declare enum ClientRequestType {
  Ping = "ping",
  SetSliceZone = "setSliceZone",
  ScrollToSlice = "scrollToSlice"
}
type ClientTransactions = {
  [ClientRequestType.Ping]: Transaction<RequestMessage<ClientRequestType.Ping>, ResponseMessage<"pong">>;
  [ClientRequestType.SetSliceZone]: Transaction<RequestMessage<ClientRequestType.SetSliceZone, SliceZone>>;
  [ClientRequestType.ScrollToSlice]: Transaction<RequestMessage<ClientRequestType.ScrollToSlice, {
    sliceIndex: number;
    behavior?: "auto" | "smooth";
    block?: "start" | "center" | "end" | "nearest";
    inline?: "start" | "center" | "end" | "nearest";
  }>>;
};
//#endregion
export { APIRequestType, APITransactions, ActiveSlice, ClientRequestType, ClientTransactions, SliceZoneSize };
//# sourceMappingURL=types.d.cts.map