@duffel/components
Version:
Component library to build your travel product with Duffel.
78 lines (77 loc) • 2.7 kB
TypeScript
/// <reference types="@duffel/api" />
import { Airline, Airport, CreateOrderPassenger, DuffelPassengerGender, DuffelPassengerTitle, Place } from "@duffel/api/types";
export interface TravelDetails<T extends "order" | "offer" | "diff"> {
originDestination: string;
departingAt: string;
origin: T extends "diff" ? string : Airport | Place;
arrivingAt: string;
destination: T extends "diff" ? string : Airport | Place;
aircraft: string | null;
cabinClass: string;
fareBrandName?: T extends "offer" ? string : never;
flightDuration: string | null;
flight: string;
airline: T extends "diff" ? null : Airline;
operatedBy?: string;
baggagesIncluded?: {
carryOn?: number;
checked?: number;
};
originTerminal?: string | null;
destinationTerminal?: string | null;
}
export interface LayoverDetails {
airport: Airport | Place;
duration: string;
originDestinationKey?: string;
}
export interface SliceTravelItem {
type: "travel";
travelDetails: TravelDetails<"order" | "offer">;
layoverDetails?: never;
id: string;
}
export interface SliceLayoverItem {
type: "layover";
travelDetails?: never;
layoverDetails: LayoverDetails;
}
export type SliceItem = SliceTravelItem | SliceLayoverItem;
export type SliceDetails = SliceItem[];
export type FilterItems = Record<string, string>;
export type SliceDetailItemChangeStatus = "no_change" | "added" | "removed" | "changed";
export type ProcessedRequestError = {
errorTitle?: string;
errorMessage: string;
requestId?: string;
};
export type PropsOrError<T> = Readonly<({
error: true;
} & ProcessedRequestError) | {
error: false;
props: T;
} | {
redirect: string;
}>;
export type RandomlyGeneratedPassenger = Omit<CreateOrderPassenger, "email" | "identityDocuments" | "infantPassengerId" | "phoneNumber">;
export type ValueOf<T> = Required<T>[keyof T];
export declare const WebhookEventTypes: readonly ["order.created", "order.airline_initiated_change_detected"];
export type WebhookEventType = (typeof WebhookEventTypes)[number];
export declare const FilterableWebhookEventTypes: readonly ["order.created", "order.airline_initiated_change_detected", "ping.triggered"];
export type FilterableWebhookEventType = (typeof FilterableWebhookEventTypes)[number];
export type UnleashContext = {
appName: string;
environment?: string;
userId?: string;
sessionId?: string;
remoteAddress?: string;
properties?: {
[key: string]: string;
};
};
export type RandomlyGeneratedPeople = {
title: DuffelPassengerTitle;
familyName: string;
givenName: string;
gender: DuffelPassengerGender;
};