BokaMera.API.Host

<back to all web services

TestRecurringSchedule

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/schedules/recurring/testTest recurring scheduleTest recurring schedule, only administrators are allowed to test schedules.

export class ExceptionText
{
    public Reason: string;
    public ReasonPublic: string;

    public constructor(init?: Partial<ExceptionText>) { (Object as any).assign(this, init); }
}

export class AvailableTimesSum implements IAvailableTime
{
    public From: string;
    public To: string;
    public Free: number;
    public FreeSpots: number;
    public ExceptionTexts: ExceptionText[];

    public constructor(init?: Partial<AvailableTimesSum>) { (Object as any).assign(this, init); }
}

export class AvailableTimesResponse
{
    public CompanyId: string;
    public ServiceId: number;
    public TimesFreeTextSingle: string;
    public TimesFreeTextMultiple: string;
    public Times: AvailableTimesSum[];

    public constructor(init?: Partial<AvailableTimesResponse>) { (Object as any).assign(this, init); }
}

export class AddRecurringScheduleDate
{
    /** @description The date for the schedule opening (only date part is used here */
    // @ApiMember(Description="The date for the schedule opening (only date part is used here", IsRequired=true)
    public Date: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

    public constructor(init?: Partial<AddRecurringScheduleDate>) { (Object as any).assign(this, init); }
}

export class ScheduleException
{
    public StartTime: string;
    public EndTime: string;

    public constructor(init?: Partial<ScheduleException>) { (Object as any).assign(this, init); }
}

export class AddScheduleService
{
    /** @description The service id */
    // @ApiMember(Description="The service id", IsRequired=true)
    public Id: number;

    public constructor(init?: Partial<AddScheduleService>) { (Object as any).assign(this, init); }
}

export class BaseModel
{

    public constructor(init?: Partial<BaseModel>) { (Object as any).assign(this, init); }
}

export enum ScheduleType
{
    NotDefined = 'NotDefined',
    RecurringSchedule = 'RecurringSchedule',
    DateSchedule = 'DateSchedule',
}

export interface ISchedule
{
    CompanyId: string;
    Resources: IList<Resource>;
    Type: ScheduleType;
    Active: boolean;
    IsResourceSpecific: boolean;
}

export interface ITimeException extends IInterval
{
    Id: number;
    ReasonText: string;
    IsBlock: boolean;
    ReasonTextPublic: string;
    IsRecurring: boolean;
    ResourceIds: number[];
}

export enum BookingStatusEnum
{
    Booked = 1,
    Unbooked = 2,
    Reserved = 3,
    Canceled = 4,
    AwaitingPayment = 5,
    AwaitingPaymentNoTimeLimit = 6,
    Payed = 7,
    AwaitingPaymentRequestFromAdmin = 8,
    AwaitingPaymentFromProvider = 9,
    Invoiced = 10,
}

export class BookedCustomer
{
    public Id: string;
    public Firstname: string;
    public Lastname: string;
    public Email: string;
    public Phone: string;
    public FacebookUserName: string;
    public ImageUrl: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;

    public constructor(init?: Partial<BookedCustomer>) { (Object as any).assign(this, init); }
}

export interface IBookedTime extends IInterval
{
    Id: number;
    ServiceId: number;
    BookedSpots: number;
    TotalSpots: number;
    PauseAfterInMinutes: number;
    Status: BookingStatusEnum;
    StatusId: number;
    Customer: BookedCustomer;
}

export class CustomFieldValue extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Value: string;

    // @Required()
    public Active: boolean;

    public SortOrder?: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldValue>) { super(init); (Object as any).assign(this, init); }
}

export class CustomField extends BaseModel
{
    // @Required()
    public Table: string;

    // @Required()
    public Column: string;

    // @Required()
    public DataType: string;

    // @Required()
    public Description: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CustomField>) { super(init); (Object as any).assign(this, init); }
}

export class RegEx extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public RegExCode: string;

    public ErrorMessage: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RegEx>) { super(init); (Object as any).assign(this, init); }
}

export class ResourceType extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public SelectableByUser: boolean;

    // @Ignore()
    public Resources: Resource[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    public Description: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<ResourceType>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeType extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RebateCodeType>) { super(init); (Object as any).assign(this, init); }
}

export class AppliedRebateCodes
{
    public RebateCodeId: number;
    public RebateCodeSign: string;
    public RebateCodeValue: number;
    public RebateAmount: number;
    public RebateCodeType: RebateCodeType;

    public constructor(init?: Partial<AppliedRebateCodes>) { (Object as any).assign(this, init); }
}

export class TotalPriceInformation
{
    public TotalPrice: number;
    public TotalVATAmount: number;
    public TotalRebate: number;
    public TotalPriceBeforeRebate: number;
    public AppliedCodes: AppliedRebateCodes[];
    public PriceSign: string;
    public CurrencyId: string;
    public VAT: number;

    public constructor(init?: Partial<TotalPriceInformation>) { (Object as any).assign(this, init); }
}

export enum Currency
{
    SEK = 1,
    EUR = 2,
}

export class PriceMapping extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public Id: string;

    // @Required()
    public ServicePriceId: number;

    public ReferenceType: string;
    public ExternalReference: string;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PriceMapping>) { super(init); (Object as any).assign(this, init); }
}

export enum BokaMeraDayOfWeek
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7,
}

export class ServicePriceDayOfWeekRelation extends BaseModel
{
    // @Ignore()
    public DayOfWeek: BokaMeraDayOfWeek;

    // @Required()
    public CompanyId: string;

    // @Required()
    public ServicePriceId: number;

    // @Required()
    public DayOfWeekId: number;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<ServicePriceDayOfWeekRelation>) { super(init); (Object as any).assign(this, init); }
}

export interface IDbConnectionFactory
{
}

export class ServerData
{
    public HTTP_HOST: string;
    public HTTP_CONNECTION: string;
    public HTTP_CACHE_CONTROL: string;
    public HTTP_ACCEPT: string;
    public HTTP_USER_AGENT: string;
    public HTTP_ACCEPT_ENCODING: string;
    public HTTP_ACCEPT_LANGUAGE: string;
    public PATH: string;
    public SERVER_SOFTWARE: string;
    public SERVER_NAME: string;
    public SERVER_ADDR: string;
    public SERVER_PORT: string;
    public REMOTE_ADDR: string;
    public REMOTE_PORT: string;
    public GATEWAY_INTERFACE: string;
    public SERVER_PROTOCOL: string;
    public REQUEST_METHOD: string;
    public QUERY_STRING: string;
    public REQUEST_TIME: string;

    public constructor(init?: Partial<ServerData>) { (Object as any).assign(this, init); }
}

export class Credentials
{
    public hash: string;
    public id: string;
    public version: string;
    public client: string;
    public serverdata: ServerData;
    public time: string;
    public test: string;
    public language: string;

    public constructor(init?: Partial<Credentials>) { (Object as any).assign(this, init); }
}

export class CheckoutData
{
    public terms: string;
    public privacyPolicy: string;
    public redirectOnSuccess: string;

    public constructor(init?: Partial<CheckoutData>) { (Object as any).assign(this, init); }
}

export class CheckoutPaymentData
{
    public currency: string;
    public language: string;
    public country: string;
    public autoactivate: string;
    public orderid: string;
    public returnmethod: string;
    public accepturl: string;
    public cancelurl: string;
    public callbackurl: string;

    public constructor(init?: Partial<CheckoutPaymentData>) { (Object as any).assign(this, init); }
}

export class PaymentInfo
{
    public paymentdate: string;
    public paymentterms: string;
    public yourreference: string;
    public ourreference: string;
    public projectname: string;
    public deliverymethod: string;
    public deliveryterms: string;

    public constructor(init?: Partial<PaymentInfo>) { (Object as any).assign(this, init); }
}

export class CartHandling
{
    public withouttax: string;
    public taxrate: string;

    public constructor(init?: Partial<CartHandling>) { (Object as any).assign(this, init); }
}

export class CartTotal
{
    public rounding: string;
    public withouttax: string;
    public tax: string;
    public withtax: string;

    public constructor(init?: Partial<CartTotal>) { (Object as any).assign(this, init); }
}

export class Address extends StripeEntity_1<Address>
{
    public City: string;
    public Country: string;
    public Line1: string;
    public Line2: string;
    public PostalCode: string;
    public State: string;

    public constructor(init?: Partial<Address>) { super(init); (Object as any).assign(this, init); }
}

export class Shipping extends StripeEntity_1<Shipping>
{
    public Address: Address;
    public Carrier: string;
    public Name: string;
    public Phone: string;
    public TrackingNumber: string;

    public constructor(init?: Partial<Shipping>) { super(init); (Object as any).assign(this, init); }
}

export class Cart
{
    public Handling: CartHandling;
    public Total: CartTotal;
    public Shipping: Shipping;

    public constructor(init?: Partial<Cart>) { (Object as any).assign(this, init); }
}

export class CustomerBilling
{
    public firstname: string;
    public lastname: string;
    public company: string;
    public street: string;
    public street2: string;
    public zip: string;
    public city: string;
    public country: string;
    public phone: string;
    public email: string;

    public constructor(init?: Partial<CustomerBilling>) { (Object as any).assign(this, init); }
}

export class QvicklyCustomer
{
    public nr: string;
    public pno: string;
    public Billing: CustomerBilling;

    public constructor(init?: Partial<QvicklyCustomer>) { (Object as any).assign(this, init); }
}

export class InitCheckoutData
{
    public CheckoutData: CheckoutData;
    public PaymentData: CheckoutPaymentData;
    public PaymentInfo: PaymentInfo;
    public Articles: QvicklyArticle[];
    public Cart: Cart;
    public QvicklyCustomer: QvicklyCustomer;

    public constructor(init?: Partial<InitCheckoutData>) { (Object as any).assign(this, init); }
}

export class InitCheckoutRequestBody
{
    public credentials: Credentials;
    public data: InitCheckoutData;
    public function: string;

    public constructor(init?: Partial<InitCheckoutRequestBody>) { (Object as any).assign(this, init); }
}

export class QvicklyCheckoutResponse
{
    public Number: number;
    public Status: string;
    public OrderId: string;
    public Url: string;

    public constructor(init?: Partial<QvicklyCheckoutResponse>) { (Object as any).assign(this, init); }
}

export class QvikclyPaymentData
{
    public method: string;
    public paymentplanid: string;
    public currency: string;
    public country: string;
    public language: string;
    public autoactivate: string;
    public orderid: string;
    public status: string;
    public paymentid_related: string;
    public url: string;

    public constructor(init?: Partial<QvikclyPaymentData>) { (Object as any).assign(this, init); }
}

export class Card
{
    public promptname: string;
    public recurring: string;
    public recurringnr: string;
    public accepturl: string;
    public cancelurl: string;
    public callbackurl: string;
    public returnmethod: string;

    public constructor(init?: Partial<Card>) { (Object as any).assign(this, init); }
}

export class Settlement
{
    public number: string;
    public date: string;

    public constructor(init?: Partial<Settlement>) { (Object as any).assign(this, init); }
}

export class QvicklyPaymentResponse
{
    public PaymentData: QvikclyPaymentData;
    public PaymentInfo: PaymentInfo;
    public Card: Card;
    public Settlement: Settlement;
    public QvicklyCustomer: QvicklyCustomer;
    public Articles: QvicklyArticle[];
    public Cart: Cart;

    public constructor(init?: Partial<QvicklyPaymentResponse>) { (Object as any).assign(this, init); }
}

export enum Payson2CheckoutStatus
{
    None = 'None',
    Created = 'Created',
    FormsFilled = 'FormsFilled',
    ReadyToPay = 'ReadyToPay',
    ProcessingPayment = 'ProcessingPayment',
    ReadyToShip = 'ReadyToShip',
    Shipped = 'Shipped',
    PaidToAccount = 'PaidToAccount',
    Canceled = 'Canceled',
    Credited = 'Credited',
    Expired = 'Expired',
    Denied = 'Denied',
}

export enum CustomerType
{
    Person = 'Person',
    Business = 'Business',
}

export class UserAccessKeys extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public AccessKeyTypeId: number;

    // @Required()
    public Value: string;

    // @Required()
    public CustomerId: string;

    public Description: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<UserAccessKeys>) { super(init); (Object as any).assign(this, init); }
}

export class ExternalReference extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public Id: string;

    // @Required()
    public OwnerId: string;

    // @Required()
    public ReferenceType: string;

    public ExternalData: string;
    public CreatedBy: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<ExternalReference>) { super(init); (Object as any).assign(this, init); }
}

export enum CompanyStatus
{
    Registered = 1,
    AwaitingApproval = 2,
    Approved = 3,
    Inactive = 4,
    ClosedDown = 5,
    NotApproved = 6,
}

export class ScheduleView extends BaseModel
{
    // @Required()
    public Name: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<ScheduleView>) { super(init); (Object as any).assign(this, init); }
}

export class WeekNumberSetting extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WeekNumberSetting>) { super(init); (Object as any).assign(this, init); }
}

export class BookingTemplate extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public UsedByApplication: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingTemplate>) { super(init); (Object as any).assign(this, init); }
}

export class CalendarType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CalendarType>) { super(init); (Object as any).assign(this, init); }
}

export class FreeSpotTexts extends BaseModel
{
    // @Required()
    public TextSingular: string;

    // @Required()
    public TextPlural: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<FreeSpotTexts>) { super(init); (Object as any).assign(this, init); }
}

export class BookingStatusOptions
{
    public Id: number;
    public Name: string;
    public Description: string;

    public constructor(init?: Partial<BookingStatusOptions>) { (Object as any).assign(this, init); }
}

export class BookingSettings extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.FreeSpotTexts)")
    public FreeSpotTextsId: number;

    // @Ignore()
    public SendEmailConfirmation: boolean;

    // @Ignore()
    public ScheduleViewOptions: ScheduleView[];

    // @Ignore()
    public WeekNumberSettingOptions: WeekNumberSetting[];

    // @Ignore()
    public BookingTemplateOptions: BookingTemplate[];

    // @Ignore()
    public CalendarTypeOptions: CalendarType[];

    // @Ignore()
    public FreeSpotTextOptions: FreeSpotTexts[];

    // @Ignore()
    public BookingStatusOptions: BookingStatusOptions[];

    public FreeSpotTextsInfo: FreeSpotTexts;
    // @Ignore()
    public FreeSpotsTextSingular: string;

    // @Ignore()
    public FreeSpotsTextPlural: string;

    // @Required()
    public BookingStatusId: number;

    // @Required()
    public ScheduleViewId: number;

    // @Required()
    public BookingTemplateId: number;

    // @Required()
    public CalendarTypeId: number;

    // @Required()
    public AllowBookingOnUnbookedTimes: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    // @Required()
    public SendSmsReminder: boolean;

    // @Required()
    public SendSmsConfirmation: boolean;

    // @Required()
    public EmailReminderTime: number;

    // @Required()
    public SmsReminderTime: number;

    // @Required()
    public MaxActiveBookings: number;

    // @Required()
    public SendNotifications: boolean;

    public SendNotificationsEmail: string;
    // @Required()
    public EnableMobileApp: boolean;

    public ScheduleStartTime?: string;
    public ScheduleEndTime?: string;
    public ReceiptTemplate: string;
    // @Required()
    public ScheduleTimeSlotMinutes: number;

    // @Required()
    public ShowFreeTimesLeft: boolean;

    // @Required()
    public EnableICalGroupBookings: boolean;

    public AgreementTemplate: string;
    // @Required()
    public ScheduleShowTimeExeptions: boolean;

    // @Required()
    public EnableBookingsOnSameTime: boolean;

    // @Required()
    public ShowWeekNumberSettingId: number;

    // @Required()
    public EnableShowBookedTimes: boolean;

    // @Required()
    public EnableSendFollowUpMessage: boolean;

    // @Required()
    public FollowUpMessageTime: number;

    public MessageText: string;
    // @Required()
    public ScheduleGroupResources: boolean;

    // @Required()
    public BookSpotUserResponseMinutes: number;

    // @Required()
    public IsBookSpotDirectly: boolean;

    // @Required()
    public BookSpotDirectlyTimeLeftMinutes: number;

    // @Required()
    public SendEmailNotificationQueue: boolean;

    // @Required()
    public SendSMSNotificationQueue: boolean;

    // @Required()
    public SchedulerDisableHorizontalScrolling: boolean;

    // @Required()
    public BookOnlyOnExistingCustomers: boolean;

    // @Required()
    public AutoGenerateUniquePinCode: boolean;

    // @Required()
    public WeightedPrices: boolean;

    public ModifiedDate?: string;
    // @Required()
    public AutoCreateUserProfile: boolean;

    public ShowMultipleResourcesAsOne: boolean;
    public ShowMultiDayAsTime: boolean;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<BookingSettings>) { super(init); (Object as any).assign(this, init); }
}

export class CompanyType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<CompanyType>) { super(init); (Object as any).assign(this, init); }
}

export class CodeLockSystem extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Supplier: string;

    public LogoType: string;
    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<CodeLockSystem>) { super(init); (Object as any).assign(this, init); }
}

export class CodeLockSetting extends BaseModel
{
    // @Ignore()
    public CodeLockSystemOptions: CodeLockSystem[];

    // @Required()
    public Active: boolean;

    // @Required()
    public CodeLockSystemsId: number;

    // @Required()
    public ValidBeforeMinutes: number;

    // @Required()
    public ValidAfterMinutes: number;

    // @Required()
    public DeleteOldBySchedule: boolean;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;
    // @Required()
    public SendEmailNotification: boolean;

    // @Required()
    public SendSMSNotification: boolean;

    // @Required()
    public EmailNotificationTime: number;

    // @Required()
    public SMSNotificationTime: number;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<CodeLockSetting>) { super(init); (Object as any).assign(this, init); }
}

export class AdminPaymentOptions extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<AdminPaymentOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentProviders extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Category: string;

    public Url: string;
    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<PaymentProviders>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentSetting extends BaseModel
{
    public AdminPaymentOption: AdminPaymentOptions;
    // @Ignore()
    public AdminPaymentOptions: AdminPaymentOptions[];

    // @Ignore()
    public PaymentProviderOptions: PaymentProviders[];

    // @Required()
    public Enabled: boolean;

    // @Required()
    public InvoiceFee: number;

    // @Required()
    public AllowCreditCardPayment: boolean;

    // @Required()
    public AllowInvoicePayment: boolean;

    // @Required()
    public AllowBankPayment: boolean;

    // @Required()
    public GuaranteeOffered: boolean;

    // @Required()
    public RefundOnCancelBooking: boolean;

    public DefaultPaymentOptionId?: number;
    // @Required()
    public PaymentProviderId: number;

    // @Required()
    public SendPaymentRequestDirectly: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<PaymentSetting>) { super(init); (Object as any).assign(this, init); }
}

export class LanguageResponse
{
    public Id: string;
    public Name: string;

    public constructor(init?: Partial<LanguageResponse>) { (Object as any).assign(this, init); }
}

export class CompanySetting extends BaseModel
{
    // @Ignore()
    public Languages: LanguageResponse[];

    // @Required()
    public Active: boolean;

    public InactiveMessage: string;
    // @Required()
    public Searchable: boolean;

    public GATrackingId: string;
    public FacebookPixelId: string;
    // @Required()
    public MultiLanguage: boolean;

    // @Required()
    public EnableAPITranslation: boolean;

    // @Required()
    public DefaultLanguage: string;

    public ModifiedDate?: string;
    public GTMTrackingId: string;
    // @Required()
    public ShowOnMarketPlace: boolean;

    public GoogleAdsConversionId: string;
    public LinkedinTagId: string;
    public GoogleAdsConversionLabel: string;
    public SendCustomerInformationToExternalProviders: boolean;
    // @Required()
    public Id: string;

    public IsWebhookFeatureEnabled: boolean;
    public SmsMessageSendLimit?: number;
    public EmailMessageSendLimit?: number;

    public constructor(init?: Partial<CompanySetting>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetServiceLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetServiceLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetTimeLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetTimeLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetBookingLayouts extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetBookingLayouts>) { super(init); (Object as any).assign(this, init); }
}

export class WidgetBookingMethods extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Code: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<WidgetBookingMethods>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageWidgetSetting extends BaseModel
{
    // @Ignore()
    public WidgetServiceLayoutOptions: WidgetServiceLayouts[];

    // @Ignore()
    public WidgetTimeLayoutOptions: WidgetTimeLayouts[];

    // @Ignore()
    public WidgetBookingLayoutOptions: WidgetBookingLayouts[];

    // @Ignore()
    public WidgetBookingMethodOptions: WidgetBookingMethods[];

    // @Required()
    public ServiceLayoutId: number;

    // @Required()
    public TimeLayoutId: number;

    // @Required()
    public BookingLayoutId: number;

    // @Required()
    public PrimaryColor: string;

    // @Required()
    public ShowServiceImage: boolean;

    // @Required()
    public ShowNextAvailableTime: boolean;

    // @Required()
    public ShowEndTime: boolean;

    public BookedTimeSlotText: string;
    // @Required()
    public DarkTheme: boolean;

    // @Required()
    public ShowRebateCodeField: boolean;

    public ModifiedDate?: string;
    // @Required()
    public EnableCreateAccount: boolean;

    // @Required()
    public EnableLogin: boolean;

    // @Required()
    public EnableDirectBooking: boolean;

    // @Required()
    public EnableFacebookLogin: boolean;

    // @Required()
    public ShowSubscribeToNewsletter: boolean;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<HomepageWidgetSetting>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageTemplate extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ImageUrl: string;
    // @Required()
    public Premium: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<HomepageTemplate>) { super(init); (Object as any).assign(this, init); }
}

export class HeroSectionStyle extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<HeroSectionStyle>) { super(init); (Object as any).assign(this, init); }
}

export class HomepageSetting extends BaseModel implements ICompany
{
    // @Ignore()
    public HomepageTemplateOptions: HomepageTemplate[];

    // @Ignore()
    public HomepageHeroSectionStyleOptions: HeroSectionStyle[];

    // @Ignore()
    public CompanyId?: string;

    public WelcomePageHeading: string;
    public WelcomePageBody: string;
    public AboutUsPageHeading: string;
    public AboutUsPageBody: string;
    // @Required()
    public HomePageTemplateId: number;

    public ImageUrl: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public HomepageHeading: string;
    // @Required()
    public HeroSectionStyleId: number;

