BokaMera.API.Host

<back to all web services

CompanyInvoiceQuery

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, bookingsupplier-administrator-read, superadmin
The following routes are available for this service:
GET/billing/company/invoicesGet all company invoices for the subscriptionGet all company invoices for the subscription you have assigned to.

// @DataContract
export class QueryBase
{
    /** @description Skip over a given number of elements in a sequence and then return the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?skip=10&orderBy=Id</code> */
    // @DataMember(Order=1)
    public Skip?: number;

    /** @description Return a given number of elements in a sequence and then skip over the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?take=20</code> */
    // @DataMember(Order=2)
    public Take?: number;

    /** @description Comma separated list of fields to order by. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderBy=Id,-Age,FirstName</code> */
    // @DataMember(Order=3)
    public OrderBy: string;

    /** @description Comma separated list of fields to order by in descending order. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderByDesc=Id,-Age,FirstName</code> */
    // @DataMember(Order=4)
    public OrderByDesc: string;

    /** @description Include any of the aggregates <code>AVG, COUNT, FIRST, LAST, MAX, MIN, SUM</code> in your result set. The results will be returned in the meta field.<br/><br/><strong>Example:</strong><br/><code>?include=COUNT(*) as Total</code><br/><br/>or multiple fields with<br/><code>?include=Count(*) Total, Min(Age), AVG(Age) AverageAge</code><br/></br>or unique with<br/><code>?include=COUNT(DISTINCT LivingStatus) as UniqueStatus</code> */
    // @DataMember(Order=5)
    public Include: string;

    // @DataMember(Order=6)
    public Fields: string;

    // @DataMember(Order=7)
    public Meta: { [index: string]: string; };

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

export class QueryDb<From, Into> extends QueryBase
{

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

export class CompanyOwnerResponse
{
    /** @description Company owner id */
    // @ApiMember(Description="Company owner id")
    public Id: number;

    /** @description Company owner name */
    // @ApiMember(Description="Company owner name")
    public Name: string;

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

export class CompanyTypeResponse
{
    /** @description Company type id */
    // @ApiMember(Description="Company type id")
    public Id: number;

    /** @description Company type name */
    // @ApiMember(Description="Company type name")
    public Name: string;

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

export class CurrencyInfoResponse
{
    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public Id: string;

    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public Name: string;

    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public CurrencySign: string;

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

export class InvoiceStatusResponse
{
    /** @description The status id */
    // @ApiMember(Description="The status id")
    public Id: number;

    /** @description The status name */
    // @ApiMember(Description="The status name")
    public Name: string;

    /** @description The status description */
    // @ApiMember(Description="The status description")
    public Description: string;

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

export class InvoiceLineResponse
{
    /** @description The invoice id */
    // @ApiMember(Description="The invoice id")
    public InvoiceId: number;

    /** @description The invoice line id */
    // @ApiMember(Description="The invoice line id")
    public Id: number;

    /** @description The invoice line period from date */
    // @ApiMember(Description="The invoice line period from date")
    public PeriodFrom: string;

    /** @description The invoice line period to date */
    // @ApiMember(Description="The invoice line period to date")
    public PeriodTo: string;

    /** @description The invoice line article number */
    // @ApiMember(Description="The invoice line article number")
    public ArticleNumber?: number;

    /** @description The invoice line article name */
    // @ApiMember(Description="The invoice line article name")
    public ArticleName: string;

    /** @description The invoice line article description */
    // @ApiMember(Description="The invoice line article description")
    public ArticleDescription: string;

    /** @description The invoice line quantity */
    // @ApiMember(Description="The invoice line quantity")
    public Quantity: number;

    /** @description The invoice line unit price */
    // @ApiMember(Description="The invoice line unit price")
    public UnitPrice: number;

    /** @description The invoice line sub total */
    // @ApiMember(Description="The invoice line sub total")
    public SubTotal: number;

    /** @description The invoice line rebate in percent */
    // @ApiMember(Description="The invoice line rebate in percent")
    public Rebate: number;

    /** @description The invoice line updated date */
    // @ApiMember(Description="The invoice line updated date")
    public Updated?: string;

