import { Common } from "./common.namespace";
import { Payment } from "./payment.namespace";
/**
 * Transaction report
 * @description Namespace for Transaction report
 */
export declare namespace TransactionReport {
    /**
     * Enums
     * @description Namespace for Enums
     */
    namespace Enums {
        /**
         * Search operator
         * @description Enum for Search operator
         */
        enum SearchOperator {
            Equal = "EQ",
            LessThan = "LT",
            LessOrEqual = "LE",
            GreaterThan = "GT",
            GreaterOrEqual = "GE"
        }
        /**
         * Search target
         * @description Enum for Search target
         */
        enum SearchTarget {
            CreationDate = "CREATION_DATE",
            Uuid = "UUID",
            MaskedPan = "MASKED_PAN",
            ServiceID = "SERVICE_ID"
        }
    }
    /**
     * Interfaces
     * @description Namespace for Interfaces
     */
    namespace Interfaces {
        /**
         * Request
         * @description Interface for Request
         */
        interface IRequest extends Common.Interfaces.ISaleToPOIRequest {
            TransactionReportRequest?: ITransactionReportRequest;
        }
        /**
         * Response
         * @description Interface for Response
         */
        interface IResponse extends Common.Interfaces.ISaleToPOIResponse {
            TransactionReportResponse?: ITransactionReportResponse;
        }
        /**
         * Transaction report request
         * @description Interface for Transaction report request
         */
        interface ITransactionReportRequest {
            BlockStart?: number;
            BlockStop?: number;
            DescendingOrder?: boolean;
            SearchCriterias?: ISearchCriterias;
            ProprietaryTags?: IRequestProprietaryTags;
        }
        /**
         * Transaction report response
         * @description Interface for Transaction report response
         */
        interface ITransactionReportResponse {
            BlockStart?: number;
            BlockStop?: number;
            ReportFullSize?: number;
            TransactionReport?: Payment.Interfaces.IPaymentResponse[];
        }
        /**
         * Request proprietary tags
         * @description Interface for Request proprietary tags
         */
        interface IRequestProprietaryTags {
            IncludePaymentReceipts?: boolean;
        }
        /**
         * Search criterias
         * @description Interface for Search criterias
         */
        interface ISearchCriterias {
            SearchOR?: ISearchCriterias[] | ISearchCriteria[];
            SearchAND?: ISearchCriterias[] | ISearchCriteria[];
        }
        /**
         * Search criteria
         * @description Interface for Search criteria
         */
        interface ISearchCriteria {
            Target?: Enums.SearchTarget;
            Operator?: Enums.SearchOperator;
            Value?: string;
        }
    }
}