    public ModifiedDate?: string;
    // @Required()
    public ShowRating: boolean;

    // @Required()
    public EnableHomepage: boolean;

    // @Required()
    public Id: string;

    public constructor(init?: Partial<HomepageSetting>) { super(init); (Object as any).assign(this, init); }
}

export class AverageRatingScore
{
    public AverageScore: number;
    public Score1Count: number;
    public Score2Count: number;
    public Score3Count: number;
    public Score4Count: number;
    public Score5Count: number;
    public Count: number;

    public constructor(init?: Partial<AverageRatingScore>) { (Object as any).assign(this, init); }
}

export class Review extends BaseModel
{
    public ReviewId: string;
    // @Required()
    public CompanyId: string;

    // @Required()
    public Title: string;

    // @Required()
    public Description: string;

    // @Required()
    public Author: string;

    // @Required()
    public Status: number;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;
    public ReviewAnswer: string;

    public constructor(init?: Partial<Review>) { super(init); (Object as any).assign(this, init); }
}

export class Rating extends BaseModel
{
    public ReviewId?: string;
    public Review: Review;
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public RatingScore: number;

    // @Required()
    public Status: number;

    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<Rating>) { super(init); (Object as any).assign(this, init); }
}

export class LicenseTypeItem extends BaseModel
{
    // @Ignore()
    public Name: string;

    // @Ignore()
    public LicenseType: LicenseType;

    // @Required()
    public LicenseTypesId: number;

    // @Required()
    public LicenseItemsId: number;

    // @Required()
    public NumberOfItems: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<LicenseTypeItem>) { super(init); (Object as any).assign(this, init); }
}

export class Country extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Required()
    public Name: string;

    public Culture: string;
    public TimeZone: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<Country>) { super(init); (Object as any).assign(this, init); }
}

export class LicensePrice extends BaseModel
{
    // @Ignore()
    public Country: Country;

    // @Required()
    public LicenseTypeId: number;

    // @Required()
    public CountryId: string;

    // @Required()
    public Price: number;

    public ModifiedDate?: string;
    public LicensePlanId: number;

    public constructor(init?: Partial<LicensePrice>) { super(init); (Object as any).assign(this, init); }
}

export class LicenseType extends BaseModel
{
    // @Ignore()
    public LicenseItems: IList<LicenseTypeItem>;

    // @Ignore()
    public Prices: IList<LicensePrice>;

    // @Ignore()
    public IsFree: boolean;

    // @Ignore()
    public PeriodOfNoticeDays: number;

    // @Ignore()
    public NextLicenseOption: LicenseType;

    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public ExtraLicenseOption: boolean;

    public ModifiedDate?: string;
    public Active: boolean;
    public VossTierId: string;
    public Id: number;

    public constructor(init?: Partial<LicenseType>) { super(init); (Object as any).assign(this, init); }
}

export class License extends BaseModel
{
    public Type: LicenseType;
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public TypeId: number;

    public VossSubscriptionId: string;
    // @Required()
    public ValidFrom: string;

    // @Required()
    public ValidTo: string;

    // @Required()
    public Active: boolean;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;
    public MetaData: string;

    public constructor(init?: Partial<License>) { super(init); (Object as any).assign(this, init); }
}

export class BillingMethodCountriesRelation extends BaseModel
{
    // @Required()
    public BillingMethodId: number;

    // @Required()
    public CountryId: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<BillingMethodCountriesRelation>) { super(init); (Object as any).assign(this, init); }
}

export class BillingMethod extends BaseModel
{
    public BillingMethodCountriesRelation: BillingMethodCountriesRelation[];
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BillingMethod>) { super(init); (Object as any).assign(this, init); }
}

export class BillingInformation extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    public BillingMethod: BillingMethod;
    // @Required()
    public BillingMethodId: number;

    // @Required()
    public Name: string;

    public Attention: string;
    public Street1: string;
    public Street2: string;
    public ZipCode: string;
    public City: string;
    public Email: string;
    public CreditCard: string;
    public CreditCardHolder: string;
    public CreditCardNumber: string;
    public ValidToYear?: number;
    public ValidToMonth?: number;
    public CSV: string;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public CountryId: string;

    // @Required()
    public PaymentTermsDays: number;

    public VATRegistrationNumber: string;
    public LicensePlanId: number;
    public GLN: string;
    public ReferenceLine1: string;
    public ReferenceLine2: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<BillingInformation>) { super(init); (Object as any).assign(this, init); }
}

export class KeyCloakRole
{
    public Id: string;
    public Name: string;

    public constructor(init?: Partial<KeyCloakRole>) { (Object as any).assign(this, init); }
}

export class CompanyUser extends BaseModel implements IUser, IBaseModelCreated, IBaseModelUpdated
{
    public Resource: Resource;
    // @Ignore()
    public Roles: KeyCloakRole[];

    // @Ignore()
    public Company: Company;

    public Email: string;
    // @Ignore()
    public FullName: string;

    public ResourceId?: number;
    public WorkerId: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public IsSuperAdmin: boolean;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public UpdatedDate: string;

    public ModifiedDate?: string;
    // @Required()
    public CompanyId: string;

    // @Required()
    public Id: string;

    public UserId: string;
    public Firstname: string;
    public Lastname: string;
    public Phone: string;

    public constructor(init?: Partial<CompanyUser>) { super(init); (Object as any).assign(this, init); }
}

export class CompanyCategory extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Header: string;

    // @Required()
    public Description: string;

    public ImageUrl: string;
    // @Required()
    public Active: boolean;

    public SortOrder?: number;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CompanyCategory>) { super(init); (Object as any).assign(this, init); }
}

export class Company extends BaseModel
{
    // @Ignore()
    public Status: CompanyStatus;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public CustomerCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public BookingAgreements: string;

    // @Ignore()
    public BookingSettings: BookingSettings;

    // @Ignore()
    public CompanyType: CompanyType;

    // @Ignore()
    public CodeLockSettings: CodeLockSetting;

    // @Ignore()
    public PaymentSettings: PaymentSetting;

    // @Ignore()
    public Settings: CompanySetting;

    // @Ignore()
    public WidgetSettings: HomepageWidgetSetting;

    // @Ignore()
    public HomepageSettings: HomepageSetting;

    // @Ignore()
    public RatingScore: AverageRatingScore;

    // @Ignore()
    public Ratings: Rating[];

    // @Ignore()
    public Distance?: number;

    // @Ignore()
    public Licenses: License[];

    // @Ignore()
    public BillingInformation: BillingInformation;

    // @Ignore()
    public CompanyUsers: CompanyUser[];

    // @Ignore()
    public ActiveLicenses: License[];

    // @Ignore()
    public CurrentLicense: License;

    // @Ignore()
    public IsFreeAccount: boolean;

    // @Ignore()
    public DefaultLanguage: CultureInfo;

    public Category: CompanyCategory;
    // @Ignore()
    public Lat: number;

    // @Ignore()
    public Lon: number;

    // @Ignore()
    public IsFavorite: boolean;

    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Required()
    public OrganisationNumber: string;

    // @Required()
    public StatusId: number;

    // @Required()
    public CategoryId: number;

    // @Required()
    public SitePath: string;

    // @Required()
    public Name: string;

    public Street1: string;
    public Street2: string;
    public ZipCode: string;
    public City: string;
    public OpeningHours: string;
    public FaxNumber: string;
    // @Required()
    public Email: string;

    public Phone: string;
    public Details: string;
    public LogoType: string;
    // @Required()
    public ApprovedByAdmin: boolean;

    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public IpAddress: string;
    public Homepage: string;
    public DomainName: string;
    // @Required()
    public CountryId: string;

    // @Required()
    public CompanyOwnerId: number;

    public TypeId?: number;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public DeletionNotificationDate?: string;

    public constructor(init?: Partial<Company>) { super(init); (Object as any).assign(this, init); }
}

