/* 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.API {
  
  export class RequestMessage {
  }
  
  export class CreateRequest<TModel> extends EVA.API.RequestMessage {
    ToCreate : TModel; 
  }
  
  export class ResponseMessage {
    Error : EVA.API.ServiceError; 
    Exception: EVA.API.ServiceExceptionResult;
  }
  
  export class CreateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class DeleteRequest extends EVA.API.RequestMessage {
    ID : number; // Int32
  }
  
  export class EmptyResponseMessage extends EVA.API.ResponseMessage {
  }
  
  export class RequestMessageGeneric<TResponse extends ResponseMessage> extends EVA.API.RequestMessage implements EVA.API.IRequestRespondsAs<TResponse> {
  }
  
  export class FilteredPagedResultRequest<TFilter, TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<TFilter>; 
  }
  
  export class GetListResponse<TResult> extends EVA.API.ResponseMessage {
    Result : TResult[]; 
  }
  
  export class GetRequest extends EVA.API.RequestMessage {
    ID : number; // Int32
  }
  
  export class GetRequestGeneric<T extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<T> {
    ID : number; // Int32
  }
  
  export class GetResponse<TResult> extends EVA.API.ResponseMessage {
    Result : TResult; 
  }
  
  export interface IRequestRespondsAs<TResponse extends EVA.API.ResponseMessage> {
  }
  
  export class PagedRequestMessage<TFilter, TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    InitialPageConfig : EVA.Framework.PageTokenConfigGeneric<TFilter>; 
    PageToken : string; 
  }
  
  export class PagedResponseMessage<T> extends EVA.API.ResponseMessage {
    Results : T[]; 
    PreviousPageToken : string; 
    NextPageToken : string; 
  }
  
  export class PagedResultRequest<TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    PageConfig : EVA.Framework.PageConfig; 
  }
  
  export class PagedResultResponse<TModel> extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<TModel>; 
  }
  
  export enum PipelinePriorities {
    NotSpecified = 0,
    Unimportant = 1,
    RarelyExecuted = 10,
    OftenExecuted = 100,
    NearlyAlwaysExecuted = 1000,
    ExecutedEveryRequest = 10000,
    HighPriority = 100000,
    DoesSetup = 1000000,
    FirstToExecute = 2147483647,
    LastToExecute = -2147483648,
  }
  
  export class RequestMessageWithEmptyResponse extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
  }
  
  export class RequestMessageWithResourceResponse extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class ResourceResponseMessage extends EVA.API.ResponseMessage {
    Url : string; 
  }
  
  export class ServiceError {
    Message : string; 
    Type : string; 
    Code : string; 
    RequestID : string; 
  }
  
  export class ServiceExceptionResult {
    ExceptionMessage : string; 
    Type : string; 
    ErrorCode : string; 
    RequestID : string; 
  }
  
  export class UpdateRequest<TModel> extends EVA.API.RequestMessage {
    ToUpdate : TModel; 
  }
  
}