import { Class } from '../class/types'; import { Resource } from '../types'; export interface GetServicesParameters { ProgramIds?: number[]; SessionTypeIds?: number[]; ServiceIds?: string[]; ClassId?: number; ClassScheduleId?: number; SellOnline?: boolean; LocationId?: number; HideRelatedPrograms?: boolean; StaffId?: number; IncludeDiscontinued?: boolean; } export interface Service { Price: number; OnlinePrice: number; TaxIncluded: number; ProgramId: number; TaxRate: number; ProductId: number; Id: string; Name: string; Count: number; SellOnline: boolean; Type: string; ExpirationType: string; ExpirationUnit: string; ExpirationLength: number; RevenueCategory: string; MembershipId: number; SellAtLocationIds: number[]; UseAtLocationIds: number[]; Priority: 'High' | 'Medium' | 'Low'; IsIntroOffer: boolean; IntroOfferType: string; IsThirdPartyDiscountPricing: boolean; Program: string; Discontinued: boolean; } export interface PaymentMethod { Id: number; Name: string; } export interface CheckoutShoppingCartParameters { CartId?: string; ClientId: string; Test?: boolean; Items: CartItem[]; InStore?: boolean; CalculateTax?: boolean; PromotionCode?: string; Payments: CartPayment[]; SendEmail?: boolean; LocationId?: number; Image?: string; ImageFileName?: string; ConsumerPresent?: boolean; PaymentAuthenticationCallbackUrl?: string; TransactionIDs?: number[]; } export interface CartItem { Item: { Type: 'Service' | 'Product' | 'Package' | 'Tip'; Metadata: object; }; DiscountAmount?: number; AppointmentBookingRequests?: AppointmentBookingRequests; EnrollmentIds?: number[]; ClassIds?: number[]; CourseIds?: number[]; VisitIds?: number[]; AppointmentIds?: number[]; Id?: number; Quantity: number; } export interface AppointmentBookingRequests { StaffId: number; LocationId: number; SessionTypeId: number; Resources: Resource[]; StartDateTime: string; EndDateTime: string; ProviderId: string; } export interface CartPayment { Type: 'CreditCard' | 'StoredCard' | 'DirectDebit' | 'EncryptedTrackData' | 'TrackData' | 'DebitAccount' | 'Custom' | 'Comp' | 'Cash' | 'Check' | 'GiftCard'; Metadata: object; } export interface ShoppingCart { ShoppingCart: { Id: string; CartItems: { item: object; DiscountAmount: number; VisitIds: number[]; AppointmentIds: number[]; Appointments: object[]; Id: number; Quantity: number; }[]; SubTotal: number; DiscountTotal: number; TaxTotal: number; GrandTotal: number; }; Classes: Class[]; Appointments: object[]; Enrollments: object[]; Transactions: { TransactionID: number; AuthenticationUrl: string; }; }