export class CustomFieldDataResponse
{
    public Id: number;
    public Column: string;
    public Name: string;
    public Description: string;
    public Value: string;
    /** @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    public DataType: string;

    public constructor(init?: Partial<CustomFieldDataResponse>) { (Object as any).assign(this, init); }
}

export class CustomerComment extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public CustomerId: string;

    // @Required()
    public Comments: string;

    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public ImageUrl: string;
    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomerComment>) { super(init); (Object as any).assign(this, init); }
}

export class Customer extends BaseModel implements IUser, ICustomFieldTable
{
    public IdentityId: number;
    public Id: string;
    // @Ignore()
    public CustomerId: string;

    // @Ignore()
    public AccessKeys: IList<UserAccessKeys>;

    public Email: string;
    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Ignore()
    public Company: Company;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public Comments: IList<CustomerComment>;

    // @Ignore()
    public RebateCodes: IList<RebateCode>;

    public Firstname: string;
    // @Ignore()
    public FullName: string;

    // @Ignore()
    public ImageUrl: string;

    // @Required()
    public Active: boolean;

    public FacebookUsername: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    public IpAddress: string;
    public ModifiedDate?: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;
    public UserId: string;
    public Lastname: string;
    public Phone: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;
    // @Required()
    public CompanyId: string;

    public SubscribedToNewsletter: boolean;

    public constructor(init?: Partial<Customer>) { super(init); (Object as any).assign(this, init); }
}

export enum ItemType
{
    Physical = 'Physical',
    Service = 'Service',
    Fee = 'Fee',
    Discount = 'Discount',
}

export class Item
{
    public ItemId: string;
    public DiscountRate: number;
    public Ean: string;
    public ImageUri: string;
    public Name: string;
    public Quantity: number;
    public Reference: string;
    public TaxRate: number;
    public TotalPriceExcludingTax: number;
    public TotalPriceIncludingTax: number;
    public TotalTaxAmount: number;
    public CreditedAmount: number;
    public Type: ItemType;
    public UnitPrice: number;
    public Uri: string;

    public constructor(init?: Partial<Item>) { (Object as any).assign(this, init); }
}

export class Order
{
    public Currency: Currency;
    public TotalFeeExcludingTax: number;
    public TotalFeeIncludingTax: number;
    public TotalPriceExcludingTax: number;
    public TotalPriceIncludingTax: number;
    public TotalTaxAmount: number;
    public TotalCreditedAmount: number;
    public Items: IList<Item>;

    public constructor(init?: Partial<Order>) { (Object as any).assign(this, init); }
}

export class Merchant
{
    public CheckoutUri: string;
    public ConfirmationUri: string;
    public NotificationUri: string;
    public ValidationUri: string;
    public TermsUri: string;
    public Reference: string;
    public PartnerId: string;

    public constructor(init?: Partial<Merchant>) { (Object as any).assign(this, init); }
}

export enum ColorScheme
{
    White = 'White',
    Blue = 'Blue',
    Gray = 'Gray',
    GrayTextLogos = 'GrayTextLogos',
    BlueTextLogos = 'BlueTextLogos',
    WhiteTextLogos = 'WhiteTextLogos',
    WhiteNoFooter = 'WhiteNoFooter',
    GrayNoFooter = 'GrayNoFooter',
    BlueNoFooter = 'BlueNoFooter',
}

export class Gui
{
    public ColorScheme: ColorScheme;
    public Locale: string;
    public RequestPhone: boolean;
    public PhoneOptional: boolean;

    public constructor(init?: Partial<Gui>) { (Object as any).assign(this, init); }
}

export class History
{
    public Created?: string;
    public ReadyToPay?: string;
    public ReadyToShip?: string;
    public Shipped?: string;
    public PaidToAccount?: string;
    public Canceled?: string;
    public Expired?: string;
    public Denied?: string;

    public constructor(init?: Partial<History>) { (Object as any).assign(this, init); }
}

export class Payson2CheckoutResponse
{
    public Id: string;
    public ExpirationTime?: string;
    public Snippet: string;
    public Status: Payson2CheckoutStatus;
    public Customer: Customer;
    public Order: Order;
    public Merchant: Merchant;
    public Gui: Gui;
    public History: History;
    public PurchaseId?: number;

    public constructor(init?: Partial<Payson2CheckoutResponse>) { (Object as any).assign(this, init); }
}

export class BaseOptions implements INestedOptions
{
    public Expand: string[];
    public ExtraParams: { [index: string]: Object; };

    public constructor(init?: Partial<BaseOptions>) { (Object as any).assign(this, init); }
}

export class SessionAfterExpirationRecoveryOptions implements INestedOptions
{
    public AllowPromotionCodes?: boolean;
    public Enabled?: boolean;

    public constructor(init?: Partial<SessionAfterExpirationRecoveryOptions>) { (Object as any).assign(this, init); }
}

export class SessionAfterExpirationOptions implements INestedOptions
{
    public Recovery: SessionAfterExpirationRecoveryOptions;

    public constructor(init?: Partial<SessionAfterExpirationOptions>) { (Object as any).assign(this, init); }
}

export class SessionAutomaticTaxLiabilityOptions implements INestedOptions
{
    public Account: string;
    public Type: string;

    public constructor(init?: Partial<SessionAutomaticTaxLiabilityOptions>) { (Object as any).assign(this, init); }
}

export class SessionAutomaticTaxOptions implements INestedOptions
{
    public Enabled?: boolean;
    public Liability: SessionAutomaticTaxLiabilityOptions;

    public constructor(init?: Partial<SessionAutomaticTaxOptions>) { (Object as any).assign(this, init); }
}

export class SessionConsentCollectionPaymentMethodReuseAgreementOptions implements INestedOptions
{
    public Position: string;

    public constructor(init?: Partial<SessionConsentCollectionPaymentMethodReuseAgreementOptions>) { (Object as any).assign(this, init); }
}

export class SessionConsentCollectionOptions implements INestedOptions
{
    public PaymentMethodReuseAgreement: SessionConsentCollectionPaymentMethodReuseAgreementOptions;
    public Promotions: string;
    public TermsOfService: string;

    public constructor(init?: Partial<SessionConsentCollectionOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldDropdownOptionOptions implements INestedOptions
{
    public Label: string;
    public Value: string;

    public constructor(init?: Partial<SessionCustomFieldDropdownOptionOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldDropdownOptions implements INestedOptions
{
    public DefaultValue: string;
    public Options: SessionCustomFieldDropdownOptionOptions[];

    public constructor(init?: Partial<SessionCustomFieldDropdownOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldLabelOptions implements INestedOptions
{
    public Custom: string;
    public Type: string;

    public constructor(init?: Partial<SessionCustomFieldLabelOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldNumericOptions implements INestedOptions
{
    public DefaultValue: string;
    public MaximumLength?: number;
    public MinimumLength?: number;

    public constructor(init?: Partial<SessionCustomFieldNumericOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldTextOptions implements INestedOptions
{
    public DefaultValue: string;
    public MaximumLength?: number;
    public MinimumLength?: number;

    public constructor(init?: Partial<SessionCustomFieldTextOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomFieldOptions implements INestedOptions
{
    public Dropdown: SessionCustomFieldDropdownOptions;
    public Key: string;
    public Label: SessionCustomFieldLabelOptions;
    public Numeric: SessionCustomFieldNumericOptions;
    public Optional?: boolean;
    public Text: SessionCustomFieldTextOptions;
    public Type: string;

    public constructor(init?: Partial<SessionCustomFieldOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomTextAfterSubmitOptions implements INestedOptions
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextAfterSubmitOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomTextShippingAddressOptions implements INestedOptions
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextShippingAddressOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomTextSubmitOptions implements INestedOptions
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextSubmitOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomTextTermsOfServiceAcceptanceOptions implements INestedOptions
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextTermsOfServiceAcceptanceOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomTextOptions implements INestedOptions
{
    public AfterSubmit: SessionCustomTextAfterSubmitOptions;
    public ShippingAddress: SessionCustomTextShippingAddressOptions;
    public Submit: SessionCustomTextSubmitOptions;
    public TermsOfServiceAcceptance: SessionCustomTextTermsOfServiceAcceptanceOptions;

    public constructor(init?: Partial<SessionCustomTextOptions>) { (Object as any).assign(this, init); }
}

export class SessionCustomerUpdateOptions implements INestedOptions
{
    public Address: string;
    public Name: string;
    public Shipping: string;

    public constructor(init?: Partial<SessionCustomerUpdateOptions>) { (Object as any).assign(this, init); }
}

export class SessionDiscountOptions implements INestedOptions
{
    public Coupon: string;
    public PromotionCode: string;

    public constructor(init?: Partial<SessionDiscountOptions>) { (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataCustomFieldOptions implements INestedOptions
{
    public Name: string;
    public Value: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataCustomFieldOptions>) { (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataIssuerOptions implements INestedOptions
{
    public Account: string;
    public Type: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataIssuerOptions>) { (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataRenderingOptionsOptions implements INestedOptions
{
    public AmountTaxDisplay: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataRenderingOptionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataOptions implements INestedOptions, IHasMetadata
{
    public AccountTaxIds: string[];
    public CustomFields: SessionInvoiceCreationInvoiceDataCustomFieldOptions[];
    public Description: string;
    public Footer: string;
    public Issuer: SessionInvoiceCreationInvoiceDataIssuerOptions;
    public Metadata: { [index: string]: string; };
    public RenderingOptions: SessionInvoiceCreationInvoiceDataRenderingOptionsOptions;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationOptions implements INestedOptions
{
    public Enabled?: boolean;
    public InvoiceData: SessionInvoiceCreationInvoiceDataOptions;

    public constructor(init?: Partial<SessionInvoiceCreationOptions>) { (Object as any).assign(this, init); }
}

export class SessionLineItemAdjustableQuantityOptions implements INestedOptions
{
    public Enabled?: boolean;
    public Maximum?: number;
    public Minimum?: number;

    public constructor(init?: Partial<SessionLineItemAdjustableQuantityOptions>) { (Object as any).assign(this, init); }
}

export class SessionLineItemPriceDataProductDataOptions implements INestedOptions, IHasMetadata
{
    public Description: string;
    public Images: string[];
    public Metadata: { [index: string]: string; };
    public Name: string;
    public TaxCode: string;

    public constructor(init?: Partial<SessionLineItemPriceDataProductDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionLineItemPriceDataRecurringOptions implements INestedOptions
{
    public Interval: string;
    public IntervalCount?: number;

    public constructor(init?: Partial<SessionLineItemPriceDataRecurringOptions>) { (Object as any).assign(this, init); }
}

export class SessionLineItemPriceDataOptions implements INestedOptions
{
    public Currency: string;
    public Product: string;
    public ProductData: SessionLineItemPriceDataProductDataOptions;
    public Recurring: SessionLineItemPriceDataRecurringOptions;
    public TaxBehavior: string;
    public UnitAmount?: number;
    public UnitAmountDecimal?: number;

    public constructor(init?: Partial<SessionLineItemPriceDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionLineItemOptions implements INestedOptions
{
    public AdjustableQuantity: SessionLineItemAdjustableQuantityOptions;
    public DynamicTaxRates: string[];
    public Price: string;
    public PriceData: SessionLineItemPriceDataOptions;
    public Quantity?: number;
    public TaxRates: string[];

    public constructor(init?: Partial<SessionLineItemOptions>) { (Object as any).assign(this, init); }
}

export class AddressOptions implements INestedOptions
{
    public City: string;
    public Country: string;
    public Line1: string;
    public Line2: string;
    public PostalCode: string;
    public State: string;

    public constructor(init?: Partial<AddressOptions>) { (Object as any).assign(this, init); }
}

export class ChargeShippingOptions implements INestedOptions
{
    public Address: AddressOptions;
    public Carrier: string;
    public Name: string;
    public Phone: string;
    public TrackingNumber: string;

    public constructor(init?: Partial<ChargeShippingOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentIntentDataTransferDataOptions implements INestedOptions
{
    public Amount?: number;
    public Destination: string;

    public constructor(init?: Partial<SessionPaymentIntentDataTransferDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentIntentDataOptions implements INestedOptions, IHasMetadata
{
    public ApplicationFeeAmount?: number;
    public CaptureMethod: string;
    public Description: string;
    public Metadata: { [index: string]: string; };
    public OnBehalfOf: string;
    public ReceiptEmail: string;
    public SetupFutureUsage: string;
    public Shipping: ChargeShippingOptions;
    public StatementDescriptor: string;
    public StatementDescriptorSuffix: string;
    public TransferData: SessionPaymentIntentDataTransferDataOptions;
    public TransferGroup: string;

    public constructor(init?: Partial<SessionPaymentIntentDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodDataOptions implements INestedOptions
{
    public AllowRedisplay: string;

    public constructor(init?: Partial<SessionPaymentMethodDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions implements INestedOptions
{
    public CustomMandateUrl: string;
    public DefaultFor: string[];
    public IntervalDescription: string;
    public PaymentSchedule: string;
    public TransactionType: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAcssDebitOptions implements INestedOptions
{
    public Currency: string;
    public MandateOptions: SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAcssDebitOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAffirmOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAffirmOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAfterpayClearpayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAfterpayClearpayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAlipayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAlipayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAmazonPayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAmazonPayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAuBecsDebitOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAuBecsDebitOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBacsDebitOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBacsDebitOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBancontactOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBancontactOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBoletoOptions implements INestedOptions
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBoletoOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCardInstallmentsOptions implements INestedOptions
{
    public Enabled?: boolean;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCardInstallmentsOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCardOptions implements INestedOptions
{
    public Installments: SessionPaymentMethodOptionsCardInstallmentsOptions;
    public RequestThreeDSecure: string;
    public SetupFutureUsage: string;
    public StatementDescriptorSuffixKana: string;
    public StatementDescriptorSuffixKanji: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCardOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCashappOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCashappOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions implements INestedOptions
{
    public Country: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions implements INestedOptions
{
    public EuBankTransfer: SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions;
    public RequestedAddressTypes: string[];
    public Type: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalanceOptions implements INestedOptions
{
    public BankTransfer: SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions;
    public FundingType: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalanceOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsEpsOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsEpsOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsFpxOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsFpxOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsGiropayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsGiropayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsGrabpayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsGrabpayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsIdealOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsIdealOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsKlarnaOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsKlarnaOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsKonbiniOptions implements INestedOptions
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsKonbiniOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsLinkOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsLinkOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsMobilepayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsMobilepayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsMultibancoOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsMultibancoOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsOxxoOptions implements INestedOptions
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsOxxoOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsP24Options implements INestedOptions
{
    public SetupFutureUsage: string;
    public TosShownAndAccepted?: boolean;

    public constructor(init?: Partial<SessionPaymentMethodOptionsP24Options>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPaynowOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPaynowOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPaypalOptions implements INestedOptions
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public Reference: string;
    public RiskCorrelationId: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPaypalOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPixOptions implements INestedOptions
{
    public ExpiresAfterSeconds?: number;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPixOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsRevolutPayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsRevolutPayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSepaDebitOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSepaDebitOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSofortOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSofortOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSwishOptions implements INestedOptions
{
    public Reference: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSwishOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions implements INestedOptions
{
    public Permissions: string[];
    public Prefetch: string[];

    public constructor(init?: Partial<SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsUsBankAccountOptions implements INestedOptions
{
    public FinancialConnections: SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsUsBankAccountOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsWechatPayOptions implements INestedOptions
{
    public AppId: string;
    public Client: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsWechatPayOptions>) { (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsOptions implements INestedOptions
{
    public AcssDebit: SessionPaymentMethodOptionsAcssDebitOptions;
    public Affirm: SessionPaymentMethodOptionsAffirmOptions;
    public AfterpayClearpay: SessionPaymentMethodOptionsAfterpayClearpayOptions;
    public Alipay: SessionPaymentMethodOptionsAlipayOptions;
    public AmazonPay: SessionPaymentMethodOptionsAmazonPayOptions;
    public AuBecsDebit: SessionPaymentMethodOptionsAuBecsDebitOptions;
    public BacsDebit: SessionPaymentMethodOptionsBacsDebitOptions;
    public Bancontact: SessionPaymentMethodOptionsBancontactOptions;
    public Boleto: SessionPaymentMethodOptionsBoletoOptions;
    public Card: SessionPaymentMethodOptionsCardOptions;
    public Cashapp: SessionPaymentMethodOptionsCashappOptions;
    public CustomerBalance: SessionPaymentMethodOptionsCustomerBalanceOptions;
    public Eps: SessionPaymentMethodOptionsEpsOptions;
    public Fpx: SessionPaymentMethodOptionsFpxOptions;
    public Giropay: SessionPaymentMethodOptionsGiropayOptions;
    public Grabpay: SessionPaymentMethodOptionsGrabpayOptions;
    public Ideal: SessionPaymentMethodOptionsIdealOptions;
    public Klarna: SessionPaymentMethodOptionsKlarnaOptions;
    public Konbini: SessionPaymentMethodOptionsKonbiniOptions;
    public Link: SessionPaymentMethodOptionsLinkOptions;
    public Mobilepay: SessionPaymentMethodOptionsMobilepayOptions;
    public Multibanco: SessionPaymentMethodOptionsMultibancoOptions;
    public Oxxo: SessionPaymentMethodOptionsOxxoOptions;
    public P24: SessionPaymentMethodOptionsP24Options;
    public Paynow: SessionPaymentMethodOptionsPaynowOptions;
    public Paypal: SessionPaymentMethodOptionsPaypalOptions;
    public Pix: SessionPaymentMethodOptionsPixOptions;
    public RevolutPay: SessionPaymentMethodOptionsRevolutPayOptions;
    public SepaDebit: SessionPaymentMethodOptionsSepaDebitOptions;
    public Sofort: SessionPaymentMethodOptionsSofortOptions;
    public Swish: SessionPaymentMethodOptionsSwishOptions;
    public UsBankAccount: SessionPaymentMethodOptionsUsBankAccountOptions;
    public WechatPay: SessionPaymentMethodOptionsWechatPayOptions;

    public constructor(init?: Partial<SessionPaymentMethodOptionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionPhoneNumberCollectionOptions implements INestedOptions
{
    public Enabled?: boolean;

    public constructor(init?: Partial<SessionPhoneNumberCollectionOptions>) { (Object as any).assign(this, init); }
}

export class SessionSavedPaymentMethodOptionsOptions implements INestedOptions
{
    public AllowRedisplayFilters: string[];
    public PaymentMethodSave: string;

    public constructor(init?: Partial<SessionSavedPaymentMethodOptionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionSetupIntentDataOptions implements INestedOptions, IHasMetadata
{
    public Description: string;
    public Metadata: { [index: string]: string; };
    public OnBehalfOf: string;

    public constructor(init?: Partial<SessionSetupIntentDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingAddressCollectionOptions implements INestedOptions
{
    public AllowedCountries: string[];

    public constructor(init?: Partial<SessionShippingAddressCollectionOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions implements INestedOptions
{
    public Unit: string;
    public Value?: number;

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions implements INestedOptions
{
    public Unit: string;
    public Value?: number;

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataDeliveryEstimateOptions implements INestedOptions
{
    public Maximum: SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions;
    public Minimum: SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions;

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataDeliveryEstimateOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions implements INestedOptions
{
    public Amount?: number;
    public TaxBehavior: string;

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataFixedAmountOptions implements INestedOptions
{
    public Amount?: number;
    public Currency: string;
    public CurrencyOptions: { [index: string]: SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions; };

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataFixedAmountOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionShippingRateDataOptions implements INestedOptions, IHasMetadata
{
    public DeliveryEstimate: SessionShippingOptionShippingRateDataDeliveryEstimateOptions;
    public DisplayName: string;
    public FixedAmount: SessionShippingOptionShippingRateDataFixedAmountOptions;
    public Metadata: { [index: string]: string; };
    public TaxBehavior: string;
    public TaxCode: string;
    public Type: string;

    public constructor(init?: Partial<SessionShippingOptionShippingRateDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionShippingOptionOptions implements INestedOptions
{
    public ShippingRate: string;
    public ShippingRateData: SessionShippingOptionShippingRateDataOptions;

    public constructor(init?: Partial<SessionShippingOptionOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataInvoiceSettingsIssuerOptions implements INestedOptions
{
    public Account: string;
    public Type: string;

    public constructor(init?: Partial<SessionSubscriptionDataInvoiceSettingsIssuerOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataInvoiceSettingsOptions implements INestedOptions
{
    public Issuer: SessionSubscriptionDataInvoiceSettingsIssuerOptions;

    public constructor(init?: Partial<SessionSubscriptionDataInvoiceSettingsOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataTransferDataOptions implements INestedOptions
{
    public AmountPercent?: number;
    public Destination: string;

    public constructor(init?: Partial<SessionSubscriptionDataTransferDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataTrialSettingsEndBehaviorOptions implements INestedOptions
{
    public MissingPaymentMethod: string;

    public constructor(init?: Partial<SessionSubscriptionDataTrialSettingsEndBehaviorOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataTrialSettingsOptions implements INestedOptions
{
    public EndBehavior: SessionSubscriptionDataTrialSettingsEndBehaviorOptions;

    public constructor(init?: Partial<SessionSubscriptionDataTrialSettingsOptions>) { (Object as any).assign(this, init); }
}

export class SessionSubscriptionDataOptions implements INestedOptions, IHasMetadata
{
    public ApplicationFeePercent?: number;
    public BillingCycleAnchor?: string;
    public DefaultTaxRates: string[];
    public Description: string;
    public InvoiceSettings: SessionSubscriptionDataInvoiceSettingsOptions;
    public Metadata: { [index: string]: string; };
    public OnBehalfOf: string;
    public ProrationBehavior: string;
    public TransferData: SessionSubscriptionDataTransferDataOptions;
    public TrialEnd?: string;
    public TrialPeriodDays?: number;
    public TrialSettings: SessionSubscriptionDataTrialSettingsOptions;

    public constructor(init?: Partial<SessionSubscriptionDataOptions>) { (Object as any).assign(this, init); }
}

export class SessionTaxIdCollectionOptions implements INestedOptions
{
    public Enabled?: boolean;
    public Required: string;

    public constructor(init?: Partial<SessionTaxIdCollectionOptions>) { (Object as any).assign(this, init); }
}

export class SessionCreateOptions extends BaseOptions implements IHasMetadata
{
    public AfterExpiration: SessionAfterExpirationOptions;
    public AllowPromotionCodes?: boolean;
    public AutomaticTax: SessionAutomaticTaxOptions;
    public BillingAddressCollection: string;
    public CancelUrl: string;
    public ClientReferenceId: string;
    public ConsentCollection: SessionConsentCollectionOptions;
    public Currency: string;
    public CustomFields: SessionCustomFieldOptions[];
    public CustomText: SessionCustomTextOptions;
    public Customer: string;
    public CustomerCreation: string;
    public CustomerEmail: string;
    public CustomerUpdate: SessionCustomerUpdateOptions;
    public Discounts: SessionDiscountOptions[];
    public ExpiresAt?: string;
    public InvoiceCreation: SessionInvoiceCreationOptions;
    public LineItems: SessionLineItemOptions[];
    public Locale: string;
    public Metadata: { [index: string]: string; };
    public Mode: string;
    public PaymentIntentData: SessionPaymentIntentDataOptions;
    public PaymentMethodCollection: string;
    public PaymentMethodConfiguration: string;
    public PaymentMethodData: SessionPaymentMethodDataOptions;
    public PaymentMethodOptions: SessionPaymentMethodOptionsOptions;
    public PaymentMethodTypes: string[];
    public PhoneNumberCollection: SessionPhoneNumberCollectionOptions;
    public RedirectOnCompletion: string;
    public ReturnUrl: string;
    public SavedPaymentMethodOptions: SessionSavedPaymentMethodOptionsOptions;
    public SetupIntentData: SessionSetupIntentDataOptions;
    public ShippingAddressCollection: SessionShippingAddressCollectionOptions;
    public ShippingOptions: SessionShippingOptionOptions[];
    public SubmitType: string;
    public SubscriptionData: SessionSubscriptionDataOptions;
    public SuccessUrl: string;
    public TaxIdCollection: SessionTaxIdCollectionOptions;
    public UiMode: string;

    public constructor(init?: Partial<SessionCreateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentAutomaticPaymentMethodsOptions implements INestedOptions
{
    public AllowRedirects: string;
    public Enabled?: boolean;

    public constructor(init?: Partial<PaymentIntentAutomaticPaymentMethodsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentMandateDataCustomerAcceptanceOfflineOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentMandateDataCustomerAcceptanceOfflineOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentMandateDataCustomerAcceptanceOnlineOptions implements INestedOptions
{
    public IpAddress: string;
    public UserAgent: string;

    public constructor(init?: Partial<PaymentIntentMandateDataCustomerAcceptanceOnlineOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentMandateDataCustomerAcceptanceOptions implements INestedOptions
{
    public AcceptedAt?: string;
    public Offline: PaymentIntentMandateDataCustomerAcceptanceOfflineOptions;
    public Online: PaymentIntentMandateDataCustomerAcceptanceOnlineOptions;
    public Type: string;

    public constructor(init?: Partial<PaymentIntentMandateDataCustomerAcceptanceOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentMandateDataOptions implements INestedOptions
{
    public CustomerAcceptance: PaymentIntentMandateDataCustomerAcceptanceOptions;

    public constructor(init?: Partial<PaymentIntentMandateDataOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAcssDebitOptions implements INestedOptions
{
    public AccountNumber: string;
    public InstitutionNumber: string;
    public TransitNumber: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAcssDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAffirmOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAffirmOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAfterpayClearpayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAfterpayClearpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAlipayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAlipayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAmazonPayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAmazonPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataAuBecsDebitOptions implements INestedOptions
{
    public AccountNumber: string;
    public BsbNumber: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataAuBecsDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataBacsDebitOptions implements INestedOptions
{
    public AccountNumber: string;
    public SortCode: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataBacsDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataBancontactOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataBancontactOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataBillingDetailsOptions implements INestedOptions
{
    public Address: AddressOptions;
    public Email: string;
    public Name: string;
    public Phone: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataBillingDetailsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataBlikOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataBlikOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataBoletoOptions implements INestedOptions
{
    public TaxId: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataBoletoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataCashappOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataCashappOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataCustomerBalanceOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataCustomerBalanceOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataEpsOptions implements INestedOptions
{
    public Bank: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataEpsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataFpxOptions implements INestedOptions
{
    public AccountHolderType: string;
    public Bank: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataFpxOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataGiropayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataGiropayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataGrabpayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataGrabpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataIdealOptions implements INestedOptions
{
    public Bank: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataIdealOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataInteracPresentOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataInteracPresentOptions>) { (Object as any).assign(this, init); }
}

export class DobOptions implements INestedOptions
{
    public Day?: number;
    public Month?: number;
    public Year?: number;

    public constructor(init?: Partial<DobOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataKlarnaOptions implements INestedOptions
{
    public Dob: DobOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataKlarnaOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataKonbiniOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataKonbiniOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataLinkOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataLinkOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataMobilepayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataMobilepayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataMultibancoOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataMultibancoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataOxxoOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataOxxoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataP24Options implements INestedOptions
{
    public Bank: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataP24Options>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataPaynowOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataPaynowOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataPaypalOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataPaypalOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataPixOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataPixOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataPromptpayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataPromptpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataRadarOptionsOptions implements INestedOptions
{
    public Session: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataRadarOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataRevolutPayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataRevolutPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataSepaDebitOptions implements INestedOptions
{
    public Iban: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataSepaDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataSofortOptions implements INestedOptions
{
    public Country: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataSofortOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataSwishOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataSwishOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataTwintOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataTwintOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataUsBankAccountOptions implements INestedOptions
{
    public AccountHolderType: string;
    public AccountNumber: string;
    public AccountType: string;
    public FinancialConnectionsAccount: string;
    public RoutingNumber: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataUsBankAccountOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataWechatPayOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataWechatPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataZipOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataZipOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodDataOptions implements INestedOptions, IHasMetadata
{
    public AcssDebit: PaymentIntentPaymentMethodDataAcssDebitOptions;
    public Affirm: PaymentIntentPaymentMethodDataAffirmOptions;
    public AfterpayClearpay: PaymentIntentPaymentMethodDataAfterpayClearpayOptions;
    public Alipay: PaymentIntentPaymentMethodDataAlipayOptions;
    public AllowRedisplay: string;
    public AmazonPay: PaymentIntentPaymentMethodDataAmazonPayOptions;
    public AuBecsDebit: PaymentIntentPaymentMethodDataAuBecsDebitOptions;
    public BacsDebit: PaymentIntentPaymentMethodDataBacsDebitOptions;
    public Bancontact: PaymentIntentPaymentMethodDataBancontactOptions;
    public BillingDetails: PaymentIntentPaymentMethodDataBillingDetailsOptions;
    public Blik: PaymentIntentPaymentMethodDataBlikOptions;
    public Boleto: PaymentIntentPaymentMethodDataBoletoOptions;
    public Cashapp: PaymentIntentPaymentMethodDataCashappOptions;
    public CustomerBalance: PaymentIntentPaymentMethodDataCustomerBalanceOptions;
    public Eps: PaymentIntentPaymentMethodDataEpsOptions;
    public Fpx: PaymentIntentPaymentMethodDataFpxOptions;
    public Giropay: PaymentIntentPaymentMethodDataGiropayOptions;
    public Grabpay: PaymentIntentPaymentMethodDataGrabpayOptions;
    public Ideal: PaymentIntentPaymentMethodDataIdealOptions;
    public InteracPresent: PaymentIntentPaymentMethodDataInteracPresentOptions;
    public Klarna: PaymentIntentPaymentMethodDataKlarnaOptions;
    public Konbini: PaymentIntentPaymentMethodDataKonbiniOptions;
    public Link: PaymentIntentPaymentMethodDataLinkOptions;
    public Metadata: { [index: string]: string; };
    public Mobilepay: PaymentIntentPaymentMethodDataMobilepayOptions;
    public Multibanco: PaymentIntentPaymentMethodDataMultibancoOptions;
    public Oxxo: PaymentIntentPaymentMethodDataOxxoOptions;
    public P24: PaymentIntentPaymentMethodDataP24Options;
    public Paynow: PaymentIntentPaymentMethodDataPaynowOptions;
    public Paypal: PaymentIntentPaymentMethodDataPaypalOptions;
    public Pix: PaymentIntentPaymentMethodDataPixOptions;
    public Promptpay: PaymentIntentPaymentMethodDataPromptpayOptions;
    public RadarOptions: PaymentIntentPaymentMethodDataRadarOptionsOptions;
    public RevolutPay: PaymentIntentPaymentMethodDataRevolutPayOptions;
    public SepaDebit: PaymentIntentPaymentMethodDataSepaDebitOptions;
    public Sofort: PaymentIntentPaymentMethodDataSofortOptions;
    public Swish: PaymentIntentPaymentMethodDataSwishOptions;
    public Twint: PaymentIntentPaymentMethodDataTwintOptions;
    public Type: string;
    public UsBankAccount: PaymentIntentPaymentMethodDataUsBankAccountOptions;
    public WechatPay: PaymentIntentPaymentMethodDataWechatPayOptions;
    public Zip: PaymentIntentPaymentMethodDataZipOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodDataOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions implements INestedOptions
{
    public CustomMandateUrl: string;
    public IntervalDescription: string;
    public PaymentSchedule: string;
    public TransactionType: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAcssDebitOptions implements INestedOptions
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAcssDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAffirmOptions implements INestedOptions
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAffirmOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions implements INestedOptions
{
    public CaptureMethod: string;
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAlipayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAlipayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAmazonPayOptions implements INestedOptions
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAmazonPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAuBecsDebitOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAuBecsDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBacsDebitOptions implements INestedOptions
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBacsDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBancontactOptions implements INestedOptions
{
    public PreferredLanguage: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBancontactOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBlikOptions implements INestedOptions
{
    public Code: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBlikOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBoletoOptions implements INestedOptions
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBoletoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions implements INestedOptions
{
    public Count?: number;
    public Interval: string;
    public Type: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardInstallmentsOptions implements INestedOptions
{
    public Enabled?: boolean;
    public Plan: PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardInstallmentsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions implements INestedOptions
{
    public Amount?: number;
    public AmountType: string;
    public Description: string;
    public EndDate?: string;
    public Interval: string;
    public IntervalCount?: number;
    public Reference: string;
    public StartDate?: string;
    public SupportedTypes: string[];

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions implements INestedOptions
{
    public CbAvalgo: string;
    public CbExemption: string;
    public CbScore?: number;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions implements INestedOptions
{
    public CartesBancaires: PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions implements INestedOptions
{
    public AresTransStatus: string;
    public Cryptogram: string;
    public ElectronicCommerceIndicator: string;
    public ExemptionIndicator: string;
    public NetworkOptions: PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions;
    public RequestorChallengeIndicator: string;
    public TransactionId: string;
    public Version: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardOptions implements INestedOptions
{
    public CaptureMethod: string;
    public CvcToken: string;
    public Installments: PaymentIntentPaymentMethodOptionsCardInstallmentsOptions;
    public MandateOptions: PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions;
    public Moto?: boolean;
    public Network: string;
    public RequestExtendedAuthorization: string;
    public RequestIncrementalAuthorization: string;
    public RequestMulticapture: string;
    public RequestOvercapture: string;
    public RequestThreeDSecure: string;
    public RequireCvcRecollection?: boolean;
    public SetupFutureUsage: string;
    public StatementDescriptorSuffixKana: string;
    public StatementDescriptorSuffixKanji: string;
    public ThreeDSecure: PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions implements INestedOptions
{
    public RequestedPriority: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardPresentOptions implements INestedOptions
{
    public RequestExtendedAuthorization?: boolean;
    public RequestIncrementalAuthorizationSupport?: boolean;
    public Routing: PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardPresentOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCashappOptions implements INestedOptions
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCashappOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions implements INestedOptions
{
    public Country: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions implements INestedOptions
{
    public EuBankTransfer: PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions;
    public RequestedAddressTypes: string[];
    public Type: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalanceOptions implements INestedOptions
{
    public BankTransfer: PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions;
    public FundingType: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalanceOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsEpsOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsEpsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsFpxOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsFpxOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsGiropayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsGiropayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsGrabpayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsGrabpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsIdealOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsIdealOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsInteracPresentOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsInteracPresentOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsKlarnaOptions implements INestedOptions
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsKlarnaOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsKonbiniOptions implements INestedOptions
{
    public ConfirmationNumber: string;
    public ExpiresAfterDays?: number;
    public ExpiresAt?: string;
    public ProductDescription: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsKonbiniOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsLinkOptions implements INestedOptions
{
    public CaptureMethod: string;
    public PersistentToken: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsLinkOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsMobilepayOptions implements INestedOptions
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsMobilepayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsMultibancoOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsMultibancoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsOxxoOptions implements INestedOptions
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsOxxoOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsP24Options implements INestedOptions
{
    public SetupFutureUsage: string;
    public TosShownAndAccepted?: boolean;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsP24Options>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPaynowOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPaynowOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPaypalOptions implements INestedOptions
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public Reference: string;
    public RiskCorrelationId: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPaypalOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPixOptions implements INestedOptions
{
    public ExpiresAfterSeconds?: number;
    public ExpiresAt?: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPixOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPromptpayOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPromptpayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsRevolutPayOptions implements INestedOptions
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsRevolutPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions implements INestedOptions
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSepaDebitOptions implements INestedOptions
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSepaDebitOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSofortOptions implements INestedOptions
{
    public PreferredLanguage: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSofortOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSwishOptions implements INestedOptions
{
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSwishOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsTwintOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsTwintOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions implements INestedOptions
{
    public AccountSubcategories: string[];

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions implements INestedOptions
{
    public Filters: PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions;
    public Permissions: string[];
    public Prefetch: string[];
    public ReturnUrl: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions implements INestedOptions
{
    public CollectionMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions implements INestedOptions
{
    public Requested: string[];

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountOptions implements INestedOptions
{
    public FinancialConnections: PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions;
    public MandateOptions: PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions;
    public Networks: PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions;
    public PreferredSettlementSpeed: string;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsWechatPayOptions implements INestedOptions
{
    public AppId: string;
    public Client: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsWechatPayOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsZipOptions implements INestedOptions
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsZipOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsOptions implements INestedOptions
{
    public AcssDebit: PaymentIntentPaymentMethodOptionsAcssDebitOptions;
    public Affirm: PaymentIntentPaymentMethodOptionsAffirmOptions;
    public AfterpayClearpay: PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions;
    public Alipay: PaymentIntentPaymentMethodOptionsAlipayOptions;
    public AmazonPay: PaymentIntentPaymentMethodOptionsAmazonPayOptions;
    public AuBecsDebit: PaymentIntentPaymentMethodOptionsAuBecsDebitOptions;
    public BacsDebit: PaymentIntentPaymentMethodOptionsBacsDebitOptions;
    public Bancontact: PaymentIntentPaymentMethodOptionsBancontactOptions;
    public Blik: PaymentIntentPaymentMethodOptionsBlikOptions;
    public Boleto: PaymentIntentPaymentMethodOptionsBoletoOptions;
    public Card: PaymentIntentPaymentMethodOptionsCardOptions;
    public CardPresent: PaymentIntentPaymentMethodOptionsCardPresentOptions;
    public Cashapp: PaymentIntentPaymentMethodOptionsCashappOptions;
    public CustomerBalance: PaymentIntentPaymentMethodOptionsCustomerBalanceOptions;
    public Eps: PaymentIntentPaymentMethodOptionsEpsOptions;
    public Fpx: PaymentIntentPaymentMethodOptionsFpxOptions;
    public Giropay: PaymentIntentPaymentMethodOptionsGiropayOptions;
    public Grabpay: PaymentIntentPaymentMethodOptionsGrabpayOptions;
    public Ideal: PaymentIntentPaymentMethodOptionsIdealOptions;
    public InteracPresent: PaymentIntentPaymentMethodOptionsInteracPresentOptions;
    public Klarna: PaymentIntentPaymentMethodOptionsKlarnaOptions;
    public Konbini: PaymentIntentPaymentMethodOptionsKonbiniOptions;
    public Link: PaymentIntentPaymentMethodOptionsLinkOptions;
    public Mobilepay: PaymentIntentPaymentMethodOptionsMobilepayOptions;
    public Multibanco: PaymentIntentPaymentMethodOptionsMultibancoOptions;
    public Oxxo: PaymentIntentPaymentMethodOptionsOxxoOptions;
    public P24: PaymentIntentPaymentMethodOptionsP24Options;
    public Paynow: PaymentIntentPaymentMethodOptionsPaynowOptions;
    public Paypal: PaymentIntentPaymentMethodOptionsPaypalOptions;
    public Pix: PaymentIntentPaymentMethodOptionsPixOptions;
    public Promptpay: PaymentIntentPaymentMethodOptionsPromptpayOptions;
    public RevolutPay: PaymentIntentPaymentMethodOptionsRevolutPayOptions;
    public SepaDebit: PaymentIntentPaymentMethodOptionsSepaDebitOptions;
    public Sofort: PaymentIntentPaymentMethodOptionsSofortOptions;
    public Swish: PaymentIntentPaymentMethodOptionsSwishOptions;
    public Twint: PaymentIntentPaymentMethodOptionsTwintOptions;
    public UsBankAccount: PaymentIntentPaymentMethodOptionsUsBankAccountOptions;
    public WechatPay: PaymentIntentPaymentMethodOptionsWechatPayOptions;
    public Zip: PaymentIntentPaymentMethodOptionsZipOptions;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentRadarOptionsOptions implements INestedOptions
{
    public Session: string;

    public constructor(init?: Partial<PaymentIntentRadarOptionsOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentTransferDataOptions implements INestedOptions
{
    public Amount?: number;
    public Destination: string;

    public constructor(init?: Partial<PaymentIntentTransferDataOptions>) { (Object as any).assign(this, init); }
}

export class PaymentIntentCreateOptions extends BaseOptions implements IHasMetadata
{
    public Amount?: number;
    public ApplicationFeeAmount?: number;
    public AutomaticPaymentMethods: PaymentIntentAutomaticPaymentMethodsOptions;
    public CaptureMethod: string;
    public Confirm?: boolean;
    public ConfirmationMethod: string;
    public ConfirmationToken: string;
    public Currency: string;
    public Customer: string;
    public Description: string;
    public ErrorOnRequiresAction?: boolean;
    public Mandate: string;
    public MandateData: PaymentIntentMandateDataOptions;
    public Metadata: { [index: string]: string; };
    public OffSession?: boolean;
    public OnBehalfOf: string;
    public PaymentMethod: string;
    public PaymentMethodConfiguration: string;
    public PaymentMethodData: PaymentIntentPaymentMethodDataOptions;
    public PaymentMethodOptions: PaymentIntentPaymentMethodOptionsOptions;
    public PaymentMethodTypes: string[];
    public RadarOptions: PaymentIntentRadarOptionsOptions;
    public ReceiptEmail: string;
    public ReturnUrl: string;
    public SetupFutureUsage: string;
    public Shipping: ChargeShippingOptions;
    public StatementDescriptor: string;
    public StatementDescriptorSuffix: string;
    public TransferData: PaymentIntentTransferDataOptions;
    public TransferGroup: string;
    public UseStripeSdk?: boolean;

    public constructor(init?: Partial<PaymentIntentCreateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class CustomerCashBalanceSettingsOptions implements INestedOptions
{
    public ReconciliationMode: string;

    public constructor(init?: Partial<CustomerCashBalanceSettingsOptions>) { (Object as any).assign(this, init); }
}

export class CustomerCashBalanceOptions implements INestedOptions
{
    public Settings: CustomerCashBalanceSettingsOptions;

    public constructor(init?: Partial<CustomerCashBalanceOptions>) { (Object as any).assign(this, init); }
}

export class CustomerInvoiceSettingsCustomFieldOptions implements INestedOptions
{
    public Name: string;
    public Value: string;

    public constructor(init?: Partial<CustomerInvoiceSettingsCustomFieldOptions>) { (Object as any).assign(this, init); }
}

export class CustomerInvoiceSettingsRenderingOptionsOptions implements INestedOptions
{
    public AmountTaxDisplay: string;
    public Template: string;

    public constructor(init?: Partial<CustomerInvoiceSettingsRenderingOptionsOptions>) { (Object as any).assign(this, init); }
}

export class CustomerInvoiceSettingsOptions implements INestedOptions
{
    public CustomFields: CustomerInvoiceSettingsCustomFieldOptions[];
    public DefaultPaymentMethod: string;
    public Footer: string;
    public RenderingOptions: CustomerInvoiceSettingsRenderingOptionsOptions;

    public constructor(init?: Partial<CustomerInvoiceSettingsOptions>) { (Object as any).assign(this, init); }
}

export class ShippingOptions implements INestedOptions
{
    public Address: AddressOptions;
    public Name: string;
    public Phone: string;

    public constructor(init?: Partial<ShippingOptions>) { (Object as any).assign(this, init); }
}

export class CardCreateNestedOptions implements INestedOptions, IHasMetadata, IHasObject
{
    public AddressCity: string;
    public AddressCountry: string;
    public AddressLine1: string;
    public AddressLine2: string;
    public AddressState: string;
    public AddressZip: string;
    public Currency: string;
    public Cvc: string;
    public ExpMonth?: number;
    public ExpYear?: number;
    public Metadata: { [index: string]: string; };
    public Name: string;
    public Number: string;
    public Object: string;

    public constructor(init?: Partial<CardCreateNestedOptions>) { (Object as any).assign(this, init); }
}

export class CustomerTaxOptions implements INestedOptions
{
    public IpAddress: string;
    public ValidateLocation: string;

    public constructor(init?: Partial<CustomerTaxOptions>) { (Object as any).assign(this, init); }
}

export class CustomerTaxIdDataOptions implements INestedOptions
{
    public Type: string;
    public Value: string;

    public constructor(init?: Partial<CustomerTaxIdDataOptions>) { (Object as any).assign(this, init); }
}

export class CustomerCreateOptions extends BaseOptions implements IHasMetadata
{
    public Address: AddressOptions;
    public Balance?: number;
    public CashBalance: CustomerCashBalanceOptions;
    public Coupon: string;
    public Description: string;
    public Email: string;
    public InvoicePrefix: string;
    public InvoiceSettings: CustomerInvoiceSettingsOptions;
    public Metadata: { [index: string]: string; };
    public Name: string;
    public NextInvoiceSequence?: number;
    public PaymentMethod: string;
    public Phone: string;
    public Plan: string;
    public PreferredLocales: string[];
    public PromotionCode: string;
    public Shipping: ShippingOptions;
    public Source: AnyOf_2<string, CardCreateNestedOptions>;
    public Tax: CustomerTaxOptions;
    public TaxExempt: string;
    public TaxIdData: CustomerTaxIdDataOptions[];
    public TestClock: string;
    public Validate?: boolean;

    public constructor(init?: Partial<CustomerCreateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class StripeCreatePaymentOptions
{
    public SessionCreateOptions?: SessionCreateOptions;
    public PaymentIntentCreateOptions?: PaymentIntentCreateOptions;
    public CustomerCreateOptions?: CustomerCreateOptions;

    public constructor(init?: Partial<StripeCreatePaymentOptions>) { (Object as any).assign(this, init); }
}

export class RequestOptions
{
    public ApiKey: string;
    public IdempotencyKey: string;
    public StripeAccount: string;
    public StripeContext: string;

    public constructor(init?: Partial<RequestOptions>) { (Object as any).assign(this, init); }
}

export class StripeCreateCheckoutQuery
{
    public CheckoutData: StripeCreatePaymentOptions;
    public RequestOptions: RequestOptions;

    public constructor(init?: Partial<StripeCreateCheckoutQuery>) { (Object as any).assign(this, init); }
}

export class SessionAfterExpirationRecovery extends StripeEntity_1<SessionAfterExpirationRecovery>
{
    public AllowPromotionCodes: boolean;
    public Enabled: boolean;
    public ExpiresAt?: string;
    public Url: string;

    public constructor(init?: Partial<SessionAfterExpirationRecovery>) { super(init); (Object as any).assign(this, init); }
}

export class SessionAfterExpiration extends StripeEntity_1<SessionAfterExpiration>
{
    public Recovery: SessionAfterExpirationRecovery;

    public constructor(init?: Partial<SessionAfterExpiration>) { super(init); (Object as any).assign(this, init); }
}

export class SessionAutomaticTaxLiability extends StripeEntity_1<SessionAutomaticTaxLiability>
{
    public Type: string;

    public constructor(init?: Partial<SessionAutomaticTaxLiability>) { super(init); (Object as any).assign(this, init); }
}

export class SessionAutomaticTax extends StripeEntity_1<SessionAutomaticTax>
{
    public Enabled: boolean;
    public Liability: SessionAutomaticTaxLiability;
    public Status: string;

    public constructor(init?: Partial<SessionAutomaticTax>) { super(init); (Object as any).assign(this, init); }
}

export class SessionConsent extends StripeEntity_1<SessionConsent>
{
    public Promotions: string;
    public TermsOfService: string;

    public constructor(init?: Partial<SessionConsent>) { super(init); (Object as any).assign(this, init); }
}

export class SessionConsentCollectionPaymentMethodReuseAgreement extends StripeEntity_1<SessionConsentCollectionPaymentMethodReuseAgreement>
{
    public Position: string;

    public constructor(init?: Partial<SessionConsentCollectionPaymentMethodReuseAgreement>) { super(init); (Object as any).assign(this, init); }
}

export class SessionConsentCollection extends StripeEntity_1<SessionConsentCollection>
{
    public PaymentMethodReuseAgreement: SessionConsentCollectionPaymentMethodReuseAgreement;
    public Promotions: string;
    public TermsOfService: string;

    public constructor(init?: Partial<SessionConsentCollection>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCurrencyConversion extends StripeEntity_1<SessionCurrencyConversion>
{
    public AmountSubtotal: number;
    public AmountTotal: number;
    public FxRate: number;
    public SourceCurrency: string;

    public constructor(init?: Partial<SessionCurrencyConversion>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomFieldDropdownOption extends StripeEntity_1<SessionCustomFieldDropdownOption>
{
    public Label: string;
    public Value: string;

    public constructor(init?: Partial<SessionCustomFieldDropdownOption>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomFieldDropdown extends StripeEntity_1<SessionCustomFieldDropdown>
{
    public DefaultValue: string;
    public Options: SessionCustomFieldDropdownOption[];
    public Value: string;

    public constructor(init?: Partial<SessionCustomFieldDropdown>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomFieldLabel extends StripeEntity_1<SessionCustomFieldLabel>
{
    public Custom: string;
    public Type: string;

    public constructor(init?: Partial<SessionCustomFieldLabel>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomFieldNumeric extends StripeEntity_1<SessionCustomFieldNumeric>
{
    public DefaultValue: string;
    public MaximumLength?: number;
    public MinimumLength?: number;
    public Value: string;

    public constructor(init?: Partial<SessionCustomFieldNumeric>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomFieldText extends StripeEntity_1<SessionCustomFieldText>
{
    public DefaultValue: string;
    public MaximumLength?: number;
    public MinimumLength?: number;
    public Value: string;

    public constructor(init?: Partial<SessionCustomFieldText>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomField extends StripeEntity_1<SessionCustomField>
{
    public Dropdown: SessionCustomFieldDropdown;
    public Key: string;
    public Label: SessionCustomFieldLabel;
    public Numeric: SessionCustomFieldNumeric;
    public Optional: boolean;
    public Text: SessionCustomFieldText;
    public Type: string;

    public constructor(init?: Partial<SessionCustomField>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomTextAfterSubmit extends StripeEntity_1<SessionCustomTextAfterSubmit>
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextAfterSubmit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomTextShippingAddress extends StripeEntity_1<SessionCustomTextShippingAddress>
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextShippingAddress>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomTextSubmit extends StripeEntity_1<SessionCustomTextSubmit>
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextSubmit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomTextTermsOfServiceAcceptance extends StripeEntity_1<SessionCustomTextTermsOfServiceAcceptance>
{
    public Message: string;

    public constructor(init?: Partial<SessionCustomTextTermsOfServiceAcceptance>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomText extends StripeEntity_1<SessionCustomText>
{
    public AfterSubmit: SessionCustomTextAfterSubmit;
    public ShippingAddress: SessionCustomTextShippingAddress;
    public Submit: SessionCustomTextSubmit;
    public TermsOfServiceAcceptance: SessionCustomTextTermsOfServiceAcceptance;

    public constructor(init?: Partial<SessionCustomText>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomerDetailsTaxId extends StripeEntity_1<SessionCustomerDetailsTaxId>
{
    public Type: string;
    public Value: string;

    public constructor(init?: Partial<SessionCustomerDetailsTaxId>) { super(init); (Object as any).assign(this, init); }
}

export class SessionCustomerDetails extends StripeEntity_1<SessionCustomerDetails>
{
    public Address: Address;
    public Email: string;
    public Name: string;
    public Phone: string;
    public TaxExempt: string;
    public TaxIds: SessionCustomerDetailsTaxId[];

    public constructor(init?: Partial<SessionCustomerDetails>) { super(init); (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataCustomField extends StripeEntity_1<SessionInvoiceCreationInvoiceDataCustomField>
{
    public Name: string;
    public Value: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataCustomField>) { super(init); (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataIssuer extends StripeEntity_1<SessionInvoiceCreationInvoiceDataIssuer>
{
    public Type: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataIssuer>) { super(init); (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceDataRenderingOptions extends StripeEntity_1<SessionInvoiceCreationInvoiceDataRenderingOptions>
{
    public AmountTaxDisplay: string;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceDataRenderingOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SessionInvoiceCreationInvoiceData extends StripeEntity_1<SessionInvoiceCreationInvoiceData> implements IHasMetadata
{
    public CustomFields: SessionInvoiceCreationInvoiceDataCustomField[];
    public Description: string;
    public Footer: string;
    public Issuer: SessionInvoiceCreationInvoiceDataIssuer;
    public Metadata: { [index: string]: string; };
    public RenderingOptions: SessionInvoiceCreationInvoiceDataRenderingOptions;

    public constructor(init?: Partial<SessionInvoiceCreationInvoiceData>) { super(init); (Object as any).assign(this, init); }
}

export class SessionInvoiceCreation extends StripeEntity_1<SessionInvoiceCreation>
{
    public Enabled: boolean;
    public InvoiceData: SessionInvoiceCreationInvoiceData;

    public constructor(init?: Partial<SessionInvoiceCreation>) { super(init); (Object as any).assign(this, init); }
}

export class CouponAppliesTo extends StripeEntity_1<CouponAppliesTo>
{
    public Products: string[];

    public constructor(init?: Partial<CouponAppliesTo>) { super(init); (Object as any).assign(this, init); }
}

export class CouponCurrencyOptions extends StripeEntity_1<CouponCurrencyOptions>
{
    public AmountOff: number;

    public constructor(init?: Partial<CouponCurrencyOptions>) { super(init); (Object as any).assign(this, init); }
}

export class Coupon extends StripeEntity_1<Coupon> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public AmountOff?: number;
    public AppliesTo: CouponAppliesTo;
    public Created: string;
    public Currency: string;
    public CurrencyOptions: { [index: string]: CouponCurrencyOptions; };
    public Deleted?: boolean;
    public Duration: string;
    public DurationInMonths?: number;
    public Livemode: boolean;
    public MaxRedemptions?: number;
    public Metadata: { [index: string]: string; };
    public Name: string;
    public PercentOff?: number;
    public RedeemBy?: string;
    public TimesRedeemed: number;
    public Valid: boolean;

    public constructor(init?: Partial<Coupon>) { super(init); (Object as any).assign(this, init); }
}

export class Discount extends StripeEntity_1<Discount> implements IHasId, IHasObject
{
    public Id: string;
    public Object: string;
    public CheckoutSession: string;
    public Coupon: Coupon;
    public Deleted?: boolean;
    public End?: string;
    public Invoice: string;
    public InvoiceItem: string;
    public Start: string;
    public Subscription: string;
    public SubscriptionItem: string;

    public constructor(init?: Partial<Discount>) { super(init); (Object as any).assign(this, init); }
}

export class LineItemDiscount extends StripeEntity_1<LineItemDiscount>
{
    public Amount: number;
    public Discount: Discount;

    public constructor(init?: Partial<LineItemDiscount>) { super(init); (Object as any).assign(this, init); }
}

export class PriceCurrencyOptionsCustomUnitAmount extends StripeEntity_1<PriceCurrencyOptionsCustomUnitAmount>
{
    public Maximum?: number;
    public Minimum?: number;
    public Preset?: number;

    public constructor(init?: Partial<PriceCurrencyOptionsCustomUnitAmount>) { super(init); (Object as any).assign(this, init); }
}

export class PriceCurrencyOptionsTier extends StripeEntity_1<PriceCurrencyOptionsTier>
{
    public FlatAmount?: number;
    public FlatAmountDecimal?: number;
    public UnitAmount?: number;
    public UnitAmountDecimal?: number;
    public UpTo?: number;

    public constructor(init?: Partial<PriceCurrencyOptionsTier>) { super(init); (Object as any).assign(this, init); }
}

export class PriceCurrencyOptions extends StripeEntity_1<PriceCurrencyOptions>
{
    public CustomUnitAmount: PriceCurrencyOptionsCustomUnitAmount;
    public TaxBehavior: string;
    public Tiers: PriceCurrencyOptionsTier[];
    public UnitAmount?: number;
    public UnitAmountDecimal?: number;

    public constructor(init?: Partial<PriceCurrencyOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PriceCustomUnitAmount extends StripeEntity_1<PriceCustomUnitAmount>
{
    public Maximum?: number;
    public Minimum?: number;
    public Preset?: number;

    public constructor(init?: Partial<PriceCustomUnitAmount>) { super(init); (Object as any).assign(this, init); }
}

export class PriceRecurring extends StripeEntity_1<PriceRecurring>
{
    public AggregateUsage: string;
    public Interval: string;
    public IntervalCount: number;
    public Meter: string;
    public TrialPeriodDays?: number;
    public UsageType: string;

    public constructor(init?: Partial<PriceRecurring>) { super(init); (Object as any).assign(this, init); }
}

export class PriceTier extends StripeEntity_1<PriceTier>
{
    public FlatAmount?: number;
    public FlatAmountDecimal?: number;
    public UnitAmount?: number;
    public UnitAmountDecimal?: number;
    public UpTo?: number;

    public constructor(init?: Partial<PriceTier>) { super(init); (Object as any).assign(this, init); }
}

export class PriceTransformQuantity extends StripeEntity_1<PriceTransformQuantity>
{
    public DivideBy: number;
    public Round: string;

    public constructor(init?: Partial<PriceTransformQuantity>) { super(init); (Object as any).assign(this, init); }
}

export class Price extends StripeEntity_1<Price> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public Active: boolean;
    public BillingScheme: string;
    public Created: string;
    public Currency: string;
    public CurrencyOptions: { [index: string]: PriceCurrencyOptions; };
    public CustomUnitAmount: PriceCustomUnitAmount;
    public Deleted?: boolean;
    public Livemode: boolean;
    public LookupKey: string;
    public Metadata: { [index: string]: string; };
    public Nickname: string;
    public Recurring: PriceRecurring;
    public TaxBehavior: string;
    public Tiers: PriceTier[];
    public TiersMode: string;
    public TransformQuantity: PriceTransformQuantity;
    public Type: string;
    public UnitAmount?: number;
    public UnitAmountDecimal?: number;

    public constructor(init?: Partial<Price>) { super(init); (Object as any).assign(this, init); }
}

export class TaxRate extends StripeEntity_1<TaxRate> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public Active: boolean;
    public Country: string;
    public Created: string;
    public Description: string;
    public DisplayName: string;
    public EffectivePercentage?: number;
    public Inclusive: boolean;
    public Jurisdiction: string;
    public JurisdictionLevel: string;
    public Livemode: boolean;
    public Metadata: { [index: string]: string; };
    public Percentage: number;
    public State: string;
    public TaxType: string;

    public constructor(init?: Partial<TaxRate>) { super(init); (Object as any).assign(this, init); }
}

export class LineItemTax extends StripeEntity_1<LineItemTax>
{
    public Amount: number;
    public Rate: TaxRate;
    public TaxabilityReason: string;
    public TaxableAmount?: number;

    public constructor(init?: Partial<LineItemTax>) { super(init); (Object as any).assign(this, init); }
}

export class LineItem extends StripeEntity_1<LineItem> implements IHasId, IHasObject
{
    public Id: string;
    public Object: string;
    public AmountDiscount: number;
    public AmountSubtotal: number;
    public AmountTax: number;
    public AmountTotal: number;
    public Currency: string;
    public Deleted?: boolean;
    public Description: string;
    public Discounts: LineItemDiscount[];
    public Price: Price;
    public Quantity?: number;
    public Taxes: LineItemTax[];

    public constructor(init?: Partial<LineItem>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodConfigurationDetails extends StripeEntity_1<SessionPaymentMethodConfigurationDetails> implements IHasId
{
    public Id: string;
    public Parent: string;

    public constructor(init?: Partial<SessionPaymentMethodConfigurationDetails>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAcssDebitMandateOptions extends StripeEntity_1<SessionPaymentMethodOptionsAcssDebitMandateOptions>
{
    public CustomMandateUrl: string;
    public DefaultFor: string[];
    public IntervalDescription: string;
    public PaymentSchedule: string;
    public TransactionType: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAcssDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAcssDebit extends StripeEntity_1<SessionPaymentMethodOptionsAcssDebit>
{
    public Currency: string;
    public MandateOptions: SessionPaymentMethodOptionsAcssDebitMandateOptions;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAcssDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAffirm extends StripeEntity_1<SessionPaymentMethodOptionsAffirm>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAffirm>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAfterpayClearpay extends StripeEntity_1<SessionPaymentMethodOptionsAfterpayClearpay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAfterpayClearpay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAlipay extends StripeEntity_1<SessionPaymentMethodOptionsAlipay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAlipay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAmazonPay extends StripeEntity_1<SessionPaymentMethodOptionsAmazonPay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAmazonPay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsAuBecsDebit extends StripeEntity_1<SessionPaymentMethodOptionsAuBecsDebit>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsAuBecsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBacsDebit extends StripeEntity_1<SessionPaymentMethodOptionsBacsDebit>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBacsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBancontact extends StripeEntity_1<SessionPaymentMethodOptionsBancontact>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBancontact>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsBoleto extends StripeEntity_1<SessionPaymentMethodOptionsBoleto>
{
    public ExpiresAfterDays: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsBoleto>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCardInstallments extends StripeEntity_1<SessionPaymentMethodOptionsCardInstallments>
{
    public Enabled: boolean;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCardInstallments>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCard extends StripeEntity_1<SessionPaymentMethodOptionsCard>
{
    public Installments: SessionPaymentMethodOptionsCardInstallments;
    public RequestThreeDSecure: string;
    public SetupFutureUsage: string;
    public StatementDescriptorSuffixKana: string;
    public StatementDescriptorSuffixKanji: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCard>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCashapp extends StripeEntity_1<SessionPaymentMethodOptionsCashapp>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCashapp>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer extends StripeEntity_1<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>
{
    public Country: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalanceBankTransfer extends StripeEntity_1<SessionPaymentMethodOptionsCustomerBalanceBankTransfer>
{
    public EuBankTransfer: SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer;
    public RequestedAddressTypes: string[];
    public Type: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalanceBankTransfer>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsCustomerBalance extends StripeEntity_1<SessionPaymentMethodOptionsCustomerBalance>
{
    public BankTransfer: SessionPaymentMethodOptionsCustomerBalanceBankTransfer;
    public FundingType: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsCustomerBalance>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsEps extends StripeEntity_1<SessionPaymentMethodOptionsEps>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsEps>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsFpx extends StripeEntity_1<SessionPaymentMethodOptionsFpx>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsFpx>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsGiropay extends StripeEntity_1<SessionPaymentMethodOptionsGiropay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsGiropay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsGrabpay extends StripeEntity_1<SessionPaymentMethodOptionsGrabpay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsGrabpay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsIdeal extends StripeEntity_1<SessionPaymentMethodOptionsIdeal>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsIdeal>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsKlarna extends StripeEntity_1<SessionPaymentMethodOptionsKlarna>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsKlarna>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsKonbini extends StripeEntity_1<SessionPaymentMethodOptionsKonbini>
{
    public ExpiresAfterDays?: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsKonbini>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsLink extends StripeEntity_1<SessionPaymentMethodOptionsLink>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsLink>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsMobilepay extends StripeEntity_1<SessionPaymentMethodOptionsMobilepay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsMobilepay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsMultibanco extends StripeEntity_1<SessionPaymentMethodOptionsMultibanco>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsMultibanco>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsOxxo extends StripeEntity_1<SessionPaymentMethodOptionsOxxo>
{
    public ExpiresAfterDays: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsOxxo>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsP24 extends StripeEntity_1<SessionPaymentMethodOptionsP24>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsP24>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPaynow extends StripeEntity_1<SessionPaymentMethodOptionsPaynow>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPaynow>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPaypal extends StripeEntity_1<SessionPaymentMethodOptionsPaypal>
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPaypal>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsPix extends StripeEntity_1<SessionPaymentMethodOptionsPix>
{
    public ExpiresAfterSeconds?: number;

    public constructor(init?: Partial<SessionPaymentMethodOptionsPix>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsRevolutPay extends StripeEntity_1<SessionPaymentMethodOptionsRevolutPay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsRevolutPay>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSepaDebit extends StripeEntity_1<SessionPaymentMethodOptionsSepaDebit>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSepaDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSofort extends StripeEntity_1<SessionPaymentMethodOptionsSofort>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSofort>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsSwish extends StripeEntity_1<SessionPaymentMethodOptionsSwish>
{
    public Reference: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsSwish>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters extends StripeEntity_1<SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
{
    public AccountSubcategories: string[];

    public constructor(init?: Partial<SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsUsBankAccountFinancialConnections extends StripeEntity_1<SessionPaymentMethodOptionsUsBankAccountFinancialConnections>
{
    public Filters: SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters;
    public Permissions: string[];
    public Prefetch: string[];
    public ReturnUrl: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsUsBankAccountFinancialConnections>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptionsUsBankAccount extends StripeEntity_1<SessionPaymentMethodOptionsUsBankAccount>
{
    public FinancialConnections: SessionPaymentMethodOptionsUsBankAccountFinancialConnections;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<SessionPaymentMethodOptionsUsBankAccount>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPaymentMethodOptions extends StripeEntity_1<SessionPaymentMethodOptions>
{
    public AcssDebit: SessionPaymentMethodOptionsAcssDebit;
    public Affirm: SessionPaymentMethodOptionsAffirm;
    public AfterpayClearpay: SessionPaymentMethodOptionsAfterpayClearpay;
    public Alipay: SessionPaymentMethodOptionsAlipay;
    public AmazonPay: SessionPaymentMethodOptionsAmazonPay;
    public AuBecsDebit: SessionPaymentMethodOptionsAuBecsDebit;
    public BacsDebit: SessionPaymentMethodOptionsBacsDebit;
    public Bancontact: SessionPaymentMethodOptionsBancontact;
    public Boleto: SessionPaymentMethodOptionsBoleto;
    public Card: SessionPaymentMethodOptionsCard;
    public Cashapp: SessionPaymentMethodOptionsCashapp;
    public CustomerBalance: SessionPaymentMethodOptionsCustomerBalance;
    public Eps: SessionPaymentMethodOptionsEps;
    public Fpx: SessionPaymentMethodOptionsFpx;
    public Giropay: SessionPaymentMethodOptionsGiropay;
    public Grabpay: SessionPaymentMethodOptionsGrabpay;
    public Ideal: SessionPaymentMethodOptionsIdeal;
    public Klarna: SessionPaymentMethodOptionsKlarna;
    public Konbini: SessionPaymentMethodOptionsKonbini;
    public Link: SessionPaymentMethodOptionsLink;
    public Mobilepay: SessionPaymentMethodOptionsMobilepay;
    public Multibanco: SessionPaymentMethodOptionsMultibanco;
    public Oxxo: SessionPaymentMethodOptionsOxxo;
    public P24: SessionPaymentMethodOptionsP24;
    public Paynow: SessionPaymentMethodOptionsPaynow;
    public Paypal: SessionPaymentMethodOptionsPaypal;
    public Pix: SessionPaymentMethodOptionsPix;
    public RevolutPay: SessionPaymentMethodOptionsRevolutPay;
    public SepaDebit: SessionPaymentMethodOptionsSepaDebit;
    public Sofort: SessionPaymentMethodOptionsSofort;
    public Swish: SessionPaymentMethodOptionsSwish;
    public UsBankAccount: SessionPaymentMethodOptionsUsBankAccount;

    public constructor(init?: Partial<SessionPaymentMethodOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SessionPhoneNumberCollection extends StripeEntity_1<SessionPhoneNumberCollection>
{
    public Enabled: boolean;

    public constructor(init?: Partial<SessionPhoneNumberCollection>) { super(init); (Object as any).assign(this, init); }
}

export class SessionSavedPaymentMethodOptions extends StripeEntity_1<SessionSavedPaymentMethodOptions>
{
    public AllowRedisplayFilters: string[];
    public PaymentMethodRemove: string;
    public PaymentMethodSave: string;

    public constructor(init?: Partial<SessionSavedPaymentMethodOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SessionShippingAddressCollection extends StripeEntity_1<SessionShippingAddressCollection>
{
    public AllowedCountries: string[];

    public constructor(init?: Partial<SessionShippingAddressCollection>) { super(init); (Object as any).assign(this, init); }
}

export class SessionShippingCostTax extends StripeEntity_1<SessionShippingCostTax>
{
    public Amount: number;
    public Rate: TaxRate;
    public TaxabilityReason: string;
    public TaxableAmount?: number;

    public constructor(init?: Partial<SessionShippingCostTax>) { super(init); (Object as any).assign(this, init); }
}

export class SessionShippingCost extends StripeEntity_1<SessionShippingCost>
{
    public AmountSubtotal: number;
    public AmountTax: number;
    public AmountTotal: number;
    public Taxes: SessionShippingCostTax[];

    public constructor(init?: Partial<SessionShippingCost>) { super(init); (Object as any).assign(this, init); }
}

export class SessionShippingDetails extends StripeEntity_1<SessionShippingDetails>
{
    public Address: Address;
    public Carrier: string;
    public Name: string;
    public Phone: string;
    public TrackingNumber: string;

    public constructor(init?: Partial<SessionShippingDetails>) { super(init); (Object as any).assign(this, init); }
}

export class SessionShippingOption extends StripeEntity_1<SessionShippingOption>
{
    public ShippingAmount: number;

    public constructor(init?: Partial<SessionShippingOption>) { super(init); (Object as any).assign(this, init); }
}

export class SessionTaxIdCollection extends StripeEntity_1<SessionTaxIdCollection>
{
    public Enabled: boolean;
    public Required: string;

    public constructor(init?: Partial<SessionTaxIdCollection>) { super(init); (Object as any).assign(this, init); }
}

export class SessionTotalDetailsBreakdownDiscount extends StripeEntity_1<SessionTotalDetailsBreakdownDiscount>
{
    public Amount: number;
    public Discount: Discount;

    public constructor(init?: Partial<SessionTotalDetailsBreakdownDiscount>) { super(init); (Object as any).assign(this, init); }
}

export class SessionTotalDetailsBreakdownTax extends StripeEntity_1<SessionTotalDetailsBreakdownTax>
{
    public Amount: number;
    public Rate: TaxRate;
    public TaxabilityReason: string;
    public TaxableAmount?: number;

    public constructor(init?: Partial<SessionTotalDetailsBreakdownTax>) { super(init); (Object as any).assign(this, init); }
}

export class SessionTotalDetailsBreakdown extends StripeEntity_1<SessionTotalDetailsBreakdown>
{
    public Discounts: SessionTotalDetailsBreakdownDiscount[];
    public Taxes: SessionTotalDetailsBreakdownTax[];

    public constructor(init?: Partial<SessionTotalDetailsBreakdown>) { super(init); (Object as any).assign(this, init); }
}

export class SessionTotalDetails extends StripeEntity_1<SessionTotalDetails>
{
    public AmountDiscount: number;
    public AmountShipping?: number;
    public AmountTax: number;
    public Breakdown: SessionTotalDetailsBreakdown;

    public constructor(init?: Partial<SessionTotalDetails>) { super(init); (Object as any).assign(this, init); }
}

export class Session extends StripeEntity_1<Session> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public AfterExpiration: SessionAfterExpiration;
    public AllowPromotionCodes?: boolean;
    public AmountSubtotal?: number;
    public AmountTotal?: number;
    public AutomaticTax: SessionAutomaticTax;
    public BillingAddressCollection: string;
    public CancelUrl: string;
    public ClientReferenceId: string;
    public ClientSecret: string;
    public Consent: SessionConsent;
    public ConsentCollection: SessionConsentCollection;
    public Created: string;
    public Currency: string;
    public CurrencyConversion: SessionCurrencyConversion;
    public CustomFields: SessionCustomField[];
    public CustomText: SessionCustomText;
    public CustomerCreation: string;
    public CustomerDetails: SessionCustomerDetails;
    public CustomerEmail: string;
    public ExpiresAt: string;
    public InvoiceCreation: SessionInvoiceCreation;
    public LineItems: StripeList<LineItem>;
    public Livemode: boolean;
    public Locale: string;
    public Metadata: { [index: string]: string; };
    public Mode: string;
    public PaymentMethodCollection: string;
    public PaymentMethodConfigurationDetails: SessionPaymentMethodConfigurationDetails;
    public PaymentMethodOptions: SessionPaymentMethodOptions;
    public PaymentMethodTypes: string[];
    public PaymentStatus: string;
    public PhoneNumberCollection: SessionPhoneNumberCollection;
    public RecoveredFrom: string;
    public RedirectOnCompletion: string;
    public ReturnUrl: string;
    public SavedPaymentMethodOptions: SessionSavedPaymentMethodOptions;
    public ShippingAddressCollection: SessionShippingAddressCollection;
    public ShippingCost: SessionShippingCost;
    public ShippingDetails: SessionShippingDetails;
    public ShippingOptions: SessionShippingOption[];
    public Status: string;
    public SubmitType: string;
    public SuccessUrl: string;
    public TaxIdCollection: SessionTaxIdCollection;
    public TotalDetails: SessionTotalDetails;
    public UiMode: string;
    public Url: string;

    public constructor(init?: Partial<Session>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentAmountDetailsTip extends StripeEntity_1<PaymentIntentAmountDetailsTip>
{
    public Amount: number;

    public constructor(init?: Partial<PaymentIntentAmountDetailsTip>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentAmountDetails extends StripeEntity_1<PaymentIntentAmountDetails>
{
    public Tip: PaymentIntentAmountDetailsTip;

    public constructor(init?: Partial<PaymentIntentAmountDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentAutomaticPaymentMethods extends StripeEntity_1<PaymentIntentAutomaticPaymentMethods>
{
    public AllowRedirects: string;
    public Enabled: boolean;

    public constructor(init?: Partial<PaymentIntentAutomaticPaymentMethods>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAcssDebit extends StripeEntity_1<PaymentMethodAcssDebit>
{
    public BankName: string;
    public Fingerprint: string;
    public InstitutionNumber: string;
    public Last4: string;
    public TransitNumber: string;

    public constructor(init?: Partial<PaymentMethodAcssDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAffirm extends StripeEntity_1<PaymentMethodAffirm>
{

    public constructor(init?: Partial<PaymentMethodAffirm>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAfterpayClearpay extends StripeEntity_1<PaymentMethodAfterpayClearpay>
{

    public constructor(init?: Partial<PaymentMethodAfterpayClearpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAlipay extends StripeEntity_1<PaymentMethodAlipay>
{

    public constructor(init?: Partial<PaymentMethodAlipay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAmazonPay extends StripeEntity_1<PaymentMethodAmazonPay>
{

    public constructor(init?: Partial<PaymentMethodAmazonPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodAuBecsDebit extends StripeEntity_1<PaymentMethodAuBecsDebit>
{
    public BsbNumber: string;
    public Fingerprint: string;
    public Last4: string;

    public constructor(init?: Partial<PaymentMethodAuBecsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodBacsDebit extends StripeEntity_1<PaymentMethodBacsDebit>
{
    public Fingerprint: string;
    public Last4: string;
    public SortCode: string;

    public constructor(init?: Partial<PaymentMethodBacsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodBancontact extends StripeEntity_1<PaymentMethodBancontact>
{

    public constructor(init?: Partial<PaymentMethodBancontact>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodBillingDetails extends StripeEntity_1<PaymentMethodBillingDetails>
{
    public Address: Address;
    public Email: string;
    public Name: string;
    public Phone: string;

    public constructor(init?: Partial<PaymentMethodBillingDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodBlik extends StripeEntity_1<PaymentMethodBlik>
{

    public constructor(init?: Partial<PaymentMethodBlik>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodBoleto extends StripeEntity_1<PaymentMethodBoleto>
{
    public TaxId: string;

    public constructor(init?: Partial<PaymentMethodBoleto>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardChecks extends StripeEntity_1<PaymentMethodCardChecks>
{
    public AddressLine1Check: string;
    public AddressPostalCodeCheck: string;
    public CvcCheck: string;

    public constructor(init?: Partial<PaymentMethodCardChecks>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline extends StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline>
{
    public StoredAt?: string;
    public Type: string;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt extends StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt>
{
    public AccountType: string;
    public ApplicationCryptogram: string;
    public ApplicationPreferredName: string;
    public AuthorizationCode: string;
    public AuthorizationResponseCode: string;
    public CardholderVerificationMethod: string;
    public DedicatedFileName: string;
    public TerminalVerificationResults: string;
    public TransactionStatusInformation: string;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet extends StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet>
{
    public Type: string;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent extends StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent>
{
    public AmountAuthorized?: number;
    public Brand: string;
    public BrandProduct: string;
    public CaptureBefore: string;
    public CardholderName: string;
    public Country: string;
    public Description: string;
    public EmvAuthData: string;
    public ExpMonth: number;
    public ExpYear: number;
    public Fingerprint: string;
    public Funding: string;
    public GeneratedCard: string;
    public Iin: string;
    public IncrementalAuthorizationSupported: boolean;
    public Issuer: string;
    public Last4: string;
    public Network: string;
    public NetworkTransactionId: string;
    public Offline: PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline;
    public OvercaptureSupported: boolean;
    public PreferredLocales: string[];
    public ReadMethod: string;
    public Receipt: PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt;
    public Wallet: PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFromPaymentMethodDetails extends StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetails>
{
    public CardPresent: PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent;
    public Type: string;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFromPaymentMethodDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardGeneratedFrom extends StripeEntity_1<PaymentMethodCardGeneratedFrom>
{
    public Charge: string;
    public PaymentMethodDetails: PaymentMethodCardGeneratedFromPaymentMethodDetails;

    public constructor(init?: Partial<PaymentMethodCardGeneratedFrom>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardNetworks extends StripeEntity_1<PaymentMethodCardNetworks>
{
    public Available: string[];
    public Preferred: string;

    public constructor(init?: Partial<PaymentMethodCardNetworks>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardThreeDSecureUsage extends StripeEntity_1<PaymentMethodCardThreeDSecureUsage>
{
    public Supported: boolean;

    public constructor(init?: Partial<PaymentMethodCardThreeDSecureUsage>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletAmexExpressCheckout extends StripeEntity_1<PaymentMethodCardWalletAmexExpressCheckout>
{

    public constructor(init?: Partial<PaymentMethodCardWalletAmexExpressCheckout>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletApplePay extends StripeEntity_1<PaymentMethodCardWalletApplePay>
{

    public constructor(init?: Partial<PaymentMethodCardWalletApplePay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletGooglePay extends StripeEntity_1<PaymentMethodCardWalletGooglePay>
{

    public constructor(init?: Partial<PaymentMethodCardWalletGooglePay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletLink extends StripeEntity_1<PaymentMethodCardWalletLink>
{

    public constructor(init?: Partial<PaymentMethodCardWalletLink>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletMasterpass extends StripeEntity_1<PaymentMethodCardWalletMasterpass>
{
    public BillingAddress: Address;
    public Email: string;
    public Name: string;
    public ShippingAddress: Address;

    public constructor(init?: Partial<PaymentMethodCardWalletMasterpass>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletSamsungPay extends StripeEntity_1<PaymentMethodCardWalletSamsungPay>
{

    public constructor(init?: Partial<PaymentMethodCardWalletSamsungPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWalletVisaCheckout extends StripeEntity_1<PaymentMethodCardWalletVisaCheckout>
{
    public BillingAddress: Address;
    public Email: string;
    public Name: string;
    public ShippingAddress: Address;

    public constructor(init?: Partial<PaymentMethodCardWalletVisaCheckout>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardWallet extends StripeEntity_1<PaymentMethodCardWallet>
{
    public AmexExpressCheckout: PaymentMethodCardWalletAmexExpressCheckout;
    public ApplePay: PaymentMethodCardWalletApplePay;
    public DynamicLast4: string;
    public GooglePay: PaymentMethodCardWalletGooglePay;
    public Link: PaymentMethodCardWalletLink;
    public Masterpass: PaymentMethodCardWalletMasterpass;
    public SamsungPay: PaymentMethodCardWalletSamsungPay;
    public Type: string;
    public VisaCheckout: PaymentMethodCardWalletVisaCheckout;

    public constructor(init?: Partial<PaymentMethodCardWallet>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCard extends StripeEntity_1<PaymentMethodCard>
{
    public Brand: string;
    public Checks: PaymentMethodCardChecks;
    public Country: string;
    public Description: string;
    public DisplayBrand: string;
    public ExpMonth: number;
    public ExpYear: number;
    public Fingerprint: string;
    public Funding: string;
    public GeneratedFrom: PaymentMethodCardGeneratedFrom;
    public Iin: string;
    public Issuer: string;
    public Last4: string;
    public Networks: PaymentMethodCardNetworks;
    public ThreeDSecureUsage: PaymentMethodCardThreeDSecureUsage;
    public Wallet: PaymentMethodCardWallet;

    public constructor(init?: Partial<PaymentMethodCard>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardPresentNetworks extends StripeEntity_1<PaymentMethodCardPresentNetworks>
{
    public Available: string[];
    public Preferred: string;

    public constructor(init?: Partial<PaymentMethodCardPresentNetworks>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardPresentOffline extends StripeEntity_1<PaymentMethodCardPresentOffline>
{
    public StoredAt?: string;
    public Type: string;

    public constructor(init?: Partial<PaymentMethodCardPresentOffline>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardPresentWallet extends StripeEntity_1<PaymentMethodCardPresentWallet>
{
    public Type: string;

    public constructor(init?: Partial<PaymentMethodCardPresentWallet>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCardPresent extends StripeEntity_1<PaymentMethodCardPresent>
{
    public Brand: string;
    public BrandProduct: string;
    public CardholderName: string;
    public Country: string;
    public Description: string;
    public ExpMonth: number;
    public ExpYear: number;
    public Fingerprint: string;
    public Funding: string;
    public Iin: string;
    public Issuer: string;
    public Last4: string;
    public Networks: PaymentMethodCardPresentNetworks;
    public Offline: PaymentMethodCardPresentOffline;
    public PreferredLocales: string[];
    public ReadMethod: string;
    public Wallet: PaymentMethodCardPresentWallet;

    public constructor(init?: Partial<PaymentMethodCardPresent>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCashapp extends StripeEntity_1<PaymentMethodCashapp>
{
    public BuyerId: string;
    public Cashtag: string;

    public constructor(init?: Partial<PaymentMethodCashapp>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodCustomerBalance extends StripeEntity_1<PaymentMethodCustomerBalance>
{

    public constructor(init?: Partial<PaymentMethodCustomerBalance>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodEps extends StripeEntity_1<PaymentMethodEps>
{
    public Bank: string;

    public constructor(init?: Partial<PaymentMethodEps>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodFpx extends StripeEntity_1<PaymentMethodFpx>
{
    public AccountHolderType: string;
    public Bank: string;

    public constructor(init?: Partial<PaymentMethodFpx>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodGiropay extends StripeEntity_1<PaymentMethodGiropay>
{

    public constructor(init?: Partial<PaymentMethodGiropay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodGrabpay extends StripeEntity_1<PaymentMethodGrabpay>
{

    public constructor(init?: Partial<PaymentMethodGrabpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodIdeal extends StripeEntity_1<PaymentMethodIdeal>
{
    public Bank: string;
    public Bic: string;

    public constructor(init?: Partial<PaymentMethodIdeal>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodInteracPresentNetworks extends StripeEntity_1<PaymentMethodInteracPresentNetworks>
{
    public Available: string[];
    public Preferred: string;

    public constructor(init?: Partial<PaymentMethodInteracPresentNetworks>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodInteracPresent extends StripeEntity_1<PaymentMethodInteracPresent>
{
    public Brand: string;
    public CardholderName: string;
    public Country: string;
    public Description: string;
    public ExpMonth: number;
    public ExpYear: number;
    public Fingerprint: string;
    public Funding: string;
    public Iin: string;
    public Issuer: string;
    public Last4: string;
    public Networks: PaymentMethodInteracPresentNetworks;
    public PreferredLocales: string[];
    public ReadMethod: string;

    public constructor(init?: Partial<PaymentMethodInteracPresent>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodKlarnaDob extends StripeEntity_1<PaymentMethodKlarnaDob>
{
    public Day?: number;
    public Month?: number;
    public Year?: number;

    public constructor(init?: Partial<PaymentMethodKlarnaDob>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodKlarna extends StripeEntity_1<PaymentMethodKlarna>
{
    public Dob: PaymentMethodKlarnaDob;

    public constructor(init?: Partial<PaymentMethodKlarna>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodKonbini extends StripeEntity_1<PaymentMethodKonbini>
{

    public constructor(init?: Partial<PaymentMethodKonbini>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodLink extends StripeEntity_1<PaymentMethodLink>
{
    public Email: string;
    public PersistentToken: string;

    public constructor(init?: Partial<PaymentMethodLink>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodMobilepay extends StripeEntity_1<PaymentMethodMobilepay>
{

    public constructor(init?: Partial<PaymentMethodMobilepay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodMultibanco extends StripeEntity_1<PaymentMethodMultibanco>
{

    public constructor(init?: Partial<PaymentMethodMultibanco>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodOxxo extends StripeEntity_1<PaymentMethodOxxo>
{

    public constructor(init?: Partial<PaymentMethodOxxo>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodP24 extends StripeEntity_1<PaymentMethodP24>
{
    public Bank: string;

    public constructor(init?: Partial<PaymentMethodP24>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodPaynow extends StripeEntity_1<PaymentMethodPaynow>
{

    public constructor(init?: Partial<PaymentMethodPaynow>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodPaypal extends StripeEntity_1<PaymentMethodPaypal>
{
    public PayerEmail: string;
    public PayerId: string;

    public constructor(init?: Partial<PaymentMethodPaypal>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodPix extends StripeEntity_1<PaymentMethodPix>
{

    public constructor(init?: Partial<PaymentMethodPix>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodPromptpay extends StripeEntity_1<PaymentMethodPromptpay>
{

    public constructor(init?: Partial<PaymentMethodPromptpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodRadarOptions extends StripeEntity_1<PaymentMethodRadarOptions>
{
    public Session: string;

    public constructor(init?: Partial<PaymentMethodRadarOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodRevolutPay extends StripeEntity_1<PaymentMethodRevolutPay>
{

    public constructor(init?: Partial<PaymentMethodRevolutPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodSepaDebitGeneratedFrom extends StripeEntity_1<PaymentMethodSepaDebitGeneratedFrom>
{

    public constructor(init?: Partial<PaymentMethodSepaDebitGeneratedFrom>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodSepaDebit extends StripeEntity_1<PaymentMethodSepaDebit>
{
    public BankCode: string;
    public BranchCode: string;
    public Country: string;
    public Fingerprint: string;
    public GeneratedFrom: PaymentMethodSepaDebitGeneratedFrom;
    public Last4: string;

    public constructor(init?: Partial<PaymentMethodSepaDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodSofort extends StripeEntity_1<PaymentMethodSofort>
{
    public Country: string;

    public constructor(init?: Partial<PaymentMethodSofort>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodSwish extends StripeEntity_1<PaymentMethodSwish>
{

    public constructor(init?: Partial<PaymentMethodSwish>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodTwint extends StripeEntity_1<PaymentMethodTwint>
{

    public constructor(init?: Partial<PaymentMethodTwint>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodUsBankAccountNetworks extends StripeEntity_1<PaymentMethodUsBankAccountNetworks>
{
    public Preferred: string;
    public Supported: string[];

    public constructor(init?: Partial<PaymentMethodUsBankAccountNetworks>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodUsBankAccountStatusDetailsBlocked extends StripeEntity_1<PaymentMethodUsBankAccountStatusDetailsBlocked>
{
    public NetworkCode: string;
    public Reason: string;

    public constructor(init?: Partial<PaymentMethodUsBankAccountStatusDetailsBlocked>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodUsBankAccountStatusDetails extends StripeEntity_1<PaymentMethodUsBankAccountStatusDetails>
{
    public Blocked: PaymentMethodUsBankAccountStatusDetailsBlocked;

    public constructor(init?: Partial<PaymentMethodUsBankAccountStatusDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodUsBankAccount extends StripeEntity_1<PaymentMethodUsBankAccount>
{
    public AccountHolderType: string;
    public AccountType: string;
    public BankName: string;
    public FinancialConnectionsAccount: string;
    public Fingerprint: string;
    public Last4: string;
    public Networks: PaymentMethodUsBankAccountNetworks;
    public RoutingNumber: string;
    public StatusDetails: PaymentMethodUsBankAccountStatusDetails;

    public constructor(init?: Partial<PaymentMethodUsBankAccount>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodWechatPay extends StripeEntity_1<PaymentMethodWechatPay>
{

    public constructor(init?: Partial<PaymentMethodWechatPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethodZip extends StripeEntity_1<PaymentMethodZip>
{

    public constructor(init?: Partial<PaymentMethodZip>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentMethod extends StripeEntity_1<PaymentMethod> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public AcssDebit: PaymentMethodAcssDebit;
    public Affirm: PaymentMethodAffirm;
    public AfterpayClearpay: PaymentMethodAfterpayClearpay;
    public Alipay: PaymentMethodAlipay;
    public AllowRedisplay: string;
    public AmazonPay: PaymentMethodAmazonPay;
    public AuBecsDebit: PaymentMethodAuBecsDebit;
    public BacsDebit: PaymentMethodBacsDebit;
    public Bancontact: PaymentMethodBancontact;
    public BillingDetails: PaymentMethodBillingDetails;
    public Blik: PaymentMethodBlik;
    public Boleto: PaymentMethodBoleto;
    public Card: PaymentMethodCard;
    public CardPresent: PaymentMethodCardPresent;
    public Cashapp: PaymentMethodCashapp;
    public Created: string;
    public CustomerBalance: PaymentMethodCustomerBalance;
    public Eps: PaymentMethodEps;
    public Fpx: PaymentMethodFpx;
    public Giropay: PaymentMethodGiropay;
    public Grabpay: PaymentMethodGrabpay;
    public Ideal: PaymentMethodIdeal;
    public InteracPresent: PaymentMethodInteracPresent;
    public Klarna: PaymentMethodKlarna;
    public Konbini: PaymentMethodKonbini;
    public Link: PaymentMethodLink;
    public Livemode: boolean;
    public Metadata: { [index: string]: string; };
    public Mobilepay: PaymentMethodMobilepay;
    public Multibanco: PaymentMethodMultibanco;
    public Oxxo: PaymentMethodOxxo;
    public P24: PaymentMethodP24;
    public Paynow: PaymentMethodPaynow;
    public Paypal: PaymentMethodPaypal;
    public Pix: PaymentMethodPix;
    public Promptpay: PaymentMethodPromptpay;
    public RadarOptions: PaymentMethodRadarOptions;
    public RevolutPay: PaymentMethodRevolutPay;
    public SepaDebit: PaymentMethodSepaDebit;
    public Sofort: PaymentMethodSofort;
    public Swish: PaymentMethodSwish;
    public Twint: PaymentMethodTwint;
    public Type: string;
    public UsBankAccount: PaymentMethodUsBankAccount;
    public WechatPay: PaymentMethodWechatPay;
    public Zip: PaymentMethodZip;

    public constructor(init?: Partial<PaymentMethod>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentAutomaticPaymentMethods extends StripeEntity_1<SetupIntentAutomaticPaymentMethods>
{
    public AllowRedirects: string;
    public Enabled?: boolean;

    public constructor(init?: Partial<SetupIntentAutomaticPaymentMethods>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode extends StripeEntity_1<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>
{
    public ExpiresAt: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode extends StripeEntity_1<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode>
{
    public HostedInstructionsUrl: string;
    public MobileAuthUrl: string;
    public QrCode: SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode;

    public constructor(init?: Partial<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextActionRedirectToUrl extends StripeEntity_1<SetupIntentNextActionRedirectToUrl>
{
    public ReturnUrl: string;
    public Url: string;

    public constructor(init?: Partial<SetupIntentNextActionRedirectToUrl>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextActionUseStripeSdk extends StripeEntity_1<SetupIntentNextActionUseStripeSdk>
{

    public constructor(init?: Partial<SetupIntentNextActionUseStripeSdk>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextActionVerifyWithMicrodeposits extends StripeEntity_1<SetupIntentNextActionVerifyWithMicrodeposits>
{
    public ArrivalDate: string;
    public HostedVerificationUrl: string;
    public MicrodepositType: string;

    public constructor(init?: Partial<SetupIntentNextActionVerifyWithMicrodeposits>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentNextAction extends StripeEntity_1<SetupIntentNextAction>
{
    public CashappHandleRedirectOrDisplayQrCode: SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode;
    public RedirectToUrl: SetupIntentNextActionRedirectToUrl;
    public Type: string;
    public UseStripeSdk: SetupIntentNextActionUseStripeSdk;
    public VerifyWithMicrodeposits: SetupIntentNextActionVerifyWithMicrodeposits;

    public constructor(init?: Partial<SetupIntentNextAction>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodConfigurationDetails extends StripeEntity_1<SetupIntentPaymentMethodConfigurationDetails> implements IHasId
{
    public Id: string;
    public Parent: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodConfigurationDetails>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsAcssDebitMandateOptions extends StripeEntity_1<SetupIntentPaymentMethodOptionsAcssDebitMandateOptions>
{
    public CustomMandateUrl: string;
    public DefaultFor: string[];
    public IntervalDescription: string;
    public PaymentSchedule: string;
    public TransactionType: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsAcssDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsAcssDebit extends StripeEntity_1<SetupIntentPaymentMethodOptionsAcssDebit>
{
    public Currency: string;
    public MandateOptions: SetupIntentPaymentMethodOptionsAcssDebitMandateOptions;
    public VerificationMethod: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsAcssDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsAmazonPay extends StripeEntity_1<SetupIntentPaymentMethodOptionsAmazonPay>
{

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsAmazonPay>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsBacsDebitMandateOptions extends StripeEntity_1<SetupIntentPaymentMethodOptionsBacsDebitMandateOptions>
{

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsBacsDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsBacsDebit extends StripeEntity_1<SetupIntentPaymentMethodOptionsBacsDebit>
{
    public MandateOptions: SetupIntentPaymentMethodOptionsBacsDebitMandateOptions;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsBacsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsCardMandateOptions extends StripeEntity_1<SetupIntentPaymentMethodOptionsCardMandateOptions>
{
    public Amount: number;
    public AmountType: string;
    public Currency: string;
    public Description: string;
    public EndDate?: string;
    public Interval: string;
    public IntervalCount?: number;
    public Reference: string;
    public StartDate: string;
    public SupportedTypes: string[];

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsCardMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsCard extends StripeEntity_1<SetupIntentPaymentMethodOptionsCard>
{
    public MandateOptions: SetupIntentPaymentMethodOptionsCardMandateOptions;
    public Network: string;
    public RequestThreeDSecure: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsCard>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsCardPresent extends StripeEntity_1<SetupIntentPaymentMethodOptionsCardPresent>
{

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsCardPresent>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsLink extends StripeEntity_1<SetupIntentPaymentMethodOptionsLink>
{
    public PersistentToken: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsLink>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsPaypal extends StripeEntity_1<SetupIntentPaymentMethodOptionsPaypal>
{
    public BillingAgreementId: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsPaypal>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsSepaDebitMandateOptions extends StripeEntity_1<SetupIntentPaymentMethodOptionsSepaDebitMandateOptions>
{

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsSepaDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsSepaDebit extends StripeEntity_1<SetupIntentPaymentMethodOptionsSepaDebit>
{
    public MandateOptions: SetupIntentPaymentMethodOptionsSepaDebitMandateOptions;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsSepaDebit>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters extends StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
{
    public AccountSubcategories: string[];

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections extends StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections>
{
    public Filters: SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters;
    public Permissions: string[];
    public Prefetch: string[];
    public ReturnUrl: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions extends StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions>
{
    public CollectionMethod: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptionsUsBankAccount extends StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccount>
{
    public FinancialConnections: SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections;
    public MandateOptions: SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions;
    public VerificationMethod: string;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptionsUsBankAccount>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntentPaymentMethodOptions extends StripeEntity_1<SetupIntentPaymentMethodOptions>
{
    public AcssDebit: SetupIntentPaymentMethodOptionsAcssDebit;
    public AmazonPay: SetupIntentPaymentMethodOptionsAmazonPay;
    public BacsDebit: SetupIntentPaymentMethodOptionsBacsDebit;
    public Card: SetupIntentPaymentMethodOptionsCard;
    public CardPresent: SetupIntentPaymentMethodOptionsCardPresent;
    public Link: SetupIntentPaymentMethodOptionsLink;
    public Paypal: SetupIntentPaymentMethodOptionsPaypal;
    public SepaDebit: SetupIntentPaymentMethodOptionsSepaDebit;
    public UsBankAccount: SetupIntentPaymentMethodOptionsUsBankAccount;

    public constructor(init?: Partial<SetupIntentPaymentMethodOptions>) { super(init); (Object as any).assign(this, init); }
}

export class SetupIntent extends StripeEntity_1<SetupIntent> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public AttachToSelf: boolean;
    public AutomaticPaymentMethods: SetupIntentAutomaticPaymentMethods;
    public CancellationReason: string;
    public ClientSecret: string;
    public Created: string;
    public Description: string;
    public FlowDirections: string[];
    public LastSetupError: StripeError;
    public Livemode: boolean;
    public Metadata: { [index: string]: string; };
    public NextAction: SetupIntentNextAction;
    public PaymentMethodConfigurationDetails: SetupIntentPaymentMethodConfigurationDetails;
    public PaymentMethodOptions: SetupIntentPaymentMethodOptions;
    public PaymentMethodTypes: string[];
    public Status: string;
    public Usage: string;

    public constructor(init?: Partial<SetupIntent>) { super(init); (Object as any).assign(this, init); }
}

export interface IPaymentSource extends IStripeEntity, IHasId, IHasObject
{
}

export class StripeError extends StripeEntity_1<StripeError>
{
    public Charge: string;
    public Code: string;
    public DeclineCode: string;
    public DocUrl: string;
    public Message: string;
    public Param: string;
    public PaymentIntent: PaymentIntent;
    public PaymentMethod: PaymentMethod;
    public PaymentMethodType: string;
    public RequestLogUrl: string;
    public SetupIntent: SetupIntent;
    public Source: IPaymentSource;
    public Type: string;
    public Error: string;
    public ErrorDescription: string;

    public constructor(init?: Partial<StripeError>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionAlipayHandleRedirect extends StripeEntity_1<PaymentIntentNextActionAlipayHandleRedirect>
{
    public NativeData: string;
    public NativeUrl: string;
    public ReturnUrl: string;
    public Url: string;

    public constructor(init?: Partial<PaymentIntentNextActionAlipayHandleRedirect>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionBoletoDisplayDetails extends StripeEntity_1<PaymentIntentNextActionBoletoDisplayDetails>
{
    public ExpiresAt?: string;
    public HostedVoucherUrl: string;
    public Number: string;
    public Pdf: string;

    public constructor(init?: Partial<PaymentIntentNextActionBoletoDisplayDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionCardAwaitNotification extends StripeEntity_1<PaymentIntentNextActionCardAwaitNotification>
{
    public ChargeAttemptAt?: string;
    public CustomerApprovalRequired?: boolean;

    public constructor(init?: Partial<PaymentIntentNextActionCardAwaitNotification>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode extends StripeEntity_1<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>
{
    public ExpiresAt: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>
{
    public HostedInstructionsUrl: string;
    public MobileAuthUrl: string;
    public QrCode: PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode;

    public constructor(init?: Partial<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba>
{
    public AccountNumber: string;
    public BankName: string;
    public RoutingNumber: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban>
{
    public AccountHolderName: string;
    public Bic: string;
    public Country: string;
    public Iban: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode>
{
    public AccountHolderName: string;
    public AccountNumber: string;
    public SortCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei>
{
    public BankCode: string;
    public BankName: string;
    public Clabe: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift>
{
    public AccountNumber: string;
    public BankName: string;
    public SwiftCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin>
{
    public AccountHolderName: string;
    public AccountNumber: string;
    public AccountType: string;
    public BankCode: string;
    public BankName: string;
    public BranchCode: string;
    public BranchName: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>
{
    public Aba: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba;
    public Iban: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban;
    public SortCode: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode;
    public Spei: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei;
    public SupportedNetworks: string[];
    public Swift: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift;
    public Type: string;
    public Zengin: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionDisplayBankTransferInstructions extends StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructions>
{
    public AmountRemaining?: number;
    public Currency: string;
    public FinancialAddresses: PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress[];
    public HostedInstructionsUrl: string;
    public Reference: string;
    public Type: string;

    public constructor(init?: Partial<PaymentIntentNextActionDisplayBankTransferInstructions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart>
{
    public ConfirmationNumber: string;
    public PaymentCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson>
{
    public ConfirmationNumber: string;
    public PaymentCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop>
{
    public ConfirmationNumber: string;
    public PaymentCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart>
{
    public ConfirmationNumber: string;
    public PaymentCode: string;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetailsStores extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStores>
{
    public Familymart: PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart;
    public Lawson: PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson;
    public Ministop: PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop;
    public Seicomart: PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetailsStores>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionKonbiniDisplayDetails extends StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetails>
{
    public ExpiresAt: string;
    public HostedVoucherUrl: string;
    public Stores: PaymentIntentNextActionKonbiniDisplayDetailsStores;

    public constructor(init?: Partial<PaymentIntentNextActionKonbiniDisplayDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionMultibancoDisplayDetails extends StripeEntity_1<PaymentIntentNextActionMultibancoDisplayDetails>
{
    public Entity: string;
    public ExpiresAt?: string;
    public HostedVoucherUrl: string;
    public Reference: string;

    public constructor(init?: Partial<PaymentIntentNextActionMultibancoDisplayDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionOxxoDisplayDetails extends StripeEntity_1<PaymentIntentNextActionOxxoDisplayDetails>
{
    public ExpiresAfter?: string;
    public HostedVoucherUrl: string;
    public Number: string;

    public constructor(init?: Partial<PaymentIntentNextActionOxxoDisplayDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionPaynowDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionPaynowDisplayQrCode>
{
    public Data: string;
    public HostedInstructionsUrl: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionPaynowDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionPixDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionPixDisplayQrCode>
{
    public Data: string;
    public ExpiresAt: string;
    public HostedInstructionsUrl: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionPixDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionPromptpayDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionPromptpayDisplayQrCode>
{
    public Data: string;
    public HostedInstructionsUrl: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionPromptpayDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionRedirectToUrl extends StripeEntity_1<PaymentIntentNextActionRedirectToUrl>
{
    public ReturnUrl: string;
    public Url: string;

    public constructor(init?: Partial<PaymentIntentNextActionRedirectToUrl>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode extends StripeEntity_1<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode>
{
    public Data: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode>
{
    public HostedInstructionsUrl: string;
    public MobileAuthUrl: string;
    public QrCode: PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode;

    public constructor(init?: Partial<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionUseStripeSdk extends StripeEntity_1<PaymentIntentNextActionUseStripeSdk>
{

    public constructor(init?: Partial<PaymentIntentNextActionUseStripeSdk>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionVerifyWithMicrodeposits extends StripeEntity_1<PaymentIntentNextActionVerifyWithMicrodeposits>
{
    public ArrivalDate: string;
    public HostedVerificationUrl: string;
    public MicrodepositType: string;

    public constructor(init?: Partial<PaymentIntentNextActionVerifyWithMicrodeposits>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionWechatPayDisplayQrCode extends StripeEntity_1<PaymentIntentNextActionWechatPayDisplayQrCode>
{
    public Data: string;
    public HostedInstructionsUrl: string;
    public ImageDataUrl: string;
    public ImageUrlPng: string;
    public ImageUrlSvg: string;

    public constructor(init?: Partial<PaymentIntentNextActionWechatPayDisplayQrCode>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionWechatPayRedirectToAndroidApp extends StripeEntity_1<PaymentIntentNextActionWechatPayRedirectToAndroidApp>
{
    public AppId: string;
    public NonceStr: string;
    public Package: string;
    public PartnerId: string;
    public PrepayId: string;
    public Sign: string;
    public Timestamp: string;

    public constructor(init?: Partial<PaymentIntentNextActionWechatPayRedirectToAndroidApp>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextActionWechatPayRedirectToIosApp extends StripeEntity_1<PaymentIntentNextActionWechatPayRedirectToIosApp>
{
    public NativeUrl: string;

    public constructor(init?: Partial<PaymentIntentNextActionWechatPayRedirectToIosApp>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentNextAction extends StripeEntity_1<PaymentIntentNextAction>
{
    public AlipayHandleRedirect: PaymentIntentNextActionAlipayHandleRedirect;
    public BoletoDisplayDetails: PaymentIntentNextActionBoletoDisplayDetails;
    public CardAwaitNotification: PaymentIntentNextActionCardAwaitNotification;
    public CashappHandleRedirectOrDisplayQrCode: PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode;
    public DisplayBankTransferInstructions: PaymentIntentNextActionDisplayBankTransferInstructions;
    public KonbiniDisplayDetails: PaymentIntentNextActionKonbiniDisplayDetails;
    public MultibancoDisplayDetails: PaymentIntentNextActionMultibancoDisplayDetails;
    public OxxoDisplayDetails: PaymentIntentNextActionOxxoDisplayDetails;
    public PaynowDisplayQrCode: PaymentIntentNextActionPaynowDisplayQrCode;
    public PixDisplayQrCode: PaymentIntentNextActionPixDisplayQrCode;
    public PromptpayDisplayQrCode: PaymentIntentNextActionPromptpayDisplayQrCode;
    public RedirectToUrl: PaymentIntentNextActionRedirectToUrl;
    public SwishHandleRedirectOrDisplayQrCode: PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode;
    public Type: string;
    public UseStripeSdk: PaymentIntentNextActionUseStripeSdk;
    public VerifyWithMicrodeposits: PaymentIntentNextActionVerifyWithMicrodeposits;
    public WechatPayDisplayQrCode: PaymentIntentNextActionWechatPayDisplayQrCode;
    public WechatPayRedirectToAndroidApp: PaymentIntentNextActionWechatPayRedirectToAndroidApp;
    public WechatPayRedirectToIosApp: PaymentIntentNextActionWechatPayRedirectToIosApp;

    public constructor(init?: Partial<PaymentIntentNextAction>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodConfigurationDetails extends StripeEntity_1<PaymentIntentPaymentMethodConfigurationDetails> implements IHasId
{
    public Id: string;
    public Parent: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodConfigurationDetails>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions>
{
    public CustomMandateUrl: string;
    public IntervalDescription: string;
    public PaymentSchedule: string;
    public TransactionType: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAcssDebit extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAcssDebit>
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAcssDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAffirm extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAffirm>
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAffirm>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAfterpayClearpay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAfterpayClearpay>
{
    public CaptureMethod: string;
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAfterpayClearpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAlipay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAlipay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAlipay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAmazonPay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAmazonPay>
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAmazonPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsAuBecsDebit extends StripeEntity_1<PaymentIntentPaymentMethodOptionsAuBecsDebit>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsAuBecsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions>
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBacsDebit extends StripeEntity_1<PaymentIntentPaymentMethodOptionsBacsDebit>
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBacsDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBancontact extends StripeEntity_1<PaymentIntentPaymentMethodOptionsBancontact>
{
    public PreferredLanguage: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBancontact>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBlik extends StripeEntity_1<PaymentIntentPaymentMethodOptionsBlik>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBlik>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsBoleto extends StripeEntity_1<PaymentIntentPaymentMethodOptionsBoleto>
{
    public ExpiresAfterDays: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsBoleto>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardInstallmentsPlan extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>
{
    public Count?: number;
    public Interval: string;
    public Type: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardInstallments extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCardInstallments>
{
    public AvailablePlans: PaymentIntentPaymentMethodOptionsCardInstallmentsPlan[];
    public Enabled: boolean;
    public Plan: PaymentIntentPaymentMethodOptionsCardInstallmentsPlan;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardInstallments>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardMandateOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCardMandateOptions>
{
    public Amount: number;
    public AmountType: string;
    public Description: string;
    public EndDate?: string;
    public Interval: string;
    public IntervalCount?: number;
    public Reference: string;
    public StartDate: string;
    public SupportedTypes: string[];

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCard extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCard>
{
    public CaptureMethod: string;
    public Installments: PaymentIntentPaymentMethodOptionsCardInstallments;
    public MandateOptions: PaymentIntentPaymentMethodOptionsCardMandateOptions;
    public Network: string;
    public RequestExtendedAuthorization: string;
    public RequestIncrementalAuthorization: string;
    public RequestMulticapture: string;
    public RequestOvercapture: string;
    public RequestThreeDSecure: string;
    public RequireCvcRecollection: boolean;
    public SetupFutureUsage: string;
    public StatementDescriptorSuffixKana: string;
    public StatementDescriptorSuffixKanji: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCard>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardPresentRouting extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCardPresentRouting>
{
    public RequestedPriority: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardPresentRouting>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCardPresent extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCardPresent>
{
    public RequestExtendedAuthorization?: boolean;
    public RequestIncrementalAuthorizationSupport?: boolean;
    public Routing: PaymentIntentPaymentMethodOptionsCardPresentRouting;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCardPresent>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCashapp extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCashapp>
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCashapp>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>
{
    public Country: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer>
{
    public EuBankTransfer: PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer;
    public RequestedAddressTypes: string[];
    public Type: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsCustomerBalance extends StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalance>
{
    public BankTransfer: PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer;
    public FundingType: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsCustomerBalance>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsEps extends StripeEntity_1<PaymentIntentPaymentMethodOptionsEps>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsEps>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsFpx extends StripeEntity_1<PaymentIntentPaymentMethodOptionsFpx>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsFpx>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsGiropay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsGiropay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsGiropay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsGrabpay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsGrabpay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsGrabpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsIdeal extends StripeEntity_1<PaymentIntentPaymentMethodOptionsIdeal>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsIdeal>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsInteracPresent extends StripeEntity_1<PaymentIntentPaymentMethodOptionsInteracPresent>
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsInteracPresent>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsKlarna extends StripeEntity_1<PaymentIntentPaymentMethodOptionsKlarna>
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsKlarna>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsKonbini extends StripeEntity_1<PaymentIntentPaymentMethodOptionsKonbini>
{
    public ConfirmationNumber: string;
    public ExpiresAfterDays?: number;
    public ExpiresAt?: string;
    public ProductDescription: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsKonbini>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsLink extends StripeEntity_1<PaymentIntentPaymentMethodOptionsLink>
{
    public CaptureMethod: string;
    public PersistentToken: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsLink>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsMobilepay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsMobilepay>
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsMobilepay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsMultibanco extends StripeEntity_1<PaymentIntentPaymentMethodOptionsMultibanco>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsMultibanco>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsOxxo extends StripeEntity_1<PaymentIntentPaymentMethodOptionsOxxo>
{
    public ExpiresAfterDays: number;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsOxxo>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsP24 extends StripeEntity_1<PaymentIntentPaymentMethodOptionsP24>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsP24>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPaynow extends StripeEntity_1<PaymentIntentPaymentMethodOptionsPaynow>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPaynow>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPaypal extends StripeEntity_1<PaymentIntentPaymentMethodOptionsPaypal>
{
    public CaptureMethod: string;
    public PreferredLocale: string;
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPaypal>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPix extends StripeEntity_1<PaymentIntentPaymentMethodOptionsPix>
{
    public ExpiresAfterSeconds?: number;
    public ExpiresAt?: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPix>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsPromptpay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsPromptpay>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsPromptpay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsRevolutPay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsRevolutPay>
{
    public CaptureMethod: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsRevolutPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions>
{

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSepaDebit extends StripeEntity_1<PaymentIntentPaymentMethodOptionsSepaDebit>
{
    public MandateOptions: PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSepaDebit>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSofort extends StripeEntity_1<PaymentIntentPaymentMethodOptionsSofort>
{
    public PreferredLanguage: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSofort>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsSwish extends StripeEntity_1<PaymentIntentPaymentMethodOptionsSwish>
{
    public Reference: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsSwish>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsTwint extends StripeEntity_1<PaymentIntentPaymentMethodOptionsTwint>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsTwint>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters extends StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
{
    public AccountSubcategories: string[];

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections extends StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections>
{
    public Filters: PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters;
    public Permissions: string[];
    public Prefetch: string[];
    public ReturnUrl: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions>
{
    public CollectionMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsUsBankAccount extends StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccount>
{
    public FinancialConnections: PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections;
    public MandateOptions: PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions;
    public PreferredSettlementSpeed: string;
    public SetupFutureUsage: string;
    public VerificationMethod: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsUsBankAccount>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsWechatPay extends StripeEntity_1<PaymentIntentPaymentMethodOptionsWechatPay>
{
    public AppId: string;
    public Client: string;
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsWechatPay>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptionsZip extends StripeEntity_1<PaymentIntentPaymentMethodOptionsZip>
{
    public SetupFutureUsage: string;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptionsZip>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentPaymentMethodOptions extends StripeEntity_1<PaymentIntentPaymentMethodOptions>
{
    public AcssDebit: PaymentIntentPaymentMethodOptionsAcssDebit;
    public Affirm: PaymentIntentPaymentMethodOptionsAffirm;
    public AfterpayClearpay: PaymentIntentPaymentMethodOptionsAfterpayClearpay;
    public Alipay: PaymentIntentPaymentMethodOptionsAlipay;
    public AmazonPay: PaymentIntentPaymentMethodOptionsAmazonPay;
    public AuBecsDebit: PaymentIntentPaymentMethodOptionsAuBecsDebit;
    public BacsDebit: PaymentIntentPaymentMethodOptionsBacsDebit;
    public Bancontact: PaymentIntentPaymentMethodOptionsBancontact;
    public Blik: PaymentIntentPaymentMethodOptionsBlik;
    public Boleto: PaymentIntentPaymentMethodOptionsBoleto;
    public Card: PaymentIntentPaymentMethodOptionsCard;
    public CardPresent: PaymentIntentPaymentMethodOptionsCardPresent;
    public Cashapp: PaymentIntentPaymentMethodOptionsCashapp;
    public CustomerBalance: PaymentIntentPaymentMethodOptionsCustomerBalance;
    public Eps: PaymentIntentPaymentMethodOptionsEps;
    public Fpx: PaymentIntentPaymentMethodOptionsFpx;
    public Giropay: PaymentIntentPaymentMethodOptionsGiropay;
    public Grabpay: PaymentIntentPaymentMethodOptionsGrabpay;
    public Ideal: PaymentIntentPaymentMethodOptionsIdeal;
    public InteracPresent: PaymentIntentPaymentMethodOptionsInteracPresent;
    public Klarna: PaymentIntentPaymentMethodOptionsKlarna;
    public Konbini: PaymentIntentPaymentMethodOptionsKonbini;
    public Link: PaymentIntentPaymentMethodOptionsLink;
    public Mobilepay: PaymentIntentPaymentMethodOptionsMobilepay;
    public Multibanco: PaymentIntentPaymentMethodOptionsMultibanco;
    public Oxxo: PaymentIntentPaymentMethodOptionsOxxo;
    public P24: PaymentIntentPaymentMethodOptionsP24;
    public Paynow: PaymentIntentPaymentMethodOptionsPaynow;
    public Paypal: PaymentIntentPaymentMethodOptionsPaypal;
    public Pix: PaymentIntentPaymentMethodOptionsPix;
    public Promptpay: PaymentIntentPaymentMethodOptionsPromptpay;
    public RevolutPay: PaymentIntentPaymentMethodOptionsRevolutPay;
    public SepaDebit: PaymentIntentPaymentMethodOptionsSepaDebit;
    public Sofort: PaymentIntentPaymentMethodOptionsSofort;
    public Swish: PaymentIntentPaymentMethodOptionsSwish;
    public Twint: PaymentIntentPaymentMethodOptionsTwint;
    public UsBankAccount: PaymentIntentPaymentMethodOptionsUsBankAccount;
    public WechatPay: PaymentIntentPaymentMethodOptionsWechatPay;
    public Zip: PaymentIntentPaymentMethodOptionsZip;

    public constructor(init?: Partial<PaymentIntentPaymentMethodOptions>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentProcessingCardCustomerNotification extends StripeEntity_1<PaymentIntentProcessingCardCustomerNotification>
{
    public ApprovalRequested?: boolean;
    public CompletesAt?: string;

    public constructor(init?: Partial<PaymentIntentProcessingCardCustomerNotification>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentProcessingCard extends StripeEntity_1<PaymentIntentProcessingCard>
{
    public CustomerNotification: PaymentIntentProcessingCardCustomerNotification;

    public constructor(init?: Partial<PaymentIntentProcessingCard>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentProcessing extends StripeEntity_1<PaymentIntentProcessing>
{
    public Card: PaymentIntentProcessingCard;
    public Type: string;

    public constructor(init?: Partial<PaymentIntentProcessing>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntentTransferData extends StripeEntity_1<PaymentIntentTransferData>
{
    public Amount: number;

    public constructor(init?: Partial<PaymentIntentTransferData>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentIntent extends StripeEntity_1<PaymentIntent> implements IHasId, IHasMetadata, IHasObject
{
    public Id: string;
    public Object: string;
    public Amount: number;
    public AmountCapturable: number;
    public AmountDetails: PaymentIntentAmountDetails;
    public AmountReceived: number;
    public ApplicationFeeAmount?: number;
    public AutomaticPaymentMethods: PaymentIntentAutomaticPaymentMethods;
    public CanceledAt?: string;
    public CancellationReason: string;
    public CaptureMethod: string;
    public ClientSecret: string;
    public ConfirmationMethod: string;
    public Created: string;
    public Currency: string;
    public Description: string;
    public LastPaymentError: StripeError;
    public Livemode: boolean;
    public Metadata: { [index: string]: string; };
    public NextAction: PaymentIntentNextAction;
    public PaymentMethodConfigurationDetails: PaymentIntentPaymentMethodConfigurationDetails;
    public PaymentMethodOptions: PaymentIntentPaymentMethodOptions;
    public PaymentMethodTypes: string[];
    public Processing: PaymentIntentProcessing;
    public ReceiptEmail: string;
    public SetupFutureUsage: string;
    public Shipping: Shipping;
    public StatementDescriptor: string;
    public StatementDescriptorSuffix: string;
    public Status: string;
    public TransferData: PaymentIntentTransferData;
    public TransferGroup: string;

    public constructor(init?: Partial<PaymentIntent>) { super(init); (Object as any).assign(this, init); }
}

export class CustomSessionData
{
    public Session: Session;
    public LineItems: LineItem[];
    public PaymentIntent?: PaymentIntent;

    public constructor(init?: Partial<CustomSessionData>) { (Object as any).assign(this, init); }
}

export class CustomPaymentIntentData
{
    public PaymentIntent: PaymentIntent;

    public constructor(init?: Partial<CustomPaymentIntentData>) { (Object as any).assign(this, init); }
}

export class CustomCheckoutData
{
    public CustomSessionData: CustomSessionData;
    public CustomPaymentIntentData: CustomPaymentIntentData;

    public constructor(init?: Partial<CustomCheckoutData>) { (Object as any).assign(this, init); }
}

export interface IPaysonPaymentCheckout1
{
}

export class PaymentLog extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public InternalReferenceId: string;

    // @Required()
    public ArticleTypeId: number;

    public PaymentReferenceId: string;
    public PaymentProviderId?: number;
    public OrderItemReferenceId: string;
    public Amount?: number;
    public VAT?: number;
    public AmountCredited?: number;
    public Comments: string;
    // @Required()
    public Created: string;

    // @Required()
    public Updated: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PaymentLog>) { super(init); (Object as any).assign(this, init); }
}

export class PayableEntity extends BaseModel
{
    // @Ignore()
    public DbFactory: IDbConnectionFactory;

    // @Ignore()
    public QvicklyPaymentManager: IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>;

    // @Ignore()
    public Payson2PaymentManager: IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>;

    // @Ignore()
    public StripePaymentManager: IBokameraPaymentManager<StripeCreateCheckoutQuery, CustomCheckoutData, CustomCheckoutData>;

    // @Ignore()
    public PaysonPaymentCheckout1: IPaysonPaymentCheckout1;

    // @Ignore()
    public Logger: ILogger<PayableEntity>;

    // @Ignore()
    public InternalReferenceId: string;

    // @Ignore()
    public PaymentLog: PaymentLog[];

    public CompanyId: string;
    public PriceVat?: number;
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    // @Ignore()
    public Customer: Customer;

    // @Ignore()
    public Customers: Customer[];

    // @Ignore()
    public Company: Company;

    public constructor(init?: Partial<PayableEntity>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeStatus extends BaseModel
{
    // @Required()
    public Name: string;

    public Description: string;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<RebateCodeStatus>) { super(init); (Object as any).assign(this, init); }
}

export class ArticleServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public ServiceId: number;

    // @Required()
    public ArticleId: number;

    public constructor(init?: Partial<ArticleServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export enum ArticleTypeEnum
{
    ServiceArticle = 1,
    StandAloneArticle = 2,
    RebateCodePunchTicketArticle = 3,
    RebateCodeGiftCardArticle = 4,
    RebateCodeValueCardArticle = 5,
}

export class Article extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    public Company: Company;
    public CurrencyInfo: Currency;
    public ArticleServiceRelations: ArticleServiceRelation[];
    // @Ignore()
    public ServiceIds: number[];

    // @Ignore()
    public ArticleType: ArticleTypeEnum;

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public ArticleTypeId: number;

    public Description: string;
    public ImageUrl: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public Amount: number;

    // @Required()
    public Price: number;

    public VAT?: number;
    // @Required()
    // @StringLength(50)
    public CurrencyId: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<Article>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeDayOfWeekRelation extends BaseModel
{
    // @Ignore()
    public DayOfWeek: BokaMeraDayOfWeek;

    // @Required()
    public DayOfWeekId: number;

    // @Required()
    public RebateCodeId: number;

    // @Required()
    public CompanyId: string;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeDayOfWeekRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public ServiceId: number;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeBookingPriceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public PriceId: number;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;

    public constructor(init?: Partial<RebateCodeBookingPriceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeCustomerRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public CustomerId: string;

    // @Required()
    public RebateCodeId: number;

    public Id: number;
    public ModifiedDate?: string;
    public RebateCodeEmailSentToCustomer: boolean;
    public MessageToReceiver: string;
    public Buyer: boolean;

    public constructor(init?: Partial<RebateCodeCustomerRelation>) { super(init); (Object as any).assign(this, init); }
}

export class DaysOfWeek extends BaseModel
{
    // @Required()
    public DayOfWeek: string;

    // @Required()
    public DayOfWeekTranslation: string;

    public DayOfWeekActive?: boolean;
    public DayOfWeekSortOrder?: number;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<DaysOfWeek>) { super(init); (Object as any).assign(this, init); }
}

export class CalendarExport extends BaseModel
{
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public ExceptionId: number;

    public CalendarSync?: boolean;
    public CalendarId: string;
    public IsExceptionDeleted?: boolean;
    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<CalendarExport>) { super(init); (Object as any).assign(this, init); }
}

export class BookingLogEventType extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public ModifiedDate?: string;
    // @Required()
    public Id: number;

    public constructor(init?: Partial<BookingLogEventType>) { super(init); (Object as any).assign(this, init); }
}

export class BookingLog extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.BookingLogEventType)")
    public EventTypeId: number;

    public EventType: BookingLogEventType;
    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    public Id: number;
    public Comments: string;
    public UserId: string;
    // @Required()
    public Created: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<BookingLog>) { super(init); (Object as any).assign(this, init); }
}

export class PaymentDetails extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public QvicklyCheckoutSerialized: QvicklyCheckoutResponse;

    // @Ignore()
    public Payson2CheckoutSerialized: Payson2CheckoutResponse;

    // @Ignore()
    public StripeCheckoutSerialized: CustomCheckoutData;

    // @Required()
    public CompanyId: string;

    // @Required()
    public InternalReferenceId: string;

    // @Required()
    public ArticleTypeId: number;

    // @Required()
    public ExternalResponseData: string;

    // @Required()
    public ExternalResponseReference: string;

    // @Required()
    public PaymentProviderId: number;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public UpdatedDate: string;

    public ModifiedDate?: string;

    public constructor(init?: Partial<PaymentDetails>) { super(init); (Object as any).assign(this, init); }
}

export class BookingPrice extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public ServicePriceId?: number;
    public ServicePrice: ServicePrice;
    public CurrencyInfo: Currency;
    // @Ignore()
    public PriceText: string;

    // @Ignore()
    public AppliedCodes: AppliedRebateCodes[];

    // @Ignore()
    public IsRebate: boolean;

    // @Required()
    public CompanyId: string;

    // @Required()
    public BookingId: number;

    // @Required()
    public Quantity: number;

    public Price?: number;
    public VAT?: number;
    public Category: string;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    // @Required()
    public Invoiced: boolean;

    // @Required()
    public OccupiesSpot: boolean;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingPrice>) { super(init); (Object as any).assign(this, init); }
}

export class BookingStatus extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Color: string;

    // @Required()
    public Icon: string;

    public ModifiedDate?: string;
    public Id: number;

    public constructor(init?: Partial<BookingStatus>) { super(init); (Object as any).assign(this, init); }
}

export class BookedResource
{
    public Id: number;
    public Name: string;
    public Color: string;
    public ImageUrl: string;
    public Email: string;
    public MobilePhone: string;
    public AccessGroup: string;
    public EmailNotification: boolean;
    public SMSNotification: boolean;
    public EmailReminder: boolean;
    public SMSReminder: boolean;

    public constructor(init?: Partial<BookedResource>) { (Object as any).assign(this, init); }
}

export class BookedResourceType
{
    /** @description The resource type id */
    // @ApiMember(Description="The resource type id")
    public Id: number;

