123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.validatePayment = exports.PaymentFlags = void 0;
- const errors_1 = require("../../errors");
- const utils_1 = require("../utils");
- const common_1 = require("./common");
- var PaymentFlags;
- (function (PaymentFlags) {
- PaymentFlags[PaymentFlags["tfNoDirectRipple"] = 65536] = "tfNoDirectRipple";
- PaymentFlags[PaymentFlags["tfPartialPayment"] = 131072] = "tfPartialPayment";
- PaymentFlags[PaymentFlags["tfLimitQuality"] = 262144] = "tfLimitQuality";
- })(PaymentFlags = exports.PaymentFlags || (exports.PaymentFlags = {}));
- function validatePayment(tx) {
- (0, common_1.validateBaseTransaction)(tx);
- if (tx.Amount === undefined) {
- throw new errors_1.ValidationError('PaymentTransaction: missing field Amount');
- }
- if (!(0, common_1.isAmount)(tx.Amount)) {
- throw new errors_1.ValidationError('PaymentTransaction: invalid Amount');
- }
- if (tx.Destination === undefined) {
- throw new errors_1.ValidationError('PaymentTransaction: missing field Destination');
- }
- if (!(0, common_1.isAmount)(tx.Destination)) {
- throw new errors_1.ValidationError('PaymentTransaction: invalid Destination');
- }
- if (tx.DestinationTag != null && typeof tx.DestinationTag !== 'number') {
- throw new errors_1.ValidationError('PaymentTransaction: DestinationTag must be a number');
- }
- if (tx.InvoiceID !== undefined && typeof tx.InvoiceID !== 'string') {
- throw new errors_1.ValidationError('PaymentTransaction: InvoiceID must be a string');
- }
- if (tx.Paths !== undefined &&
- !isPaths(tx.Paths)) {
- throw new errors_1.ValidationError('PaymentTransaction: invalid Paths');
- }
- if (tx.SendMax !== undefined && !(0, common_1.isAmount)(tx.SendMax)) {
- throw new errors_1.ValidationError('PaymentTransaction: invalid SendMax');
- }
- checkPartialPayment(tx);
- }
- exports.validatePayment = validatePayment;
- function checkPartialPayment(tx) {
- var _a;
- if (tx.DeliverMin != null) {
- if (tx.Flags == null) {
- throw new errors_1.ValidationError('PaymentTransaction: tfPartialPayment flag required with DeliverMin');
- }
- const flags = tx.Flags;
- const isTfPartialPayment = typeof flags === 'number'
- ? (0, utils_1.isFlagEnabled)(flags, PaymentFlags.tfPartialPayment)
- : (_a = flags.tfPartialPayment) !== null && _a !== void 0 ? _a : false;
- if (!isTfPartialPayment) {
- throw new errors_1.ValidationError('PaymentTransaction: tfPartialPayment flag required with DeliverMin');
- }
- if (!(0, common_1.isAmount)(tx.DeliverMin)) {
- throw new errors_1.ValidationError('PaymentTransaction: invalid DeliverMin');
- }
- }
- }
- function isPathStep(pathStep) {
- if (pathStep.account !== undefined && typeof pathStep.account !== 'string') {
- return false;
- }
- if (pathStep.currency !== undefined &&
- typeof pathStep.currency !== 'string') {
- return false;
- }
- if (pathStep.issuer !== undefined && typeof pathStep.issuer !== 'string') {
- return false;
- }
- if (pathStep.account !== undefined &&
- pathStep.currency === undefined &&
- pathStep.issuer === undefined) {
- return true;
- }
- if (pathStep.currency !== undefined || pathStep.issuer !== undefined) {
- return true;
- }
- return false;
- }
- function isPath(path) {
- for (const pathStep of path) {
- if (!isPathStep(pathStep)) {
- return false;
- }
- }
- return true;
- }
- function isPaths(paths) {
- if (!Array.isArray(paths) || paths.length === 0) {
- return false;
- }
- for (const path of paths) {
- if (!Array.isArray(path) || path.length === 0) {
- return false;
- }
- if (!isPath(path)) {
- return false;
- }
- }
- return true;
- }
- //# sourceMappingURL=payment.js.map
|