    /** @description The invoice line created date */
    // @ApiMember(Description="The invoice line created date")
    public Created?: string;

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

export class BaseModel
{

    public constructor(init?: Partial<BaseModel>) { (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 BillingInformationResponse
{
    /** @description The company id. */
    // @ApiMember(Description="The company id.")
    public CompanyId: string;

    /** @description The prefered billing method. */
    // @ApiMember(Description="The prefered billing method.", IsRequired=true)
    public BillingMethodId: number;

    /** @description The prefered billing method. */
    // @ApiMember(Description="The prefered billing method.", IsRequired=true)
    public LicensePlanId: number;

    /** @description The name that should be printed on the billing information, normally this would be your company name. */
    // @ApiMember(Description="The name that should be printed on the billing information, normally this would be your company name.")
    public Name: string;

    /** @description If you want to add the attention to the billing address. */
    // @ApiMember(Description="If you want to add the attention to the billing address.")
    public Attention: string;

    /** @description The street for the billing adress. This is required when having postal invoice as billing method. */
    // @ApiMember(Description="The street for the billing adress. This is required when having postal invoice as billing method.")
    public Street1: string;

    /** @description The street for the billing adress. */
    // @ApiMember(Description="The street for the billing adress.")
    public Street2: string;

    /** @description The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method. */
    // @ApiMember(Description="The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method.")
    public ZipCode: string;

    /** @description The city for the billing adress. This is required when having postal invoice as billing method. */
    // @ApiMember(Description="The city for the billing adress. This is required when having postal invoice as billing method.")
    public City: string;

    /** @description The country for the billing adress. This is required when having postal invoice as billing method. */
    // @ApiMember(Description="The country for the billing adress. This is required when having postal invoice as billing method.")
    public CountryId: string;

    /** @description The billing email. This is required when having email invoice as billing method. */
    // @ApiMember(Description="The billing email. This is required when having email invoice as billing method.")
    public Email: string;

    /** @description The company global location number. */
    // @ApiMember(Description="The company global location number.")
    public GLN: string;

    /** @description You're internal rereference. */
    // @ApiMember(Description="You're internal rereference.")
    public ReferenceLine1: string;

    /** @description You're internal rereference. */
    // @ApiMember(Description="You're internal rereference.")
    public ReferenceLine2: string;

    /** @description The billing payment terms in days. This is default 15 days. */
    // @ApiMember(Description="The billing payment terms in days. This is default 15 days.")
    public PaymentTermsDays: number;

    /** @description The company vat registration number. */
    // @ApiMember(Description="The company vat registration number.")
    public VatRegistrationNumber: string;

    /** @description The billing method options to choose from */
    // @ApiMember(Description="The billing method options to choose from")
    public BillingMethodOptions: BillingMethod[];

    public constructor(init?: Partial<BillingInformationResponse>) { (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 class CompanyInvoiceQueryResponse
{
    /** @description The company id */
    // @ApiMember(Description="The company id")
    public CompanyId: string;

    /** @description The invoice id */
    // @ApiMember(Description="The invoice id")
    public Id: number;

    /** @description Status of the invoice */
    // @ApiMember(Description="Status of the invoice")
    public StatusId: number;

    /** @description Date of the invoice */
    // @ApiMember(Description="Date of the invoice")
    public InvoiceDate: string;

    /** @description Due date of the invoice */
    // @ApiMember(Description="Due date of the invoice")
    public DueDate?: string;

    /** @description What start date of the invoice period */
    // @ApiMember(Description="What start date of the invoice period")
    public PeriodFrom: string;

    /** @description What end date of the invoice period */
    // @ApiMember(Description="What end date of the invoice period")
    public PeriodTo: string;

    /** @description The total amount of the invoice */
    // @ApiMember(Description="The total amount of the invoice")
    public TotalAmount: number;

    /** @description The rounding of the total amount */
    // @ApiMember(Description="The rounding of the total amount")
    public Rounding: number;

    /** @description The VAT */
    // @ApiMember(Description="The VAT")
    public VAT: number;

    /** @description The VAT registration number */
    // @ApiMember(Description="The VAT registration number")
    public VATRegistrationNo: string;

    /** @description The company registration number */
    // @ApiMember(Description="The company registration number")
    public RegistrationNumber: string;

    /** @description The company name */
    // @ApiMember(Description="The company name")
    public CompanyName: string;

    /** @description The company owner, used for grouping invoices per CompanyOwner */
    // @ApiMember(Description="The company owner, used for grouping invoices per CompanyOwner")
    public CompanyOwner: CompanyOwnerResponse;

    /** @description The company type */
    // @ApiMember(Description="The company type")
    public CompanyType: CompanyTypeResponse;

    /** @description The company contact person */
    // @ApiMember(Description="The company contact person")
    public ContactPerson: string;

    /** @description The company street */
    // @ApiMember(Description="The company street")
    public Street1: string;

    /** @description The company street */
    // @ApiMember(Description="The company street")
    public Street2: string;

    /** @description The company city */
    // @ApiMember(Description="The company city")
    public City: string;

    /** @description The company zip */
    // @ApiMember(Description="The company zip")
    public Zip: string;

    /** @description The company country */
    // @ApiMember(Description="The company country")
    public CountryId: string;

    /** @description The invoice currency */
    // @ApiMember(Description="The invoice currency")
    public CurrencyId: string;

    /** @description The invoice created date */
    // @ApiMember(Description="The invoice created date")
    public Created?: string;

    /** @description The invoice updated date */
    // @ApiMember(Description="The invoice updated date")
    public Updated?: string;

    /** @description The reference to promikbook invoice */
    // @ApiMember(Description="The reference to promikbook invoice")
    public PromikBookInvoiceId?: number;

    /** @description Any invoice message */
    // @ApiMember(Description="Any invoice message")
    public Message: string;

    /** @description The currency information */
    // @ApiMember(Description="The currency information")
    public CurrencyInfo: CurrencyInfoResponse;

    /** @description The currency information */
    // @ApiMember(Description="The currency information")
    public InvoiceStatus: InvoiceStatusResponse;

    /** @description The currency information */
    // @ApiMember(Description="The currency information")
    public InvoiceLines: InvoiceLineResponse[];

    /** @description Billing information */
    // @ApiMember(Description="Billing information")
    public BillingInformation: BillingInformationResponse;

    public ExternalReferences: ExternalReference[];

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

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

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

    // @Required()
    public Description: string;

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

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

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

    // @Required()
    public InvoiceId: number;

    // @Required()
    public Id: number;

    // @Required()
    public PeriodFrom: string;

    // @Required()
    public PeriodTo: string;

    public ArticleNumber?: number;
    // @Required()
    public ArticleName: string;

    // @Required()
    public ArticleDescription: string;

    // @Required()
    public Quantity: number;

    // @Required()
    public UnitPrice: number;

    // @Required()
    public SubTotal: number;

    // @Required()
    public Rebate: number;

    public Updated?: string;
    public Created?: string;
    public ModifiedDate?: string;

    public constructor(init?: Partial<CompanyInvoiceLine>) { 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 enum CompanyStatus
{
    Registered = 1,
    AwaitingApproval = 2,
    Approved = 3,
    Inactive = 4,
    ClosedDown = 5,
    NotApproved = 6,
}

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 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 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 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); }
}

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 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 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 BookingStatusOptions
{
    public Id: number;
    public Name: string;
    public Description: string;

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

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 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 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 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 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 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 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 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 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 CompanyInvoice extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    public InvoiceStatus: InvoiceStatus;
    // @Ignore()
    public InvoiceLines: CompanyInvoiceLine[];

    // @Ignore()
    public BillingInformation: BillingInformation;

    // @Ignore()
    public ExternalReferences: ExternalReference[];

    // @Ignore()
    public Company: Company;

    // @Required()
    public CompanyId: string;

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

    // @Required()
    public InvoiceDate: string;

    public DueDate?: string;
    // @Required()
    public PeriodFrom: string;

    // @Required()
    public PeriodTo: string;

    // @Required()
    public TotalAmount: number;

    // @Required()
    public Rounding: number;

    // @Required()
    public VAT: number;

    // @Required()
    public VATRegistrationNo: string;

    // @Required()
    public RegistrationNumber: string;

    // @Required()
    public CompanyName: string;

    public ContactPerson: string;
    public Street1: string;
    public Street2: string;
    public City: string;
    public Zip: string;
    public Country: string;
    public PaymentMethod: string;
    public ViewedDate?: string;
    public ViewedBy: string;
    public Message: string;
    public Updated?: string;
    public Created?: string;
    public PromikBookInvoiceId?: number;
    public ModifiedDate?: string;

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

// @ValidateRequest(Validator="IsAuthenticated")
export class CompanyInvoiceQuery extends QueryDb<CompanyInvoice, CompanyInvoiceQueryResponse> implements ICompany
{
    /** @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 Id of the invoice */
    // @ApiMember(Description="Id of the invoice")
    public Id?: number;

    /** @description Id of the invoice */
    // @ApiMember(Description="Id of the invoice")
    public StatusId?: number;

    /** @description If you want to include the invoice lines */
    // @ApiMember(DataType="boolean", Description="If you want to include the invoice lines", ParameterType="query")
    public IncludeInvoiceLines: boolean;

    /** @description If you want to include the currency information */
    // @ApiMember(DataType="boolean", Description="If you want to include the currency information", ParameterType="query")
    public IncludeCurrencyInformation: boolean;

    /** @description If you want to include the invoice status information */
    // @ApiMember(DataType="boolean", Description="If you want to include the invoice status information", ParameterType="query")
    public IncludeInvoiceStatusInformation: boolean;

    public constructor(init?: Partial<CompanyInvoiceQuery>) { super(init); (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
{
}

export class AccessKeyTypeResponse
{
    public Id: number;
    public KeyType: string;
    public Description: string;

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

// @DataContract
export class QueryResponse<AccessKeyTypeResponse>
{
    // @DataMember(Order=1)
    public Offset: number;

    // @DataMember(Order=2)
    public Total: number;

    // @DataMember(Order=3)
    public Results: AccessKeyTypeResponse[];

    // @DataMember(Order=4)
    public Meta: { [index: string]: string; };

    // @DataMember(Order=5)
    public ResponseStatus: ResponseStatus;

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

TypeScript CompanyInvoiceQuery DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /billing/company/invoices HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"Offset":0,"Total":0,"Results":[{"Id":0,"StatusId":0,"DueDate":"0001-01-01T00:00:00","TotalAmount":0,"Rounding":0,"VAT":0,"VATRegistrationNo":"String","RegistrationNumber":"String","CompanyName":"String","CompanyOwner":{"Id":0,"Name":"String"},"CompanyType":{"Id":0,"Name":"String"},"ContactPerson":"String","Street1":"String","Street2":"String","City":"String","Zip":"String","CountryId":"String","CurrencyId":"String","Created":"0001-01-01T00:00:00","Updated":"0001-01-01T00:00:00","PromikBookInvoiceId":0,"Message":"String","CurrencyInfo":{"Id":"String","Name":"String","CurrencySign":"String"},"InvoiceStatus":{"Id":0,"Name":"String","Description":"String"},"InvoiceLines":[{"InvoiceId":0,"Id":0,"ArticleNumber":0,"ArticleName":"String","ArticleDescription":"String","Quantity":0,"UnitPrice":0,"SubTotal":0,"Rebate":0,"Updated":"0001-01-01T00:00:00","Created":"0001-01-01T00:00:00"}],"BillingInformation":{"BillingMethodId":0,"LicensePlanId":0,"Name":"String","Attention":"String","Street1":"String","Street2":"String","ZipCode":"String","City":"String","CountryId":"String","Email":"String","GLN":"String","ReferenceLine1":"String","ReferenceLine2":"String","PaymentTermsDays":0,"VatRegistrationNumber":"String","BillingMethodOptions":[{"BillingMethodCountriesRelation":[{"BillingMethodId":0,"CountryId":"String","ModifiedDate":"0001-01-01T00:00:00.0000000+00:00"}],"Name":"String","Description":"String","ModifiedDate":"0001-01-01T00:00:00.0000000+00:00","Id":0}]},"ExternalReferences":[{"ReferenceType":"String","ExternalData":"String","CreatedBy":"String","ModifiedDate":"0001-01-01T00:00:00.0000000+00:00"}]}],"Meta":{"String":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}