    /** @description The resource type name */
    // @ApiMember(Description="The resource type name")
    public Name: string;

    /** @description The resources inside resource type */
    // @ApiMember(Description="The resources inside resource type")
    public Resources: BookedResource[];

    public constructor(init?: Partial<BookedResourceType>) { (Object as any).assign(this, init); }
}

export class Booking extends PayableEntity implements IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
{
    // @Ignore()
    public Service: Service;

    // @Ignore()
    public CalendarExport: CalendarExport;

    // @Ignore()
    public Log: BookingLog[];

    // @Ignore()
    public CheckoutLogs: PaymentDetails[];

    // @Ignore()
    public Prices: BookingPrice[];

    // @Ignore()
    public Status: BookingStatusEnum;

    // @Ignore()
    public IsReserved: boolean;

    // @Ignore()
    public StatusName: string;

    public CurrencyInfo: Currency;
    public BookingStatus: BookingStatus;
    // @Ignore()
    public TotalPrice?: number;

    // @Ignore()
    public TotalSpots?: number;

    // @Ignore()
    public Resources: IList<Resource>;

    // @Ignore()
    public ExternalReferences: IList<ExternalReference>;

    // @Ignore()
    public BookedResources: IList<BookedResourceType>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public DeterministicId: string;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public LastTimeToUnBook?: string;

