/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Sentinel.Common {
  
  export class SentinelSyncUsersResponseUserDtoAuthenticationDataDto {
    Type : string; 
    Data : string; 
    SearchKey : string; 
  }
  
  export class SentinelSyncGeneralResponseCashHandlerDto {
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class CurrencyInfo {
    Name : string; 
    Description : string; 
    Precision : number; // Int16
  }
  
  export class PushSentinelOrderCustomerDto {
    SentinelID : number; // Int32
    FirstName : string; 
    LastName : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
    LanguageID : string; 
    CountryID : string; 
    Gender : string; 
  }
  
  export class SentinelSyncGeneralResponseDeviceDto {
    ID : number; // Int32
    Name : string; 
    Types : string[]; 
    NetworkName : string; 
    IpAddress : string; 
    StationID? : number; // Int32, nullable
    AssemblyName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    ConnectionType : EVA.Core.ConnectionType; 
  }
  
  export class SentinelSyncUsersResponseUserDtoFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
    UserType : EVA.Framework.UserTypes; 
  }
  
  export class SentinelSyncGeneralResponseMessageTemplateDto {
    Name : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Template : string; 
    Helpers : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class PushSentinelOrderOrderLineDiscount {
    BackendID : string; 
    Description : string; 
    Amount : number; // Decimal
  }
  
  export class PushSentinelOrderOrderLineDto {
    ID : number; // Int32
    BackendID : string; 
    CustomID : string; 
    UnitPriceInTax : number; // Decimal
    TaxRate : number; // Decimal
    Quantity : number; // Int32
    Description : string; 
    Discounts : EVA.Sentinel.Common.PushSentinelOrderOrderLineDiscount[]; 
  }
  
  export class SentinelSyncGeneralResponseOrganizationUnitDto {
    BackendID : string; 
    Name : string; 
    Description : string; 
    CashHandler : EVA.Sentinel.Common.SentinelSyncGeneralResponseCashHandlerDto; 
    BackendRelationID : string; 
    BackendCompanyID : string; 
    BranchNumber : string; 
    GlobalLocationNumber : string; 
    Address : EVA.Core.AddressDataDto; 
    Status : EVA.Core.OrganizationUnitStatus; 
    Type : EVA.Framework.OrganizationUnitTypes; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    Subnet : string; 
    IpAddress : string; 
    BankAccount : string; 
    VatNumber : string; 
    RegistrationNumber : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
    UseForAccounting : boolean; 
    CountryID : string; 
    LanguageID : string; 
    CurrencyID : string; 
    CostPriceCurrencyID : string; 
    TimeZone : string; 
    AssortmentID : number; // Int32
  }
  
  export class PushSentinelOrderPaymentDto {
    BackendID : string; 
    Method : string; 
    Type : string; 
    Amount : number; // Decimal
    Data : string; 
    ID : number; // Int32
    ProxyID : string; 
  }
  
  export class SentinelSyncGeneralResponsePaymentTypeDto {
    Name : string; 
    Code : string; 
    IsRoundingType : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
    IsExternal : boolean; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
  }
  
  export class SentinelSyncCatalogResponseProductDto {
    ID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    CustomID : string; 
    Name : string; 
    Type : EVA.Core.ProductTypes; 
    BackendSystemID : string; 
    BackendStatus : string; 
    LogicalLevel : string; 
    ConfigurableProperty : string; 
    ConfigurablePropertyValue : string; 
    TaxCode : string; 
    _data : any; 
    Data : string; 
    UnitPriceInTax? : number; // Decimal, nullable
    Children : number[]; 
    HasParents : boolean; 
    Barcodes : string[]; 
    GiftCardType : string; 
    GiftCardData : string; 
  }
  
  export class PushSentinelOrder extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.PushSentinelOrderResponse> {
    SentinelOrderID : string; 
    CreationTime? : string; // DateTime, nullable
    Remark : string; 
    Customer : EVA.Sentinel.Common.PushSentinelOrderCustomerDto; 
    ShippingAddress : EVA.Core.AddressDataDto; 
    BillingAddress : EVA.Core.AddressDataDto; 
    Lines : EVA.Sentinel.Common.PushSentinelOrderOrderLineDto[]; 
    Payments : EVA.Sentinel.Common.PushSentinelOrderPaymentDto[]; 
  }
  
  export class PushSentinelOrderResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    AlreadyExists : boolean; 
  }
  
  export class SentinelSyncCatalog extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncCatalogResponse> {
  }
  
  export class SentinelSyncCatalogResponse extends EVA.API.ResponseMessage {
    Products : EVA.Sentinel.Common.SentinelSyncCatalogResponseProductDto[]; 
  }
  
  export class SentinelSyncGeneral extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncGeneralResponse> {
  }
  
  export class SentinelSyncGeneralResponse extends EVA.API.ResponseMessage {
    LedgerClasses : string[]; 
    Currencies : EVA.Sentinel.Common.CurrencyInfo[]; 
    OrganizationUnit : EVA.Sentinel.Common.SentinelSyncGeneralResponseOrganizationUnitDto; 
    Settings : { [ key : string ] : string }; 
    PaymentTypes : EVA.Sentinel.Common.SentinelSyncGeneralResponsePaymentTypeDto[]; 
    MessageTemplates : EVA.Sentinel.Common.SentinelSyncGeneralResponseMessageTemplateDto[]; 
    Stations : EVA.Sentinel.Common.SentinelSyncGeneralResponseStationDto[]; 
    Devices : EVA.Sentinel.Common.SentinelSyncGeneralResponseDeviceDto[]; 
  }
  
  export class SentinelSyncUsers extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncUsersResponse> {
  }
  
  export class SentinelSyncUsersResponse extends EVA.API.ResponseMessage {
    Users : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDto[]; 
  }
  
  export class SentinelSyncGeneralResponseStationDto {
    ID : number; // Int32
    Name : string; 
    ProxyID : string; 
  }
  
  export class SentinelSyncUsersResponseUserDto {
    EmailAddress : string; 
    Nickname : string; 
    FirstName : string; 
    LastName : string; 
    LanguageID : string; 
    CountryID : string; 
    Type : EVA.Framework.UserTypes; 
    BackendSystemID : string; 
    BackendID : string; 
    TimeZone : string; 
    Functionalities : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDtoFunctionalityDto[]; 
    AuthenticationData : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDtoAuthenticationDataDto[]; 
  }
  
}