/* 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.Payment.UserCard {
  
  export class CancelPendingUserCardPayment extends EVA.API.RequestMessageWithEmptyResponse {
    PaymentTransactionID : number; // Int32
  }
  
  export class CreateUserCard extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.CreateUserCardResponse> {
    UserID? : number; // Int32, nullable
    CurrencyID : string; 
    UserCardTypeID : number; // Int32
  }
  
  export class CreateUserCardMutation extends EVA.API.RequestMessageWithEmptyResponse {
    UserCardID : number; // Int32
    Amount : number; // Decimal
    Description : string; 
  }
  
  export class CreateUserCardResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class GetUserCardBalance extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardBalanceResponse> {
    UserCardID : number; // Int32
    CurrencyID : string; 
  }
  
  export class GetUserCardBalanceResponse extends EVA.API.ResponseMessage {
    CurrentBalance : EVA.Core.UserCardBalance; 
  }
  
  export class GetUserCardDetails extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardDetailsResponse> {
    UserCardID? : number; // Int32, nullable
    CardNumber : string; 
    CurrencyID : string; 
  }
  
  export class GetUserCardDetailsResponse extends EVA.API.ResponseMessage {
    UserCard : EVA.Core.UserCardDto; 
  }
  
  export class GetUserCardsForUser extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardsForUserResponse> {
    UserID? : number; // Int32, nullable
    CurrencyID : string; 
  }
  
  export class GetUserCardsForUserResponse extends EVA.API.ResponseMessage {
    UserCards : EVA.Core.UserCardDto[]; 
  }
  
  export class GetUserCardTypes extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardTypesResponse> {
  }
  
  export class GetUserCardTypesResponse extends EVA.API.ResponseMessage {
    Types : EVA.Core.UserCardTypeDto[]; 
  }
  
  export class ListUserCardDto {
    Barcode : string; 
    ID : number; // Int32
    Type : EVA.Core.UserCardTypeDto; 
    UserFullName : string; 
  }
  
  export class ListUserCardMutations extends EVA.API.PagedResultRequest<EVA.Payment.UserCard.ListUserCardMutationsResponse> {
    UserCardID : number; // Int32
  }
  
  export class ListUserCardMutationsDto {
    Amount : number; // Decimal
    CreationTime : string; // DateTime
    Description : string; 
    Status : EVA.Core.UserCardMutationStatuses; 
  }
  
  export class ListUserCardMutationsResponse extends EVA.API.PagedResultResponse<EVA.Payment.UserCard.ListUserCardMutationsDto> {
  }
  
  export class ListUserCards extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.ListUserCardsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListUserCardsFilter>; 
  }
  
  export class ListUserCardsResponse extends EVA.API.PagedResultResponse<EVA.Payment.UserCard.ListUserCardDto> {
  }
  
  export class RefundAmountFromUserCard extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.RefundAmountFromUserCardResponse> {
    UserCardID : number; // Int32
    Amount : number; // Decimal
    PaymentTransactionID? : number; // Int32, nullable
    PaymentTypeID? : number; // Int32, nullable
  }
  
  export class RefundAmountFromUserCardResponse extends EVA.API.ResponseMessage {
    ActualRefundedAmount : number; // Decimal
    RefundStatus : EVA.Core.PaymentStatuses; 
    Message : EVA.Payment.UserCard.RefundAmountFromUserCardResponseRefundAttemptMessage; 
  }
  
  export class RefundAmountFromUserCardResponseRefundAttemptMessage {
    Code : string; 
    Message : string; 
  }
  
}