/* 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.Blobs {
  
  export class BlobDto {
    ID : string; 
    OriginalName : string; 
    MimeType : string; 
    Category : string; 
    ExpireDate? : string; // DateTime, nullable
    LocationType : string; 
    Url : string; 
  }
  
  export class CreateBlob extends EVA.API.RequestMessageGeneric<EVA.Blobs.CreateBlobResponse> {
    Category : string; 
    OriginalName : string; 
    MimeType : string; 
    ExpireDate? : string; // DateTime, nullable
    LocationType : string; 
  }
  
  export class CreateBlobResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class DeleteBlob extends EVA.API.RequestMessageWithEmptyResponse {
    BlobID : string; 
  }
  
  export class GetBlobInfo extends EVA.API.RequestMessageGeneric<EVA.Blobs.GetBlobInfoResponse> {
    Guid : string; 
    Category : string; 
    OriginalName : string; 
  }
  
  export class GetBlobInfoResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    MimeType : string; 
    OriginalName : string; 
    Category : string; 
    ExpireDate? : string; // DateTime, nullable
    LastModificationTimeUtc : string; // DateTime
    Size : number; // Int64
    Url : string; 
  }
  
  export class GetPlaceholderResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class GetProductImagePlaceholder extends EVA.API.RequestMessageGeneric<EVA.Blobs.GetPlaceholderResponse> {
  }
  
  export class ListBlobs extends EVA.API.PagedResultRequest<EVA.Blobs.ListBlobsResponse> {
  }
  
  export class ListBlobsResponse extends EVA.API.PagedResultResponse<EVA.Blobs.BlobDto> {
  }
  
  export class ProcessDocument extends EVA.API.RequestMessageGeneric<EVA.Blobs.ProcessDocumentResponse> {
    Data : string; 
    Type : string; 
  }
  
  export class ProcessDocumentResponse extends EVA.API.ResponseMessage {
    ProcessedData : string; 
    ExtractedText : { [ key : string ] : any }; 
    Success : boolean; 
  }
  
  export class SetPlaceholderResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class SetProductImagePlaceholder extends EVA.API.RequestMessageGeneric<EVA.Blobs.SetPlaceholderResponse> {
    MimeType : string; 
    Data : string; 
  }
  
  export class StoreBlob extends EVA.API.RequestMessageGeneric<EVA.Blobs.StoreBlobResponse> {
    Category : string; 
    OriginalName : string; 
    MimeType : string; 
    Data : string; 
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class StoreBlobResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
}