    // @Ignore()
    public PriceMappings: PriceMapping[];

    // @Ignore()
    public InternalReferenceId: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public Id: number;
    // @Required()
    public CustomerId: string;

    // @Required()
    public ServiceId: number;

    // @Required()
    public StatusId: number;

    public UnbookedOn?: string;
    public UnbookedComments: string;
    public BookedComments: string;
    // @Required()
    public BookedBy: string;

    public UnBookedBy: string;
    // @Required()
    public SendSmsReminder: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    // @Required()
    public SendSmsConfirmation: boolean;

    public RebateCode: string;
    public Comments: string;
    public IpAddress: string;
    // @Required()
    public NumberOfBookedSpots: number;

    public CommentsToCustomer: string;
    public PaymentExpiration?: string;
    // @Required()
    public SendEmailConfirmation: boolean;

    public CancellationCode: string;
    public ModifiedDate?: string;
    public RatingCode: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;
    // @Required()
    public From: string;

    // @Required()
    public To: string;

    public constructor(init?: Partial<Booking>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCodeTransaction extends BaseModel implements IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public Booking: Booking;

    // @Ignore()
    public RebateCode: RebateCode;

    // @Ignore()
    public Customer: Customer;

    public Id: number;
    public CompanyId: string;
    public Note: string;
    // @Required()
    public RebateCodeId: number;

    // @Required()
    public Amount: number;

    // @Required()
    public Usage: number;

    public BookingId?: number;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    public constructor(init?: Partial<RebateCodeTransaction>) { super(init); (Object as any).assign(this, init); }
}

export class RebateCode extends PayableEntity
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.RebateCodeType)")
    public RebateCodeTypeId: number;

    public RebateCodeTypeInfo: RebateCodeType;
    // @References("typeof(BokaMera.API.ServiceModel.Db.RebateCodeStatus)")
    public RebateCodeStatusId: number;

    public RebateCodeStatusInfo: RebateCodeStatus;
    // @Ignore()
    public Article: Article;

    // @Ignore()
    public Services: Service[];

    public RebateCodeDayOfWeekRelation: RebateCodeDayOfWeekRelation[];
    public RebateCodeServiceRelation: RebateCodeServiceRelation[];
    public RebateCodeBookingPriceRelation: RebateCodeBookingPriceRelation[];
    public RebateCodeCustomerRelation: RebateCodeCustomerRelation[];
    // @Ignore()
    public ServicesNames: string;

    // @Ignore()
    public DaysOfWeek: DaysOfWeek[];

    // @Ignore()
    public RebateCodeStatus: RebateCodeStatus;

    // @Ignore()
    public RebateCodeType: RebateCodeType;

    // @Ignore()
    public Transactions: RebateCodeTransaction[];

    // @Ignore()
    public RemainingAmount?: number;

    // @Ignore()
    public RemainingUsage?: number;

    // @Ignore()
    public CurrentNumberOfUsesPerCustomer: number;

    // @Ignore()
    public IsSpecificByDayOfWeek: boolean;

    // @Ignore()
    public Active: boolean;

    // @Ignore()
    public ActiveByStatus: boolean;

    // @Ignore()
    public RebateCodeCurrencySign: string;

    public CurrencyInfo: Currency;
    // @Ignore()
    public PaymentReceived: boolean;

    // @Ignore()
    public InternalReferenceId: string;

    // @Required()
    public ValidFrom: string;

    // @Required()
    public ValidTo: string;

    // @Required()
    public RebateCodeSign: string;

    // @Required()
    public RebateCodeValue: number;

    // @Required()
    public MaxNumberOfUses: number;

    // @Required()
    public MaxNumberOfUsesPerCustomer: number;

    // @Required()
    public NumberOfUsesUsed: number;

    public PersonalNote: string;
    // @Required()
    public CreatedBy: string;

    // @Required()
    public Created: string;

    // @Required()
    public UpdatedBy: string;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public FromTime: string;

    // @Required()
    public ToTime: string;

    public ModifiedDate?: string;
    public Id: number;
    public ArticleId?: number;

    public constructor(init?: Partial<RebateCode>) { super(init); (Object as any).assign(this, init); }
}

