/* 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.Framework {
  
  export enum AfterCommitType {
    Insert = 1,
    Update = 2,
    Delete = 3,
  }
  
  export enum AuthenticationResults {
    NotAuthenticated = 0,
    NotAuthorized = 1,
    Authenticated = 2,
    NeedsTwoStepAuthentication = 3,
    NeedsOrganizationUnitID = 4,
    NeedsEmailVerification = 5,
    NeedsPasswordReset = 6,
  }
  
  export enum BlobExposureType {
    Public = 0,
    Private = 1,
    OneTimeDownload = 2,
  }
  
  export enum ChangeBehaviorTypes {
    OnBeforeCreateAsync = 0,
    OnAfterCreateAsync = 1,
    OnBeforeUpdateAsync = 2,
    OnAfterUpdateAsync = 3,
    OnBeforeDeleteAsync = 4,
    OnPostCommitAsync = 5,
    OnCreateNewEntity = 6,
    OnDeleteEntity = 7,
    OnTrackChanges = 8,
    OnBeforeDetectChangesAsync = 9,
  }
  
  export enum ClientNotificationType {
    Info = 1,
    Success = 2,
    Error = 3,
    Warning = 4,
  }
  
  export enum ConcurrencyControl {
    None = 0,
    Optimistic = 1,
    OptimisticModifiedColumnsOnly = 2,
    AllowEquivalentUpdates = 3,
  }
  
  export enum ConnectionIntent {
    ReadWrite = 0,
    ReadOnly = 1,
  }
  
  export enum CustomActionTypes {
    Pre = 0,
    Post = 1,
  }
  
  export enum DaysOfWeek {
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64,
    All = 127,
  }
  
  export enum DeploymentStage {
    TestSuite = 0,
    Test = 1,
    Demo = 2,
    Acceptance = 3,
    Production = 4,
    Unknown = 5,
  }
  
  export class EnumDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export enum ErrorCodeStatus {
    New = 0,
    Solved = 10,
  }
  
  export enum ErrorCodeTypes {
    UserError = 0,
    ServerError = 1,
  }
  
  export enum EVAExecutionContextType {
    Unknown = 0,
    WebService = 1,
    MessageConsumer = 2,
    Task = 3,
  }
  
  export enum EventType {
    Info = 0,
    Success = 1,
    Warning = 2,
    Error = 3,
  }
  
  export enum FilterType {
    Equals = 0,
    StartsWith = 1,
    EndsWith = 2,
    Contains = 3,
    TableValuedParameter = 4,
  }
  
  export class FlagsEnumDto {
    ID : number; // Int32
    Name : string; 
    IDs : number[]; 
    Names : string[]; 
  }
  
  export enum FunctionalityScope {
    None = 0,
    Create = 1,
    Edit = 2,
    Delete = 4,
    View = 8,
    Manage = 31,
  }
  
  export class FunctionalityWithScope {
    Functionality : string; 
    Scope : EVA.Framework.FunctionalityScope; 
  }
  
  export enum MappingProfiles {
    Get = 0,
    Update = 1,
    Create = 2,
  }
  
  export enum NotificationPriority {
    Normal = 0,
    Low = 1,
  }
  
  export enum OrganizationUnitTypes {
    None = 0,
    Shop = 1,
    WebShop = 2,
    Container = 4,
    Pickup = 8,
    Warehouse = 16,
    Country = 36,
    Franchise = 64,
    EVA = 128,
    TestOrganizationUnit = 256,
    DisableLogin = 512,
    Supplier = 1024,
    Consignment = 3072,
    B2b = 4096,
    Region = 8196,
  }
  
  export class PageConfigBase {
    Start : number; // Int32
    Limit : number; // Int32
    SortProperty : string; 
    SortDirection : EVA.Framework.SortDirection; 
  }
  
  export class PageConfig extends EVA.Framework.PageConfigBase {
    Filter : any; 
  }
  
  export class PageConfigGeneric<T> extends EVA.Framework.PageConfigBase {
    Filter : T; 
  }
  
  export class PagedResult {
  }
  
  export class PagedResultGeneric<TModel> extends EVA.Framework.PagedResult {
    PageConfig : EVA.Framework.PageConfig; 
    Page : TModel[]; 
    Offset : number; // Int32
    Limit : number; // Int32
    Total : number; // Int32
    SortProperty : string; 
    SortDirection : EVA.Framework.SortDirection; 
    Filters : { [ key : string ] : string }; 
    NumberOfPages : number; // Int32
    CurrentPage : number; // Int32
  }
  
  export class PageTokenConfig {
  }
  
  export class PageTokenConfigGeneric<T> extends EVA.Framework.PageTokenConfig {
    Filter : T; 
    Limit : number; // Int32
  }
  
  export class RecurringTask {
    Cron : string; 
    ID : string; 
    LastExecution? : string; // DateTime, nullable
    NextExecution? : string; // DateTime, nullable
    IsDeleted : boolean; 
    Type : string; 
    TypeName : string; 
    Args : any[]; 
  }
  
  export enum RedisIntents {
    Default = 0,
    Cache = 1,
  }
  
  export enum RunStartupComponentSideEffectsSettings {
    DoNotRun = 0,
    Prompt = 1,
    AlwaysRun = 2,
  }
  
  export class ScrollablePageConfig<T> {
    Filter : T; 
    NextResultToken : string; 
    Limit? : number; // Int32, nullable
  }
  
  export class ScrollablePagedResult<T> {
    Page : T[]; 
    PreviousResultToken : string; 
    NextResultToken : string; 
  }
  
  export enum SettingExposureTypes {
    Normal = 0,
    ApplicationConfiguration = 1,
  }
  
  export enum SettingSensitivityTypes {
    Normal = 0,
    Sensitive = 1,
    Masked = 2,
    Encrypted = 6,
  }
  
  export enum SortDirection {
    Ascending = 0,
    Descending = 1,
    NotSorted = 2,
  }
  
  export class SortFieldDescriptor {
    FieldName : string; 
    Direction : EVA.Framework.SortDirection; 
  }
  
  export enum StartupPriority {
    Normal = 0,
    Later = 1,
    AsLateAsPossible = 2,
    Deferred = 3,
    AsSoonAsPossible = -2,
    Sooner = -1,
  }
  
  export enum StartupType {
    Normal = 0,
    Always = 1,
  }
  
  export enum UserTypes {
    None = 0,
    Employee = 1,
    Customer = 2,
    Anonymous = 4,
    Business = 8,
    System = 17,
    Migrated = 32,
    Debtor = 64,
    LimitedTrust = 256,
    Tester = 512,
    RemovedByRequest = 1024,
  }
  
}