/* 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.Privacy {
  
  export class CreatePrivacyDataRequest extends EVA.API.RequestMessageGeneric<EVA.Privacy.CreatePrivacyDataRequestResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class CreatePrivacyDataRequestResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePrivacyOrderDataRemovalRequest extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    Type : string; 
  }
  
  export class CreatePrivacyRemovalRequest extends EVA.API.RequestMessageGeneric<EVA.Privacy.CreatePrivacyRemovalRequestResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class CreatePrivacyRemovalRequestResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Hash : string; 
  }
  
  export enum DataRequestStatus {
    Requested = 0,
    Processing = 1,
    Ready = 2,
    Expired = 3,
  }
  
  export class DeletePrivacyDataRequest extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class GetPrivacyDataRequestByID extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyDataRequestByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPrivacyDataRequestByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.DataRequestStatus; 
    GenerationTime? : string; // DateTime, nullable
    BlobID : string; 
    Url : string; 
  }
  
  export class GetPrivacyOrderDataRemovals extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyOrderDataRemovalsResponse> {
    OrderID : number; // Int32
  }
  
  export class GetPrivacyOrderDataRemovalsResponse extends EVA.API.ResponseMessage {
    Results : EVA.Privacy.GetPrivacyOrderDataRemovalsResponseModel[]; 
  }
  
  export class GetPrivacyRemovalRequestByID extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyRemovalRequestByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPrivacyRemovalRequestByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.RemovalRequestStatus; 
    RemovalTime? : string; // DateTime, nullable
    Hash : string; 
  }
  
  export class ListPrivacyDataRequests extends EVA.API.PagedResultRequest<EVA.Privacy.ListPrivacyDataRequestsResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class ListPrivacyDataRequestsResponse extends EVA.API.PagedResultResponse<EVA.Privacy.ListPrivacyDataRequestsResponsePrivacyDataRequest> {
  }
  
  export class ListPrivacyRemovalRequests extends EVA.API.PagedResultRequest<EVA.Privacy.ListPrivacyRemovalRequestsResponse> {
    UserID? : number; // Int32, nullable
    Hash : string; 
  }
  
  export class ListPrivacyRemovalRequestsResponse extends EVA.API.PagedResultResponse<EVA.Privacy.ListPrivacyRemovalRequestsResponsePrivacyRemovalRequest> {
  }
  
  export class GetPrivacyOrderDataRemovalsResponseModel {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    Type : string; 
  }
  
  export class ListPrivacyDataRequestsResponsePrivacyDataRequest {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.DataRequestStatus; 
    GenerationTime? : string; // DateTime, nullable
    BlobID : string; 
    Url : string; 
  }
  
  export class ListPrivacyRemovalRequestsResponsePrivacyRemovalRequest {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.RemovalRequestStatus; 
    RemovalTime? : string; // DateTime, nullable
    Hash : string; 
  }
  
  export enum RemovalRequestStatus {
    Requested = 0,
    Processing = 1,
    Done = 2,
  }
  
  export class ScheduleRemovalRequests extends EVA.API.RequestMessageWithEmptyResponse {
    IDs : number[]; 
  }
  
}