diff --git a/packages/xrpl/src/client/index.ts b/packages/xrpl/src/client/index.ts index 01a7993707..d286c8b705 100644 --- a/packages/xrpl/src/client/index.ts +++ b/packages/xrpl/src/client/index.ts @@ -639,6 +639,7 @@ class Client extends EventEmitter<EventTypes> { * Only used for multisigned transactions. * @returns The autofilled transaction. */ + /* eslint-disable max-len -- Long linter directives are needed to perform type-erasure in this function */ // eslint-disable-next-line max-lines-per-function, complexity -- handling v2 Payment transaction API requires more logic public async autofill<T extends SubmittableTransaction>( transaction: T, @@ -668,57 +669,44 @@ class Client extends EventEmitter<EventTypes> { } // further manipulation of tx_ uses non-SubmittableTransaction types, hence we need a typecast to any - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/consistent-type-assertions -- `any` type is required to perform non-protocol modifications to the JSON object const tx_ = tx as any - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- A transaction JSON must contain TransactionType field if (tx_.TransactionType === 'Payment') { - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- A Payment transaction JSON must contain Amount field - if (tx_.Amount == null) { + if (tx_.Amount == null && tx_.DeliverMax != null) { // If only DeliverMax is provided, use it to populate the Amount field - // eslint-disable-next-line max-len -- elaborate comment - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, max-depth -- A Payment transaction JSON might contain Amount field - if (tx_.DeliverMax != null) { - // eslint-disable-next-line max-len -- elaborate comment - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- ensure that the aliased fields are identical - tx_.Amount = tx_.DeliverMax - } + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- ensure that the aliased fields are identical + tx_.Amount = tx_.DeliverMax } // If Amount is not identical to DeliverMax, throw an error if ( - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- v2 rippled Payment-transaction JSON could contain these fields tx_.DeliverMax != null && - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- v2 rippled Payment-transaction JSON could contain these fields tx_.Amount != null && - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- v2 rippled Payment-transaction JSON could contain these fields tx_.Amount !== tx_.DeliverMax ) { throw new ValidationError( - 'PaymentTransaction: Amount and DeliverMax fields must be identical', + 'PaymentTransaction: Amount and DeliverMax fields must be identical when both are provided', ) } // remove the DeliverMax field - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- v2 rippled Payment-transaction could contain DeliverMax field if (tx_.DeliverMax != null) { - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- v2 rippled Payment-transaction could contain DeliverMax field delete tx_.DeliverMax } } - // eslint-disable-next-line max-len -- elaborate comment // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/promise-function-async -- Please ensure that tx_ is a serializable transaction return Promise.all(promises).then(() => tx_) } + /* eslint-enable max-len */ /** * Submits a signed/unsigned transaction.