export class ServicePrice extends BaseModel implements IInterval
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Ignore()
    public Service: Service;

    // @Ignore()
    public PriceMappings: PriceMapping[];

    // @Ignore()
    public isTimeSpecific: boolean;

    // @Ignore()
    public isDaysOfWeekSpecific: boolean;

    public DayOfWeeks: ServicePriceDayOfWeekRelation[];
    // @Ignore()
    public PriceBeforeRebate?: number;

    // @Ignore()
    public RebateCodesApplied: RebateCode[];

    // @Ignore()
    public PriceText: string;

    // @Ignore()
    public OverlappingPrices: ServicePrice[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public ServiceId: number;

    public Price?: number;
    // @Required()
    public Updated: string;

    // @Required()
    public Created: string;

    // @Required()
    public FromTime: string;

    // @Required()
    public ToTime: string;

    // @Required()
    public VAT: number;

    public Category: string;
    public ModifiedDate?: string;
    // @Required()
    public From: string;

    // @Required()
    public To: string;

    // @Required()
    public CalculationTypeId: number;

    public constructor(init?: Partial<ServicePrice>) { super(init); (Object as any).assign(this, init); }
}

export class Service extends BaseModel implements ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public ResourceTypes: ResourceType[];

    // @Ignore()
    public Resources: Resource[];

    // @Ignore()
    public TotalPrice: TotalPriceInformation;

    // @Ignore()
    public Prices: ServicePrice[];

    // @Ignore()
    public BookingStatusOptions: BookingStatusOptions[];

    // @Ignore()
    public IsGroupBooking: boolean;

    // @Ignore()
    public IsMultipleResource: boolean;

    // @Ignore()
    public Settings: BookingSettings;

    // @Ignore()
    public PaymentSetting: PaymentSetting;

    // @Ignore()
    public BookingCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomerCustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Ignore()
    public Schedules: IList<ISchedule>;

    // @Ignore()
    public CustomerActiveBookings: IList<Booking>;

    // @Ignore()
    public ScheduleType: ScheduleType;

    // @Ignore()
    public LastTimeToUnbookThreshold: string;

    // @Ignore()
    public LastTimeToBookThreshold: string;

    // @Ignore()
    public RatingScore: AverageRatingScore;

    // @Ignore()
    public Ratings: Rating[];

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    public Group: string;
    // @Required()
    public Active: boolean;

    // @Required()
    public SortOrder: number;

    // @Required()
    public PauseAfterBooking: number;

    // @Required()
    public UnbookBeforeDays: number;

    // @Required()
    public UnbookBeforeHours: number;

    // @Required()
    public UnbookBeforeMinutes: number;

    // @Required()
    public BookBeforeDays: number;

    // @Required()
    public BookBeforeHours: number;

    // @Required()
    public BookBeforeMinutes: number;

    public Duration?: number;
    public DurationTypeId: number;
    public MinDuration?: number;
    public MaxDuration?: number;
    public DurationInterval?: number;
    public TotalSpots?: number;
    public ImageUrl: string;
    // @Required()
    public ScheduleTypeId: number;

    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public OnlyVisibleByAdmin: boolean;

    // @Required()
    public MinNumberOfSpotsPerBooking: number;

    // @Required()
    public MaxNumberOfSpotsPerBooking: number;

    // @Required()
    public MinNumberOfResourcesToBook: number;

    // @Required()
    public MaxNumberOfResourcesToBook: number;

    // @Required()
    public IsPaymentEnabled: boolean;

    // @Required()
    public MaxPaymentTime: number;

    // @Required()
    public LockSpotsToBooking: boolean;

    // @Required()
    public EnableBookingQueue: boolean;

    public ModifiedDate?: string;
    // @Required()
    public BookingStatusId: number;

    // @Required()
    public EnableCodeLockSync: boolean;

    // @Required()
    public EnableCustomerManualPayment: boolean;

    public PriceViewTypeId?: number;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;

    public constructor(init?: Partial<Service>) { super(init); (Object as any).assign(this, init); }
}

