/* 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.Pin {
  
  export class AbortTransaction extends EVA.API.RequestMessageGeneric<EVA.Pin.AbortTransactionResponse> {
    StationID? : number; // Int32, nullable
    HardwareID : string; 
    UseHardwareID? : boolean; 
  }
  
  export class AbortTransactionResponse extends EVA.API.ResponseMessage {
    ResultStatus : EVA.Pin.PinTransactionResultStatus; 
  }
  
  export enum PinTransactionResultStatus {
    None = 0,
    TimeoutFromPinDevice = 1,
    TransactionStillInProgressForPayment = 2,
    Success = 3,
    Aborted = 4,
    Failure = 5,
    DeviceUnavailable = 6,
    PrintLastTicket = 7,
    TimedOut = 8,
    TransactionAlreadyInProgressForUser = 9,
    UserMustScanStationToAbort = 10,
    PaymentValidationError = 11,
    InProgress = 12,
    ClientFailure = 13,
    SelectPaymentMethod = 14,
    MustRevalidate = 16,
    ConnectToTerminal = 17,
  }
  
  export class PrintLastReceipt extends EVA.API.RequestMessageGeneric<EVA.Pin.PrintLastReceiptResponse> {
    StationID : number; // Int32
    DeviceID : number; // Int32
  }
  
  export class PrintLastReceiptCallback extends EVA.API.RequestMessageWithEmptyResponse {
    StationID : number; // Int32
    ReceiptLines : string[]; 
  }
  
  export class PrintLastReceiptResponse extends EVA.API.ResponseMessage {
    Success : boolean; 
  }
  
  export class PrintPinReceipt extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ECRID : string; 
    OrderReference : string; 
    ReceiptLines : string[]; 
    TransactionSucceeded : boolean; 
    SignatureLines : EVA.Pin.SignatureLine[]; 
    ReceiptType : string; 
  }
  
  export enum ResultStatus {
    None = 0,
    TransactionStillInProgressForPayment = 1,
    Success = 2,
    Aborted = 3,
    Failure = 4,
    Timeout = 5,
    NoRequestPending = 6,
    ValidationError = 7,
  }
  
  export class SignatureLine {
    X1 : number; // Int32
    Y1 : number; // Int32
    X2 : number; // Int32
    Y2 : number; // Int32
  }
  
  export class StartTransaction extends EVA.API.RequestMessageGeneric<EVA.Pin.StartTransactionResponse> {
    PaymentTransactionID : number; // Int32
    HardwareID : string; 
    UseHardwareID : boolean; 
    StationID? : number; // Int32, nullable
  }
  
  export class StartTransactionResponse extends EVA.API.ResponseMessage {
    ResultStatus : EVA.Pin.PinTransactionResultStatus; 
    ResultStatusString : string; 
    OpenAmount : number; // Decimal
    CardCircuit : string; 
    LocalTerminalAddress : string; 
  }
  
  export enum TransactionType {
    Purchase = 0,
    Refund = 1,
  }
  
}