export class CustomFieldServiceRelation extends BaseModel
{
    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public CustomFieldConfigId: number;

    // @Required()
    public ServiceId: number;

    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldServiceRelation>) { super(init); (Object as any).assign(this, init); }
}

export class CustomFieldConfig extends BaseModel
{
    // @Ignore()
    public Values: CustomFieldValue[];

    public CustomField: CustomField;
    // @Ignore()
    public RegEx: RegEx;

    // @Ignore()
    public Services: Service[];

    public CustomFieldServiceRelation: CustomFieldServiceRelation[];
    // @Required()
    public CompanyId: string;

    public Id: number;
    public GroupId?: number;
    // @Required()
    public FieldId: number;

    // @Required()
    public IconId: number;

    public RegExId?: number;
    // @Required()
    public Name: string;

    // @Required()
    public Description: string;

    // @Required()
    public Datatype: string;

    // @Required()
    public MaxLength: number;

    // @Required()
    public IsPublic: boolean;

    // @Required()
    public IsHidden: boolean;

    // @Required()
    public IsMandatory: boolean;

    public DefaultValue: string;
    public RegExErrorMessage: string;
    public MandatoryErrorMessage: string;
    public Width?: number;
    // @Required()
    public MultipleLineText: boolean;

    public ModifiedDate?: string;

    public constructor(init?: Partial<CustomFieldConfig>) { super(init); (Object as any).assign(this, init); }
}

export class Resource extends BaseModel implements ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    // @Ignore()
    public Priority: number;

    // @Ignore()
    public Schedules: IList<ISchedule>;

    // @Ignore()
    public Exceptions: IList<ITimeException>;

    // @Ignore()
    public Bookings: IList<IBookedTime>;

    // @Ignore()
    public CustomFieldsConfig: IList<CustomFieldConfig>;

    // @Ignore()
    public CustomFieldsData: IList<CustomFieldDataResponse>;

    // @Required()
    public CompanyId: string;

    public Id: number;
    // @Required()
    public Name: string;

    // @Required()
    public Active: boolean;

    public Description: string;
    public ImageUrl: string;
    // @Required()
    public UpdatedDate: string;

    // @Required()
    public CreatedDate: string;

    // @Required()
    public Color: string;

    public Email: string;
    public MobilePhone: string;
    public EmailNotification?: boolean;
    public SMSNotification?: boolean;
    // @Required()
    public SendSMSReminder: boolean;

    // @Required()
    public SendEmailReminder: boolean;

    public ModifiedDate?: string;
    public AccessGroup: string;
    public TextField1: string;
    public TextField2: string;
    public TextField3: string;
    public TextField4: string;
    public TextField5: string;
    public TextField6: string;
    public TextField7: string;
    public TextField8: string;
    public TextField9: string;
    public TextField10: string;
    public TextField11: string;
    public TextField12: string;
    public TextField13: string;
    public TextField14: string;
    public TextField15: string;
    public TextField16: string;
    public TextField17: string;
    public TextField18: string;
    public TextField19: string;
    public TextField20: string;

    public constructor(init?: Partial<Resource>) { super(init); (Object as any).assign(this, init); }
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class TestRecurringSchedule implements ICompany, IInterval
{
    /** @description The company id, if empty will use the company id for the user you are logged in with. */
    // @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    public CompanyId?: string;

    /** @description From what datetime to show available times */
    // @ApiMember(DataType="dateTime", Description="From what datetime to show available times", IsRequired=true, ParameterType="query")
    public From: string;

    /** @description To what datetime to show available times */
    // @ApiMember(DataType="dateTime", Description="To what datetime to show available times", IsRequired=true, ParameterType="query")
    public To: string;

    /** @description The Service Duration to be faked if there is no Service selected */
    // @ApiMember(Description="The Service Duration to be faked if there is no Service selected")
    public Duration?: number;

    /** @description Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM */
    // @ApiMember(Description="Time interval for available times. Here you set the interval at which times should appear. For example, if you select the range 15minutes, and your service has an duration of 1 hour and opening hours are 9AM to 6PM you will see the following suggested times: 09AM-10PM 09:15AM-10:15PM, 09:30AM-10:30PM ,  ..... 04:45PM-05:45, 05:00PM-06:00PM", IsRequired=true)
    public TimeInterval: number;

    /** @description Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight). */
    // @ApiMember(Description="Allow bookings end time exceeds the opening hours Here you can choose whether it should be possible to make a reservation exceeding the opening hours. This should be ticked when a service duration is longer than 24 hours (possible to book over midnight).", IsRequired=true)
    public EnableBookingUntilClosingTime: boolean;

    /** @description The timestamp to which the schedule is valid from */
    // @ApiMember(Description="The timestamp to which the schedule is valid from", IsRequired=true)
    public ValidFrom: string;

    /** @description The timestamp to which the schedule is valid to */
    // @ApiMember(Description="The timestamp to which the schedule is valid to", IsRequired=true)
    public ValidTo: string;

    /** @description The time for the schedule opening hours (starttime) */
    // @ApiMember(Description="The time for the schedule opening hours (starttime)", IsRequired=true)
    public StartTime: string;

    /** @description The time for the schedule opening hours (endtime) */
    // @ApiMember(Description="The time for the schedule opening hours (endtime)", IsRequired=true)
    public EndTime: string;

    /** @description The number of days the schedule is valid from todays date */
    // @ApiMember(Description="The number of days the schedule is valid from todays date", IsRequired=true)
    public NumberOfScheduleDays: number;

    /** @description If recurring, an array indicating which days of the week the schedule recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs */
    // @ApiMember(Description="If recurring, an array indicating which days of the week the schedule recures on where 1 = Monday .. 7 = Sunday. When recurring then the time portion of the Fields From and To indicates the time of day the recurrence occurs")
    public DaysOfWeek: number[];

    /** @description If not recuring, an array indicating which dates that are open for the schedule. */
    // @ApiMember(Description="If not recuring, an array indicating which dates that are open for the schedule.")
    public ScheduleDates: AddRecurringScheduleDate[];

    /** @description Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule. */
    // @ApiMember(Description="Schedule exceptions. For example closed on lunch time between 12AM and 1PM. These times will be removed from the recurring schedule.")
    public Exceptions: ScheduleException[];

    // @ApiMember()
    public Services: AddScheduleService[];

    // @ApiMember()
    public Resources: Resource[];

    public constructor(init?: Partial<TestRecurringSchedule>) { (Object as any).assign(this, init); }
}

export class Currency extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public CurrencySign: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: string;

    public constructor(init?: Partial<Currency>) { super(init); (Object as any).assign(this, init); }
}

export interface IBokameraPaymentManager<TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse>
{
}

export class QvicklyArticle
{
    public artnr: string;
    public title: string;
    public quantity: number;
    public aprice: number;
    public tax: number;
    public discount: number;
    public withouttax: number;
    public taxrate: number;

    public constructor(init?: Partial<QvicklyArticle>) { (Object as any).assign(this, init); }
}

export class Shipping
{
    public firstname: string;
    public lastname: string;
    public company: string;
    public street: string;
    public street2: string;
    public zip: string;
    public city: string;
    public country: string;
    public phone: string;
    public withouttax: string;
    public taxrate: string;

    public constructor(init?: Partial<Shipping>) { (Object as any).assign(this, init); }
}

export class Customer
{
    public City: string;
    public CountryCode: string;
    public IdentityNumber: string;
    public Email: string;
    public FirstName: string;
    public LastName: string;
    public Phone: string;
    public PostalCode: string;
    public Street: string;
    public Reference: string;
    public Type: CustomerType;

    public constructor(init?: Partial<Customer>) { (Object as any).assign(this, init); }
}

export class AnyOf implements IAnyOf
{
    public Value: Object;
    public Type: string;

    public constructor(init?: Partial<AnyOf>) { (Object as any).assign(this, init); }
}

export class AnyOf_2<T1, T2> extends AnyOf
{
    public Value: Object;
    public Type: string;

    public constructor(init?: Partial<AnyOf_2<T1, T2>>) { super(init); (Object as any).assign(this, init); }
}

export class StripeEntity implements IStripeEntity
{

    public constructor(init?: Partial<StripeEntity>) { (Object as any).assign(this, init); }
}

export class StripeEntity_1<T> extends StripeEntity
{

    public constructor(init?: Partial<StripeEntity_1<T>>) { super(init); (Object as any).assign(this, init); }
}

export class StripeList<T> extends StripeEntity_1<StripeList<T>> implements IHasObject
{

    public constructor(init?: Partial<StripeList<T>>) { super(init); (Object as any).assign(this, init); }
}

export interface ILogger<TCategoryName> extends ILogger
{
}

TypeScript TestRecurringSchedule DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /schedules/recurring/test HTTP/1.1 
Host: testapi.bokamera.se 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<TestRecurringSchedule xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <DaysOfWeek xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:int>0</d2p1:int>
  </DaysOfWeek>
  <Duration>0</Duration>
  <EnableBookingUntilClosingTime>false</EnableBookingUntilClosingTime>
  <EndTime>PT0S</EndTime>
  <Exceptions>
    <ScheduleException>
      <EndTime>PT0S</EndTime>
      <StartTime>PT0S</StartTime>
    </ScheduleException>
  </Exceptions>
  <From>0001-01-01T00:00:00</From>
  <NumberOfScheduleDays>0</NumberOfScheduleDays>
  <Resources xmlns:d2p1="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Db">
    <d2p1:Resource>
      <d2p1:AccessGroup>String</d2p1:AccessGroup>
      <d2p1:Active>false</d2p1:Active>
      <d2p1:Bookings xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
      <d2p1:Color>String</d2p1:Color>
      <d2p1:CompanyId>00000000-0000-0000-0000-000000000000</d2p1:CompanyId>
      <d2p1:CreatedDate>0001-01-01T00:00:00</d2p1:CreatedDate>
      <d2p1:CustomFieldsConfig i:nil="true" />
      <d2p1:CustomFieldsData i:nil="true" />
      <d2p1:Description>String</d2p1:Description>
      <d2p1:Email>String</d2p1:Email>
      <d2p1:EmailNotification>false</d2p1:EmailNotification>
      <d2p1:Exceptions xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
      <d2p1:Id>0</d2p1:Id>
      <d2p1:ImageUrl>String</d2p1:ImageUrl>
      <d2p1:MobilePhone>String</d2p1:MobilePhone>
      <d2p1:ModifiedDate xmlns:d4p1="http://schemas.datacontract.org/2004/07/System">
        <d4p1:DateTime>0001-01-01T00:00:00Z</d4p1:DateTime>
        <d4p1:OffsetMinutes>0</d4p1:OffsetMinutes>
      </d2p1:ModifiedDate>
      <d2p1:Name>String</d2p1:Name>
      <d2p1:Priority>0</d2p1:Priority>
      <d2p1:SMSNotification>false</d2p1:SMSNotification>
      <d2p1:Schedules xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
      <d2p1:SendEmailReminder>false</d2p1:SendEmailReminder>
      <d2p1:SendSMSReminder>false</d2p1:SendSMSReminder>
      <d2p1:TextField1>String</d2p1:TextField1>
      <d2p1:TextField10>String</d2p1:TextField10>
      <d2p1:TextField11>String</d2p1:TextField11>
      <d2p1:TextField12>String</d2p1:TextField12>
      <d2p1:TextField13>String</d2p1:TextField13>
      <d2p1:TextField14>String</d2p1:TextField14>
      <d2p1:TextField15>String</d2p1:TextField15>
      <d2p1:TextField16>String</d2p1:TextField16>
      <d2p1:TextField17>String</d2p1:TextField17>
      <d2p1:TextField18>String</d2p1:TextField18>
      <d2p1:TextField19>String</d2p1:TextField19>
      <d2p1:TextField2>String</d2p1:TextField2>
      <d2p1:TextField20>String</d2p1:TextField20>
      <d2p1:TextField3>String</d2p1:TextField3>
      <d2p1:TextField4>String</d2p1:TextField4>
      <d2p1:TextField5>String</d2p1:TextField5>
      <d2p1:TextField6>String</d2p1:TextField6>
      <d2p1:TextField7>String</d2p1:TextField7>
      <d2p1:TextField8>String</d2p1:TextField8>
      <d2p1:TextField9>String</d2p1:TextField9>
      <d2p1:UpdatedDate>0001-01-01T00:00:00</d2p1:UpdatedDate>
    </d2p1:Resource>
  </Resources>
  <ScheduleDates>
    <AddRecurringScheduleDate>
      <Date>0001-01-01T00:00:00</Date>
      <EndTime>PT0S</EndTime>
      <StartTime>PT0S</StartTime>
    </AddRecurringScheduleDate>
  </ScheduleDates>
  <Services>
    <AddScheduleService>
      <Id>0</Id>
    </AddScheduleService>
  </Services>
  <StartTime>PT0S</StartTime>
  <TimeInterval>0</TimeInterval>
  <To>0001-01-01T00:00:00</To>
  <ValidFrom>0001-01-01T00:00:00</ValidFrom>
  <ValidTo>0001-01-01T00:00:00</ValidTo>
</TestRecurringSchedule>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AvailableTimesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <ServiceId>0</ServiceId>
  <Times>
    <AvailableTimesSum>
      <ExceptionTexts i:nil="true" />
      <Free>0</Free>
      <FreeSpots>0</FreeSpots>
      <From>0001-01-01T00:00:00</From>
      <To>0001-01-01T00:00:00</To>
    </AvailableTimesSum>
  </Times>
  <TimesFreeTextMultiple>String</TimesFreeTextMultiple>
  <TimesFreeTextSingle>String</TimesFreeTextSingle>
</AvailableTimesResponse>