xrpjson 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +183 -0
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +27 -0
- package/dist/errors.js.map +1 -0
- package/dist/fp/factories/account-delete.d.ts +33 -0
- package/dist/fp/factories/account-delete.d.ts.map +1 -0
- package/dist/fp/factories/account-delete.js +138 -0
- package/dist/fp/factories/account-delete.js.map +1 -0
- package/dist/fp/factories/account-set.d.ts +31 -0
- package/dist/fp/factories/account-set.d.ts.map +1 -0
- package/dist/fp/factories/account-set.js +44 -0
- package/dist/fp/factories/account-set.js.map +1 -0
- package/dist/fp/factories/amm-bid.d.ts +134 -0
- package/dist/fp/factories/amm-bid.d.ts.map +1 -0
- package/dist/fp/factories/amm-bid.js +82 -0
- package/dist/fp/factories/amm-bid.js.map +1 -0
- package/dist/fp/factories/amm-clawback.d.ts +166 -0
- package/dist/fp/factories/amm-clawback.d.ts.map +1 -0
- package/dist/fp/factories/amm-clawback.js +143 -0
- package/dist/fp/factories/amm-clawback.js.map +1 -0
- package/dist/fp/factories/amm-create.d.ts +91 -0
- package/dist/fp/factories/amm-create.d.ts.map +1 -0
- package/dist/fp/factories/amm-create.js +140 -0
- package/dist/fp/factories/amm-create.js.map +1 -0
- package/dist/fp/factories/amm-delete.d.ts +84 -0
- package/dist/fp/factories/amm-delete.d.ts.map +1 -0
- package/dist/fp/factories/amm-delete.js +36 -0
- package/dist/fp/factories/amm-delete.js.map +1 -0
- package/dist/fp/factories/amm-deposit.d.ts +109 -0
- package/dist/fp/factories/amm-deposit.d.ts.map +1 -0
- package/dist/fp/factories/amm-deposit.js +68 -0
- package/dist/fp/factories/amm-deposit.js.map +1 -0
- package/dist/fp/factories/amm-vote.d.ts +87 -0
- package/dist/fp/factories/amm-vote.d.ts.map +1 -0
- package/dist/fp/factories/amm-vote.js +53 -0
- package/dist/fp/factories/amm-vote.js.map +1 -0
- package/dist/fp/factories/amm-withdraw.d.ts +131 -0
- package/dist/fp/factories/amm-withdraw.d.ts.map +1 -0
- package/dist/fp/factories/amm-withdraw.js +147 -0
- package/dist/fp/factories/amm-withdraw.js.map +1 -0
- package/dist/fp/factories/batch.d.ts +133 -0
- package/dist/fp/factories/batch.d.ts.map +1 -0
- package/dist/fp/factories/batch.js +264 -0
- package/dist/fp/factories/batch.js.map +1 -0
- package/dist/fp/factories/check-cancel.d.ts +22 -0
- package/dist/fp/factories/check-cancel.d.ts.map +1 -0
- package/dist/fp/factories/check-cancel.js +119 -0
- package/dist/fp/factories/check-cancel.js.map +1 -0
- package/dist/fp/factories/check-cash.d.ts +84 -0
- package/dist/fp/factories/check-cash.d.ts.map +1 -0
- package/dist/fp/factories/check-cash.js +95 -0
- package/dist/fp/factories/check-cash.js.map +1 -0
- package/dist/fp/factories/check-create.d.ts +82 -0
- package/dist/fp/factories/check-create.d.ts.map +1 -0
- package/dist/fp/factories/check-create.js +101 -0
- package/dist/fp/factories/check-create.js.map +1 -0
- package/dist/fp/factories/clawback.d.ts +160 -0
- package/dist/fp/factories/clawback.d.ts.map +1 -0
- package/dist/fp/factories/clawback.js +111 -0
- package/dist/fp/factories/clawback.js.map +1 -0
- package/dist/fp/factories/confidential-mpt-clawback.d.ts +24 -0
- package/dist/fp/factories/confidential-mpt-clawback.d.ts.map +1 -0
- package/dist/fp/factories/confidential-mpt-clawback.js +200 -0
- package/dist/fp/factories/confidential-mpt-clawback.js.map +1 -0
- package/dist/fp/factories/confidential-mpt-convert-back.d.ts +32 -0
- package/dist/fp/factories/confidential-mpt-convert-back.d.ts.map +1 -0
- package/dist/fp/factories/confidential-mpt-convert-back.js +203 -0
- package/dist/fp/factories/confidential-mpt-convert-back.js.map +1 -0
- package/dist/fp/factories/confidential-mpt-convert.d.ts +32 -0
- package/dist/fp/factories/confidential-mpt-convert.d.ts.map +1 -0
- package/dist/fp/factories/confidential-mpt-convert.js +209 -0
- package/dist/fp/factories/confidential-mpt-convert.js.map +1 -0
- package/dist/fp/factories/confidential-mpt-merge-inbox.d.ts +18 -0
- package/dist/fp/factories/confidential-mpt-merge-inbox.d.ts.map +1 -0
- package/dist/fp/factories/confidential-mpt-merge-inbox.js +130 -0
- package/dist/fp/factories/confidential-mpt-merge-inbox.js.map +1 -0
- package/dist/fp/factories/confidential-mpt-send.d.ts +38 -0
- package/dist/fp/factories/confidential-mpt-send.d.ts.map +1 -0
- package/dist/fp/factories/confidential-mpt-send.js +254 -0
- package/dist/fp/factories/confidential-mpt-send.js.map +1 -0
- package/dist/fp/factories/credential-accept.d.ts +23 -0
- package/dist/fp/factories/credential-accept.d.ts.map +1 -0
- package/dist/fp/factories/credential-accept.js +135 -0
- package/dist/fp/factories/credential-accept.js.map +1 -0
- package/dist/fp/factories/credential-create.d.ts +24 -0
- package/dist/fp/factories/credential-create.d.ts.map +1 -0
- package/dist/fp/factories/credential-create.js +204 -0
- package/dist/fp/factories/credential-create.js.map +1 -0
- package/dist/fp/factories/credential-delete.d.ts +33 -0
- package/dist/fp/factories/credential-delete.d.ts.map +1 -0
- package/dist/fp/factories/credential-delete.js +167 -0
- package/dist/fp/factories/credential-delete.js.map +1 -0
- package/dist/fp/factories/delegate-set.d.ts +52 -0
- package/dist/fp/factories/delegate-set.d.ts.map +1 -0
- package/dist/fp/factories/delegate-set.js +190 -0
- package/dist/fp/factories/delegate-set.js.map +1 -0
- package/dist/fp/factories/deposit-preauth.d.ts +183 -0
- package/dist/fp/factories/deposit-preauth.d.ts.map +1 -0
- package/dist/fp/factories/deposit-preauth.js +159 -0
- package/dist/fp/factories/deposit-preauth.js.map +1 -0
- package/dist/fp/factories/did-delete.d.ts +22 -0
- package/dist/fp/factories/did-delete.d.ts.map +1 -0
- package/dist/fp/factories/did-delete.js +126 -0
- package/dist/fp/factories/did-delete.js.map +1 -0
- package/dist/fp/factories/did-set.d.ts +68 -0
- package/dist/fp/factories/did-set.d.ts.map +1 -0
- package/dist/fp/factories/did-set.js +178 -0
- package/dist/fp/factories/did-set.js.map +1 -0
- package/dist/fp/factories/escrow-cancel.d.ts +28 -0
- package/dist/fp/factories/escrow-cancel.d.ts.map +1 -0
- package/dist/fp/factories/escrow-cancel.js +127 -0
- package/dist/fp/factories/escrow-cancel.js.map +1 -0
- package/dist/fp/factories/escrow-create.d.ts +103 -0
- package/dist/fp/factories/escrow-create.d.ts.map +1 -0
- package/dist/fp/factories/escrow-create.js +133 -0
- package/dist/fp/factories/escrow-create.js.map +1 -0
- package/dist/fp/factories/escrow-finish.d.ts +39 -0
- package/dist/fp/factories/escrow-finish.d.ts.map +1 -0
- package/dist/fp/factories/escrow-finish.js +173 -0
- package/dist/fp/factories/escrow-finish.js.map +1 -0
- package/dist/fp/factories/ledger-state-fix.d.ts +31 -0
- package/dist/fp/factories/ledger-state-fix.d.ts.map +1 -0
- package/dist/fp/factories/ledger-state-fix.js +163 -0
- package/dist/fp/factories/ledger-state-fix.js.map +1 -0
- package/dist/fp/factories/loan-broker-cover-clawback.d.ts +106 -0
- package/dist/fp/factories/loan-broker-cover-clawback.d.ts.map +1 -0
- package/dist/fp/factories/loan-broker-cover-clawback.js +122 -0
- package/dist/fp/factories/loan-broker-cover-clawback.js.map +1 -0
- package/dist/fp/factories/loan-broker-cover-deposit.d.ts +65 -0
- package/dist/fp/factories/loan-broker-cover-deposit.d.ts.map +1 -0
- package/dist/fp/factories/loan-broker-cover-deposit.js +81 -0
- package/dist/fp/factories/loan-broker-cover-deposit.js.map +1 -0
- package/dist/fp/factories/loan-broker-cover-withdraw.d.ts +96 -0
- package/dist/fp/factories/loan-broker-cover-withdraw.d.ts.map +1 -0
- package/dist/fp/factories/loan-broker-cover-withdraw.js +116 -0
- package/dist/fp/factories/loan-broker-cover-withdraw.js.map +1 -0
- package/dist/fp/factories/loan-broker-delete.d.ts +20 -0
- package/dist/fp/factories/loan-broker-delete.d.ts.map +1 -0
- package/dist/fp/factories/loan-broker-delete.js +94 -0
- package/dist/fp/factories/loan-broker-delete.js.map +1 -0
- package/dist/fp/factories/loan-broker-set.d.ts +108 -0
- package/dist/fp/factories/loan-broker-set.d.ts.map +1 -0
- package/dist/fp/factories/loan-broker-set.js +133 -0
- package/dist/fp/factories/loan-broker-set.js.map +1 -0
- package/dist/fp/factories/loan-delete.d.ts +18 -0
- package/dist/fp/factories/loan-delete.d.ts.map +1 -0
- package/dist/fp/factories/loan-delete.js +95 -0
- package/dist/fp/factories/loan-delete.js.map +1 -0
- package/dist/fp/factories/loan-manage.d.ts +72 -0
- package/dist/fp/factories/loan-manage.d.ts.map +1 -0
- package/dist/fp/factories/loan-manage.js +79 -0
- package/dist/fp/factories/loan-manage.js.map +1 -0
- package/dist/fp/factories/loan-pay.d.ts +70 -0
- package/dist/fp/factories/loan-pay.d.ts.map +1 -0
- package/dist/fp/factories/loan-pay.js +115 -0
- package/dist/fp/factories/loan-pay.js.map +1 -0
- package/dist/fp/factories/loan-set.d.ts +67 -0
- package/dist/fp/factories/loan-set.d.ts.map +1 -0
- package/dist/fp/factories/loan-set.js +102 -0
- package/dist/fp/factories/loan-set.js.map +1 -0
- package/dist/fp/factories/mptoken-authorize.d.ts +83 -0
- package/dist/fp/factories/mptoken-authorize.d.ts.map +1 -0
- package/dist/fp/factories/mptoken-authorize.js +63 -0
- package/dist/fp/factories/mptoken-authorize.js.map +1 -0
- package/dist/fp/factories/mptoken-issuance-create.d.ts +71 -0
- package/dist/fp/factories/mptoken-issuance-create.d.ts.map +1 -0
- package/dist/fp/factories/mptoken-issuance-create.js +135 -0
- package/dist/fp/factories/mptoken-issuance-create.js.map +1 -0
- package/dist/fp/factories/mptoken-issuance-destroy.d.ts +32 -0
- package/dist/fp/factories/mptoken-issuance-destroy.d.ts.map +1 -0
- package/dist/fp/factories/mptoken-issuance-destroy.js +105 -0
- package/dist/fp/factories/mptoken-issuance-destroy.js.map +1 -0
- package/dist/fp/factories/mptoken-issuance-set.d.ts +196 -0
- package/dist/fp/factories/mptoken-issuance-set.d.ts.map +1 -0
- package/dist/fp/factories/mptoken-issuance-set.js +333 -0
- package/dist/fp/factories/mptoken-issuance-set.js.map +1 -0
- package/dist/fp/factories/nftoken-accept-offer.d.ts +108 -0
- package/dist/fp/factories/nftoken-accept-offer.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-accept-offer.js +105 -0
- package/dist/fp/factories/nftoken-accept-offer.js.map +1 -0
- package/dist/fp/factories/nftoken-burn.d.ts +27 -0
- package/dist/fp/factories/nftoken-burn.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-burn.js +125 -0
- package/dist/fp/factories/nftoken-burn.js.map +1 -0
- package/dist/fp/factories/nftoken-cancel-offer.d.ts +19 -0
- package/dist/fp/factories/nftoken-cancel-offer.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-cancel-offer.js +143 -0
- package/dist/fp/factories/nftoken-cancel-offer.js.map +1 -0
- package/dist/fp/factories/nftoken-create-offer.d.ts +159 -0
- package/dist/fp/factories/nftoken-create-offer.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-create-offer.js +212 -0
- package/dist/fp/factories/nftoken-create-offer.js.map +1 -0
- package/dist/fp/factories/nftoken-mint.d.ts +155 -0
- package/dist/fp/factories/nftoken-mint.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-mint.js +165 -0
- package/dist/fp/factories/nftoken-mint.js.map +1 -0
- package/dist/fp/factories/nftoken-modify.d.ts +28 -0
- package/dist/fp/factories/nftoken-modify.d.ts.map +1 -0
- package/dist/fp/factories/nftoken-modify.js +209 -0
- package/dist/fp/factories/nftoken-modify.js.map +1 -0
- package/dist/fp/factories/offer-cancel.d.ts +21 -0
- package/dist/fp/factories/offer-cancel.d.ts.map +1 -0
- package/dist/fp/factories/offer-cancel.js +99 -0
- package/dist/fp/factories/offer-cancel.js.map +1 -0
- package/dist/fp/factories/offer-create.d.ts +125 -0
- package/dist/fp/factories/offer-create.d.ts.map +1 -0
- package/dist/fp/factories/offer-create.js +230 -0
- package/dist/fp/factories/offer-create.js.map +1 -0
- package/dist/fp/factories/oracle-delete.d.ts +21 -0
- package/dist/fp/factories/oracle-delete.d.ts.map +1 -0
- package/dist/fp/factories/oracle-delete.js +101 -0
- package/dist/fp/factories/oracle-delete.js.map +1 -0
- package/dist/fp/factories/oracle-set.d.ts +40 -0
- package/dist/fp/factories/oracle-set.d.ts.map +1 -0
- package/dist/fp/factories/oracle-set.js +257 -0
- package/dist/fp/factories/oracle-set.js.map +1 -0
- package/dist/fp/factories/payment-channel-claim.d.ts +153 -0
- package/dist/fp/factories/payment-channel-claim.d.ts.map +1 -0
- package/dist/fp/factories/payment-channel-claim.js +118 -0
- package/dist/fp/factories/payment-channel-claim.js.map +1 -0
- package/dist/fp/factories/payment-channel-create.d.ts +30 -0
- package/dist/fp/factories/payment-channel-create.d.ts.map +1 -0
- package/dist/fp/factories/payment-channel-create.js +172 -0
- package/dist/fp/factories/payment-channel-create.js.map +1 -0
- package/dist/fp/factories/payment-channel-fund.d.ts +25 -0
- package/dist/fp/factories/payment-channel-fund.d.ts.map +1 -0
- package/dist/fp/factories/payment-channel-fund.js +142 -0
- package/dist/fp/factories/payment-channel-fund.js.map +1 -0
- package/dist/fp/factories/payment.d.ts +65 -0
- package/dist/fp/factories/payment.d.ts.map +1 -0
- package/dist/fp/factories/payment.js +48 -0
- package/dist/fp/factories/payment.js.map +1 -0
- package/dist/fp/factories/permissioned-domain-delete.d.ts +18 -0
- package/dist/fp/factories/permissioned-domain-delete.d.ts.map +1 -0
- package/dist/fp/factories/permissioned-domain-delete.js +88 -0
- package/dist/fp/factories/permissioned-domain-delete.js.map +1 -0
- package/dist/fp/factories/permissioned-domain-set.d.ts +118 -0
- package/dist/fp/factories/permissioned-domain-set.d.ts.map +1 -0
- package/dist/fp/factories/permissioned-domain-set.js +100 -0
- package/dist/fp/factories/permissioned-domain-set.js.map +1 -0
- package/dist/fp/factories/set-regular-key.d.ts +30 -0
- package/dist/fp/factories/set-regular-key.d.ts.map +1 -0
- package/dist/fp/factories/set-regular-key.js +81 -0
- package/dist/fp/factories/set-regular-key.js.map +1 -0
- package/dist/fp/factories/signer-list-set.d.ts +61 -0
- package/dist/fp/factories/signer-list-set.d.ts.map +1 -0
- package/dist/fp/factories/signer-list-set.js +250 -0
- package/dist/fp/factories/signer-list-set.js.map +1 -0
- package/dist/fp/factories/sponsorship-set.d.ts +148 -0
- package/dist/fp/factories/sponsorship-set.d.ts.map +1 -0
- package/dist/fp/factories/sponsorship-set.js +201 -0
- package/dist/fp/factories/sponsorship-set.js.map +1 -0
- package/dist/fp/factories/sponsorship-transfer.d.ts +173 -0
- package/dist/fp/factories/sponsorship-transfer.d.ts.map +1 -0
- package/dist/fp/factories/sponsorship-transfer.js +195 -0
- package/dist/fp/factories/sponsorship-transfer.js.map +1 -0
- package/dist/fp/factories/ticket-create.d.ts +20 -0
- package/dist/fp/factories/ticket-create.d.ts.map +1 -0
- package/dist/fp/factories/ticket-create.js +120 -0
- package/dist/fp/factories/ticket-create.js.map +1 -0
- package/dist/fp/factories/trust-set.d.ts +100 -0
- package/dist/fp/factories/trust-set.d.ts.map +1 -0
- package/dist/fp/factories/trust-set.js +111 -0
- package/dist/fp/factories/trust-set.js.map +1 -0
- package/dist/fp/factories/vault-clawback.d.ts +83 -0
- package/dist/fp/factories/vault-clawback.d.ts.map +1 -0
- package/dist/fp/factories/vault-clawback.js +91 -0
- package/dist/fp/factories/vault-clawback.js.map +1 -0
- package/dist/fp/factories/vault-create.d.ts +51 -0
- package/dist/fp/factories/vault-create.d.ts.map +1 -0
- package/dist/fp/factories/vault-create.js +141 -0
- package/dist/fp/factories/vault-create.js.map +1 -0
- package/dist/fp/factories/vault-delete.d.ts +20 -0
- package/dist/fp/factories/vault-delete.d.ts.map +1 -0
- package/dist/fp/factories/vault-delete.js +103 -0
- package/dist/fp/factories/vault-delete.js.map +1 -0
- package/dist/fp/factories/vault-deposit.d.ts +56 -0
- package/dist/fp/factories/vault-deposit.d.ts.map +1 -0
- package/dist/fp/factories/vault-deposit.js +85 -0
- package/dist/fp/factories/vault-deposit.js.map +1 -0
- package/dist/fp/factories/vault-set.d.ts +32 -0
- package/dist/fp/factories/vault-set.d.ts.map +1 -0
- package/dist/fp/factories/vault-set.js +135 -0
- package/dist/fp/factories/vault-set.js.map +1 -0
- package/dist/fp/factories/vault-withdraw.d.ts +82 -0
- package/dist/fp/factories/vault-withdraw.d.ts.map +1 -0
- package/dist/fp/factories/vault-withdraw.js +122 -0
- package/dist/fp/factories/vault-withdraw.js.map +1 -0
- package/dist/fp/factories/xchain-account-create-commit.d.ts +180 -0
- package/dist/fp/factories/xchain-account-create-commit.d.ts.map +1 -0
- package/dist/fp/factories/xchain-account-create-commit.js +99 -0
- package/dist/fp/factories/xchain-account-create-commit.js.map +1 -0
- package/dist/fp/factories/xchain-add-account-create-attestation.d.ts +213 -0
- package/dist/fp/factories/xchain-add-account-create-attestation.d.ts.map +1 -0
- package/dist/fp/factories/xchain-add-account-create-attestation.js +95 -0
- package/dist/fp/factories/xchain-add-account-create-attestation.js.map +1 -0
- package/dist/fp/factories/xchain-add-claim-attestation.d.ts +206 -0
- package/dist/fp/factories/xchain-add-claim-attestation.d.ts.map +1 -0
- package/dist/fp/factories/xchain-add-claim-attestation.js +97 -0
- package/dist/fp/factories/xchain-add-claim-attestation.js.map +1 -0
- package/dist/fp/factories/xchain-claim.d.ts +187 -0
- package/dist/fp/factories/xchain-claim.d.ts.map +1 -0
- package/dist/fp/factories/xchain-claim.js +140 -0
- package/dist/fp/factories/xchain-claim.js.map +1 -0
- package/dist/fp/factories/xchain-commit.d.ts +168 -0
- package/dist/fp/factories/xchain-commit.d.ts.map +1 -0
- package/dist/fp/factories/xchain-commit.js +137 -0
- package/dist/fp/factories/xchain-commit.js.map +1 -0
- package/dist/fp/factories/xchain-create-bridge.d.ts +206 -0
- package/dist/fp/factories/xchain-create-bridge.d.ts.map +1 -0
- package/dist/fp/factories/xchain-create-bridge.js +100 -0
- package/dist/fp/factories/xchain-create-bridge.js.map +1 -0
- package/dist/fp/factories/xchain-create-claim-id.d.ts +199 -0
- package/dist/fp/factories/xchain-create-claim-id.d.ts.map +1 -0
- package/dist/fp/factories/xchain-create-claim-id.js +78 -0
- package/dist/fp/factories/xchain-create-claim-id.js.map +1 -0
- package/dist/fp/factories/xchain-modify-bridge.d.ts +198 -0
- package/dist/fp/factories/xchain-modify-bridge.d.ts.map +1 -0
- package/dist/fp/factories/xchain-modify-bridge.js +102 -0
- package/dist/fp/factories/xchain-modify-bridge.js.map +1 -0
- package/dist/fp/index.d.ts +124 -0
- package/dist/fp/index.d.ts.map +1 -0
- package/dist/fp/index.js +152 -0
- package/dist/fp/index.js.map +1 -0
- package/dist/fp/shape.d.ts +34 -0
- package/dist/fp/shape.d.ts.map +1 -0
- package/dist/fp/shape.js +80 -0
- package/dist/fp/shape.js.map +1 -0
- package/dist/types/amounts.d.ts +49 -0
- package/dist/types/amounts.d.ts.map +1 -0
- package/dist/types/amounts.js +8 -0
- package/dist/types/amounts.js.map +1 -0
- package/dist/types/base.d.ts +103 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +2 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/common.d.ts +163 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +5 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/flags.d.ts +317 -0
- package/dist/types/flags.d.ts.map +1 -0
- package/dist/types/flags.js +253 -0
- package/dist/types/flags.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/transaction-types.d.ts +7 -0
- package/dist/types/transaction-types.d.ts.map +1 -0
- package/dist/types/transaction-types.js +2 -0
- package/dist/types/transaction-types.js.map +1 -0
- package/dist/validation/base.d.ts +8 -0
- package/dist/validation/base.d.ts.map +1 -0
- package/dist/validation/base.js +79 -0
- package/dist/validation/base.js.map +1 -0
- package/dist/validation/helpers.d.ts +42 -0
- package/dist/validation/helpers.d.ts.map +1 -0
- package/dist/validation/helpers.js +154 -0
- package/dist/validation/helpers.js.map +1 -0
- package/dist/validation/index.d.ts +3 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +3 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jonathan Dobson
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# xrpjs
|
|
2
|
+
|
|
3
|
+
Functional transaction factories for the XRP Ledger — 79 frozen-shape
|
|
4
|
+
builders verified against [xrpl.js](https://github.com/XRPLF/xrpl.js),
|
|
5
|
+
[xrpl.org](https://xrpl.org/), and [XLS specs](https://github.com/XRPLF/XRPL-Standards).
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { payment, accountSet, vaultCreate } from 'xrpjs';
|
|
9
|
+
|
|
10
|
+
const tx = payment({
|
|
11
|
+
Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
|
|
12
|
+
Destination: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe',
|
|
13
|
+
Amount: '1000000', // 1 XRP in drops
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// tx is frozen — every field is validated at construction time.
|
|
17
|
+
// toJSON() produces a wire-format object ready for xrpl.encode().
|
|
18
|
+
const wire = tx.toJSON();
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## What it is
|
|
22
|
+
|
|
23
|
+
`xrpjs` is the functional-programming API for building XRPL transactions.
|
|
24
|
+
Every factory returns a **frozen** transaction object with **eager validation**
|
|
25
|
+
at construction. If a required field is missing, malformed, or violates a
|
|
26
|
+
ledger rule the factory knows about, the call throws — no separate
|
|
27
|
+
`.validate()` step, no silent preclaim failures at submit time.
|
|
28
|
+
|
|
29
|
+
Each transaction family (`payment`, `vaultCreate`, `ammDeposit`, ...) has
|
|
30
|
+
its own factory. Importing one pulls in only that factory's code (full
|
|
31
|
+
tree-shaking).
|
|
32
|
+
|
|
33
|
+
## What it covers
|
|
34
|
+
|
|
35
|
+
**79 transaction types** (every class in v0.7.1's `src/transactions/`,
|
|
36
|
+
including the XLS-38d Sidechain family):
|
|
37
|
+
|
|
38
|
+
- **Account:** `accountDelete`, `accountSet`
|
|
39
|
+
- **AMM** (7): XLS-0030
|
|
40
|
+
- **Batch:** `batch` (BatchV1_1)
|
|
41
|
+
- **Check** (3): `checkCancel`, `checkCash`, `checkCreate`
|
|
42
|
+
- **Clawback:** `clawback`
|
|
43
|
+
- **ConfidentialMPT** (5): ConfidentialTransfer amendment
|
|
44
|
+
- **Credential** (3): XLS-0070
|
|
45
|
+
- **Delegate:** `delegateSet` (XLS-0085d)
|
|
46
|
+
- **DepositPreauth:** 4-way field rule (XLS-0070)
|
|
47
|
+
- **DID** (2): XLS-0040
|
|
48
|
+
- **Escrow** (3)
|
|
49
|
+
- **LedgerStateFix**
|
|
50
|
+
- **Loan** (4) + **LoanBroker** (5): LendingProtocol amendment
|
|
51
|
+
- **MPT** (4): XLS-0033
|
|
52
|
+
- **NFToken** (6): XLS-0020
|
|
53
|
+
- **Offer** (2)
|
|
54
|
+
- **Oracle** (2)
|
|
55
|
+
- **Payment**
|
|
56
|
+
- **PaymentChannel** (3)
|
|
57
|
+
- **PermissionedDomain** (2)
|
|
58
|
+
- **SetRegularKey**
|
|
59
|
+
- **SignerListSet**
|
|
60
|
+
- **Sponsorship** (2): Sponsor amendment
|
|
61
|
+
- **TicketCreate**
|
|
62
|
+
- **TrustSet**
|
|
63
|
+
- **Vault** (6): SingleAssetVault amendment
|
|
64
|
+
- **XChain** (8): XLS-0038d Sidechain amendment
|
|
65
|
+
|
|
66
|
+
## What it adds over the class API
|
|
67
|
+
|
|
68
|
+
Every factory file ships a `## Divergences` header listing the guards it
|
|
69
|
+
adds beyond `src/transactions/<TxName>.ts`. Examples:
|
|
70
|
+
|
|
71
|
+
- **`vaultCreate`**: rejects `VaultID === '00…00'` (64-char all-zero
|
|
72
|
+
hex would fail at the ledger with `temMALFORMED`); `Amount` must be
|
|
73
|
+
strictly positive across all 3 forms (XRP drops / IOU object / MPT
|
|
74
|
+
object).
|
|
75
|
+
- **`ammDeposit` / `ammWithdraw`**: validates `Asset` and `Asset2` as
|
|
76
|
+
`Currency` (no MPT), enforces the "Amount2 requires Amount" and
|
|
77
|
+
"EPrice requires Amount" cross-field rules, plus exactly-one
|
|
78
|
+
AMM-withdraw mode flag.
|
|
79
|
+
- **`batch`**: validates `RawTransactions` 2..8, exclusive `Flags` on
|
|
80
|
+
the outer tx, inner-tx `Sequence XOR TicketSequence`, `BatchSigners`
|
|
81
|
+
≤ 24 + sorted + no duplicates, outer `Account` not in `BatchSigners`.
|
|
82
|
+
- **`nftokenCreateOffer`**: rejects `Owner` on sell offers, requires
|
|
83
|
+
`Owner` on buy offers, rejects `Owner === Account`, 64-char hex
|
|
84
|
+
`NFTokenID`.
|
|
85
|
+
- **`nftokenCancelOffer`**: rejects duplicate offer IDs, max 500
|
|
86
|
+
entries per rippled `kMaxTokenOfferCancelCount`.
|
|
87
|
+
- **`signerListSet`**: ≤ 32 entries, positive `SignerWeight`, no
|
|
88
|
+
self-listing, 64-char hex `WalletLocator`.
|
|
89
|
+
- **`xchainCreateBridge` / `xchainModifyBridge`**: enforces 4-key
|
|
90
|
+
bridge shape (`LockingChainDoor`, `LockingChainIssue`,
|
|
91
|
+
`IssuingChainDoor`, `IssuingChainIssue`), bridge doors as valid
|
|
92
|
+
XRPL accounts, `SignatureReward` / `MinAccountCreateAmount` as
|
|
93
|
+
strictly positive XRP drops strings (XLS-38 §2.1.1.1.3/1.4),
|
|
94
|
+
`Account === LockingChainDoor` equality.
|
|
95
|
+
|
|
96
|
+
Every divergence is cited: file path + line number in
|
|
97
|
+
[xrpl.js](https://github.com/XRPLF/xrpl.js),
|
|
98
|
+
[xrpl.org docs](https://xrpl.org/), and the relevant XLS spec.
|
|
99
|
+
|
|
100
|
+
## Usage
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
import { payment, vaultCreate, nftokenCreateOffer } from 'xrpjs';
|
|
104
|
+
|
|
105
|
+
// 1. Build a frozen, validated tx.
|
|
106
|
+
const tx = payment({
|
|
107
|
+
Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
|
|
108
|
+
Destination: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe',
|
|
109
|
+
Amount: '1000000',
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// 2. (optional) derive a new tx with overrides — re-validates.
|
|
113
|
+
const withHigherFee = tx.with({ Fee: '20' });
|
|
114
|
+
|
|
115
|
+
// 3. Serialize for the wire format.
|
|
116
|
+
const wire = tx.toJSON();
|
|
117
|
+
// wire is a plain object matching the canonical XRPL JSON shape.
|
|
118
|
+
|
|
119
|
+
// 4. Encode + sign + submit via xrpl.js (or your own client).
|
|
120
|
+
import { encode, sign, submit } from 'xrpl';
|
|
121
|
+
const encoded = encode(wire);
|
|
122
|
+
const signed = sign(wallet, encoded);
|
|
123
|
+
await submit(signed);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The factory is pure — no global state, no I/O, no side effects. You can
|
|
127
|
+
construct thousands of transactions per second.
|
|
128
|
+
|
|
129
|
+
## Verification discipline
|
|
130
|
+
|
|
131
|
+
Every factory is verified against **three canonical sources** before
|
|
132
|
+
landing:
|
|
133
|
+
|
|
134
|
+
1. **xrpl.js 5.3.0** at `~/.mavis/docs.local/xrpl.js/` — the canonical
|
|
135
|
+
JavaScript validator. We check what `validate<Transaction>` does and
|
|
136
|
+
*what it skips*.
|
|
137
|
+
2. **xrpl.org docs** at `~/.mavis/docs.local/xrpl-dev-portal/` — the
|
|
138
|
+
human-readable reference. We extract the field tables, internal
|
|
139
|
+
types, and error code catalog.
|
|
140
|
+
3. **XLS specs** at `~/.mavis/docs.local/xrpl-standards/` — the
|
|
141
|
+
authoritative spec text. We read the amendment's field table,
|
|
142
|
+
preclaim rules, and cross-field invariants.
|
|
143
|
+
|
|
144
|
+
When the three sources disagree, the XLS spec wins. The factory
|
|
145
|
+
documents the divergence with citation.
|
|
146
|
+
|
|
147
|
+
## Out of scope (vs. the class-based `xrplt` package)
|
|
148
|
+
|
|
149
|
+
- Pseudo-transactions: `EnableAmendment`, `LedgerEntry` (state query)
|
|
150
|
+
- Deprecated: `UNLModify`
|
|
151
|
+
- Future amendments not enabled in v0.7.1: `SetFee` (XRPL hook amendment)
|
|
152
|
+
|
|
153
|
+
If you need these, use the class-based [`xrplt`](https://github.com/Jonathan-Dobson/xrplt) package.
|
|
154
|
+
|
|
155
|
+
## Development
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
git clone https://github.com/Jonathan-Dobson/xrpjs.git
|
|
159
|
+
cd xrpjs
|
|
160
|
+
npm ci
|
|
161
|
+
npm test # run the 79 test files (2829 tests)
|
|
162
|
+
npm run lint # ESLint 9 flat config + typescript-eslint strict
|
|
163
|
+
npm run build # tsc → dist/
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Tests use `vitest`. The factories are pure ESM with TypeScript strict
|
|
167
|
+
mode (`noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, etc.).
|
|
168
|
+
No runtime dependencies.
|
|
169
|
+
|
|
170
|
+
## License
|
|
171
|
+
|
|
172
|
+
MIT
|
|
173
|
+
|
|
174
|
+
## Related projects
|
|
175
|
+
|
|
176
|
+
- [`xrplt`](https://github.com/Jonathan-Dobson/xrplt) — class-based
|
|
177
|
+
transaction builder, full v0.7.1 transaction coverage. `xrpjs` is the
|
|
178
|
+
fp refactor of `xrplt`'s functional subpath (`xrplt/fp`).
|
|
179
|
+
- [xrpl.js](https://github.com/XRPLF/xrpl.js) — the canonical JavaScript
|
|
180
|
+
library; `xrpjs` uses xrpl.js as a devDep for test round-tripping
|
|
181
|
+
(encode/decode).
|
|
182
|
+
- [XRPL Standards](https://github.com/XRPLF/XRPL-Standards) — the
|
|
183
|
+
amendment specs `xrpjs` verifies against.
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for the xrplt package.
|
|
3
|
+
*
|
|
4
|
+
* These are standalone — no dependency on xrpl's error hierarchy.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Thrown when a transaction fails runtime validation.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ValidationError extends Error {
|
|
10
|
+
readonly name = "ValidationError";
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when a transaction operation fails (e.g. unknown type in registry).
|
|
15
|
+
*/
|
|
16
|
+
export declare class TransactionError extends Error {
|
|
17
|
+
readonly name = "TransactionError";
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAkB,IAAI,qBAAqB;gBAE/B,OAAO,EAAE,MAAM;CAK5B;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;gBAEhC,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for the xrplt package.
|
|
3
|
+
*
|
|
4
|
+
* These are standalone — no dependency on xrpl's error hierarchy.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Thrown when a transaction fails runtime validation.
|
|
8
|
+
*/
|
|
9
|
+
export class ValidationError extends Error {
|
|
10
|
+
name = 'ValidationError';
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
// Ensure proper prototype chain for instanceof checks
|
|
14
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Thrown when a transaction operation fails (e.g. unknown type in registry).
|
|
19
|
+
*/
|
|
20
|
+
export class TransactionError extends Error {
|
|
21
|
+
name = 'TransactionError';
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
Object.setPrototypeOf(this, TransactionError.prototype);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtB,IAAI,GAAG,iBAAiB,CAAC;IAE3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACvB,IAAI,GAAG,kBAAkB,CAAC;IAE5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface AccountDeleteProps {
|
|
2
|
+
Account: string;
|
|
3
|
+
/**
|
|
4
|
+
* The address of an account to receive any leftover XRP after deleting
|
|
5
|
+
* the sending account. Must be a funded account in the ledger, and must
|
|
6
|
+
* NOT be the sending account (`temDST_IS_SRC`).
|
|
7
|
+
*/
|
|
8
|
+
Destination: string;
|
|
9
|
+
/**
|
|
10
|
+
* Arbitrary destination tag for the recipient. UInt32:
|
|
11
|
+
* 0 ≤ value ≤ 0xFFFFFFFF.
|
|
12
|
+
*/
|
|
13
|
+
DestinationTag?: number | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* (Credentials amendment) Optional set of credential IDs authorizing
|
|
16
|
+
* the deletion when the destination requires deposit authorization.
|
|
17
|
+
* When present: array must be non-empty, length ≤ 8, each entry a
|
|
18
|
+
* 64-character hex string, no duplicates.
|
|
19
|
+
*/
|
|
20
|
+
CredentialIDs?: string[] | undefined;
|
|
21
|
+
/** Bit-flags for this transaction. AccountDelete has no defined flags. */
|
|
22
|
+
Flags?: number | undefined;
|
|
23
|
+
Fee?: string | undefined;
|
|
24
|
+
Sequence?: number | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface AccountDelete extends Readonly<AccountDeleteProps> {
|
|
27
|
+
readonly TransactionType: 'AccountDelete';
|
|
28
|
+
validate(): void;
|
|
29
|
+
toJSON(): Record<string, unknown>;
|
|
30
|
+
with(overrides: Partial<AccountDeleteProps>): AccountDelete;
|
|
31
|
+
}
|
|
32
|
+
export declare function accountDelete(props: AccountDeleteProps): AccountDelete;
|
|
33
|
+
//# sourceMappingURL=account-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-delete.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/account-delete.ts"],"names":[],"mappings":"AAwEA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ,CAAC,kBAAkB,CAAC;IACjE,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;CAC7D;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA8FtE"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional AccountDelete factory — frozen-object style.
|
|
3
|
+
*
|
|
4
|
+
* Deletes an account and any objects it owns in the XRP Ledger, sending
|
|
5
|
+
* the leftover XRP to a specified destination account. Validation happens
|
|
6
|
+
* at construction; there is no way to construct an invalid tx.
|
|
7
|
+
*
|
|
8
|
+
* import { accountDelete } from 'xrplt/fp';
|
|
9
|
+
* const tx = accountDelete({ Account, Destination });
|
|
10
|
+
* tx.validate(); // throws if construction didn't already
|
|
11
|
+
* const j = tx.toJSON();
|
|
12
|
+
* const tx2 = tx.with({ DestinationTag: 42 });
|
|
13
|
+
*
|
|
14
|
+
* Affected amendments:
|
|
15
|
+
* - `DeletableAccounts` — base AccountDelete.
|
|
16
|
+
* - `Credentials` — introduces the optional `CredentialIDs` field
|
|
17
|
+
* for deposit-authorized deletions.
|
|
18
|
+
* - `Sponsor` — `tecNO_SPONSOR_PERMISSION` runtime guard
|
|
19
|
+
* (not locally checkable).
|
|
20
|
+
*
|
|
21
|
+
* @see https://xrpl.org/docs/references/protocol/transactions/types/accountdelete
|
|
22
|
+
*
|
|
23
|
+
* ## Divergences
|
|
24
|
+
*
|
|
25
|
+
* The class-based API at `src/transactions/account-delete.ts` is missing
|
|
26
|
+
* three rules that the canonical sources require. The factory fills them:
|
|
27
|
+
*
|
|
28
|
+
* 1. `CredentialIDs` is not declared by the class.
|
|
29
|
+
* The class has no `CredentialIDs` field at all, so callers using the
|
|
30
|
+
* class API cannot authorize a deletion with deposit credentials. The
|
|
31
|
+
* factory adds the field with full xrpl.js validation: when present
|
|
32
|
+
* the array must be non-empty, length ≤ `MAX_AUTHORIZED_CREDENTIALS`
|
|
33
|
+
* (8), each entry a 64-char hex string, and contain no duplicates.
|
|
34
|
+
* Source: xrpl.js `packages/xrpl/src/models/transactions/accountDelete.ts`
|
|
35
|
+
* `validateAccountDelete` calls `validateCredentialsList(..., true, 8)`;
|
|
36
|
+
* `packages/xrpl/src/models/transactions/common.ts:28`
|
|
37
|
+
* `MAX_AUTHORIZED_CREDENTIALS = 8`;
|
|
38
|
+
* `validateCredentialsList` (`common.ts:1106`).
|
|
39
|
+
* xrpl-dev-portal `accountdelete.md` Fields table
|
|
40
|
+
* (`CredentialIDs` is listed as a field).
|
|
41
|
+
*
|
|
42
|
+
* 2. `temDST_IS_SRC` is not enforced.
|
|
43
|
+
* The class never compares `Destination` against `Account`, so an
|
|
44
|
+
* AccountDelete that names itself as the destination passes class
|
|
45
|
+
* validation and only fails at the ledger with `temDST_IS_SRC`.
|
|
46
|
+
* Source: xrpl-dev-portal `accountdelete.md` Error Cases table
|
|
47
|
+
* (`temDST_IS_SRC` — "Destination matches the sender").
|
|
48
|
+
*
|
|
49
|
+
* 3. `DestinationTag` UInt32 bounds are not enforced.
|
|
50
|
+
* The class only checks `isNumber`, so non-integer, negative, or
|
|
51
|
+
* out-of-UInt32-range values pass. The spec defines the field as
|
|
52
|
+
* `UInt32` (0 ≤ value ≤ 2^32 − 1).
|
|
53
|
+
* Source: xrpl-dev-portal `accountdelete.md` Fields table
|
|
54
|
+
* (`DestinationTag` Internal Type: `UInt32`).
|
|
55
|
+
*/
|
|
56
|
+
import { isAccount, isArray, isHex, isNumber, isString } from '../../validation/helpers.js';
|
|
57
|
+
import { ValidationError } from '../../errors.js';
|
|
58
|
+
import { buildFrozenTx, mergeForWith, require } from '../shape.js';
|
|
59
|
+
// ─── Spec constants ──────────────────────────────────────────────────
|
|
60
|
+
// XRPL UInt32 max (per rippled STUInt32).
|
|
61
|
+
const UINT32_MAX = 0xffffffff;
|
|
62
|
+
// Credential IDs are 64-char hex (HASH256 — same as ledger entry IDs).
|
|
63
|
+
// xrpl.js caps non-DomainSet credential arrays at 8 entries.
|
|
64
|
+
// packages/xrpl/src/models/transactions/common.ts: MAX_AUTHORIZED_CREDENTIALS = 8
|
|
65
|
+
const CREDENTIAL_ID_LENGTH = 64;
|
|
66
|
+
const MAX_CREDENTIAL_IDS = 8;
|
|
67
|
+
// ─── Factory ─────────────────────────────────────────────────────────
|
|
68
|
+
export function accountDelete(props) {
|
|
69
|
+
// ── Account ── required, must be a valid XRPL classic or X-address.
|
|
70
|
+
require(props.Account, 'AccountDelete: Account is required', isAccount);
|
|
71
|
+
// ── Destination ── required, must be a valid XRPL address.
|
|
72
|
+
require(props.Destination, 'AccountDelete: Destination is required', isAccount);
|
|
73
|
+
// ── temDST_IS_SRC ── Destination must not equal the sender.
|
|
74
|
+
// xrpl-dev-portal accountdelete.md Error Cases table.
|
|
75
|
+
if (props.Destination === props.Account) {
|
|
76
|
+
throw new ValidationError('AccountDelete: Destination must not equal Account (temDST_IS_SRC)');
|
|
77
|
+
}
|
|
78
|
+
// ── DestinationTag ── UInt32 (0 ≤ value ≤ 0xFFFFFFFF, integer).
|
|
79
|
+
if (props.DestinationTag !== undefined) {
|
|
80
|
+
if (!isNumber(props.DestinationTag) ||
|
|
81
|
+
!Number.isInteger(props.DestinationTag) ||
|
|
82
|
+
props.DestinationTag < 0 ||
|
|
83
|
+
props.DestinationTag > UINT32_MAX) {
|
|
84
|
+
throw new ValidationError(`AccountDelete: DestinationTag must be an integer in [0, ${UINT32_MAX}]`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ── CredentialIDs ── optional array; bounds + entry-shape + uniqueness
|
|
88
|
+
// enforced when present. Per xrpl.js validateAccountDelete, which calls
|
|
89
|
+
// validateCredentialsList with maxCredentials = MAX_AUTHORIZED_CREDENTIALS = 8.
|
|
90
|
+
if (props.CredentialIDs !== undefined) {
|
|
91
|
+
if (!isArray(props.CredentialIDs)) {
|
|
92
|
+
throw new ValidationError('AccountDelete: CredentialIDs must be an array of credential ID strings');
|
|
93
|
+
}
|
|
94
|
+
if (props.CredentialIDs.length === 0) {
|
|
95
|
+
throw new ValidationError('AccountDelete: CredentialIDs must not be an empty array');
|
|
96
|
+
}
|
|
97
|
+
if (props.CredentialIDs.length > MAX_CREDENTIAL_IDS) {
|
|
98
|
+
throw new ValidationError(`AccountDelete: CredentialIDs length cannot exceed ${MAX_CREDENTIAL_IDS} elements (actual: ${props.CredentialIDs.length})`);
|
|
99
|
+
}
|
|
100
|
+
for (let i = 0; i < props.CredentialIDs.length; i++) {
|
|
101
|
+
const cid = props.CredentialIDs[i];
|
|
102
|
+
if (!isString(cid) ||
|
|
103
|
+
!isHex(cid) ||
|
|
104
|
+
cid.length !== CREDENTIAL_ID_LENGTH) {
|
|
105
|
+
throw new ValidationError(`AccountDelete: CredentialIDs[${i}] must be a ${CREDENTIAL_ID_LENGTH}-character hex string`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// xrpl.js validateCredentialsList rejects duplicates; mirror that
|
|
109
|
+
// (xrpl.js common.ts: containsDuplicates check).
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
for (const cid of props.CredentialIDs) {
|
|
112
|
+
if (seen.has(cid)) {
|
|
113
|
+
throw new ValidationError('AccountDelete: CredentialIDs cannot contain duplicate elements');
|
|
114
|
+
}
|
|
115
|
+
seen.add(cid);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return buildFrozenTx('AccountDelete', props, {
|
|
119
|
+
validate() {
|
|
120
|
+
// Validated at construction.
|
|
121
|
+
},
|
|
122
|
+
toJSON() {
|
|
123
|
+
const json = {};
|
|
124
|
+
for (const k of Object.keys(this)) {
|
|
125
|
+
if (k === 'validate' || k === 'toJSON' || k === 'with')
|
|
126
|
+
continue;
|
|
127
|
+
const v = this[k];
|
|
128
|
+
if (v !== undefined)
|
|
129
|
+
json[k] = v;
|
|
130
|
+
}
|
|
131
|
+
return json;
|
|
132
|
+
},
|
|
133
|
+
with(overrides) {
|
|
134
|
+
return accountDelete(mergeForWith(this, overrides));
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=account-delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-delete.js","sourceRoot":"","sources":["../../../src/fp/factories/account-delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface AccountSetProps {
|
|
2
|
+
Account: string;
|
|
3
|
+
/** Flag to clear on the account. */
|
|
4
|
+
ClearFlag?: number | undefined;
|
|
5
|
+
/** Domain name associated with this account (hex encoded). */
|
|
6
|
+
Domain?: string | undefined;
|
|
7
|
+
/** Email hash (e.g. for Gravatar). */
|
|
8
|
+
EmailHash?: string | undefined;
|
|
9
|
+
/** Message key for encrypted messaging. */
|
|
10
|
+
MessageKey?: string | undefined;
|
|
11
|
+
/** NFT collection fee (0-50,000). */
|
|
12
|
+
NFTokenBrokerFee?: number | undefined;
|
|
13
|
+
/** Flag to enable on the account. */
|
|
14
|
+
SetFlag?: number | undefined;
|
|
15
|
+
/** Transfer rate for issued currencies (drops per billion). */
|
|
16
|
+
TransferRate?: number | undefined;
|
|
17
|
+
/** Tick size for offer matching (3-15 or 0 to disable). */
|
|
18
|
+
TickSize?: number | undefined;
|
|
19
|
+
/** Bit-flags for this transaction. */
|
|
20
|
+
Flags?: number | undefined;
|
|
21
|
+
Fee?: string | undefined;
|
|
22
|
+
Sequence?: number | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface AccountSet extends Readonly<AccountSetProps> {
|
|
25
|
+
readonly TransactionType: 'AccountSet';
|
|
26
|
+
validate(): void;
|
|
27
|
+
toJSON(): Record<string, unknown>;
|
|
28
|
+
with(overrides: Partial<AccountSetProps>): AccountSet;
|
|
29
|
+
}
|
|
30
|
+
export declare function accountSet(props: AccountSetProps): AccountSet;
|
|
31
|
+
//# sourceMappingURL=account-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-set.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/account-set.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,UACf,SAAQ,QAAQ,CAAC,eAAe,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;IACvC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;CACvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAmD7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional AccountSet factory — frozen-object style.
|
|
3
|
+
*
|
|
4
|
+
* Companion prototype to payment.ts. Validates at construction, returns
|
|
5
|
+
* a frozen object with bound validate/toJSON/with methods.
|
|
6
|
+
*/
|
|
7
|
+
import { isNumber, isString } from '../../validation/helpers.js';
|
|
8
|
+
import { buildFrozenTx, mergeForWith, require } from '../shape.js';
|
|
9
|
+
export function accountSet(props) {
|
|
10
|
+
// Validate optional fields when present
|
|
11
|
+
if (props.TransferRate !== undefined) {
|
|
12
|
+
require(props.TransferRate, 'AccountSet: TransferRate must be a number', isNumber);
|
|
13
|
+
}
|
|
14
|
+
if (props.TickSize !== undefined) {
|
|
15
|
+
require(props.TickSize, 'AccountSet: TickSize must be a number', isNumber);
|
|
16
|
+
if (props.TickSize !== 0 &&
|
|
17
|
+
(props.TickSize < 3 || props.TickSize > 15)) {
|
|
18
|
+
throw new Error('AccountSet: TickSize must be 3-15 or 0');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (props.Domain !== undefined) {
|
|
22
|
+
require(props.Domain, 'AccountSet: Domain must be a string', isString);
|
|
23
|
+
}
|
|
24
|
+
return buildFrozenTx('AccountSet', props, {
|
|
25
|
+
validate() {
|
|
26
|
+
// Validated at construction.
|
|
27
|
+
},
|
|
28
|
+
toJSON() {
|
|
29
|
+
const json = {};
|
|
30
|
+
for (const k of Object.keys(this)) {
|
|
31
|
+
if (k === 'validate' || k === 'toJSON' || k === 'with')
|
|
32
|
+
continue;
|
|
33
|
+
const v = this[k];
|
|
34
|
+
if (v !== undefined)
|
|
35
|
+
json[k] = v;
|
|
36
|
+
}
|
|
37
|
+
return json;
|
|
38
|
+
},
|
|
39
|
+
with(overrides) {
|
|
40
|
+
return accountSet(mergeForWith(this, overrides));
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=account-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-set.js","sourceRoot":"","sources":["../../../src/fp/factories/account-set.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAkCnE,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,wCAAwC;IACxC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,CACL,KAAK,CAAC,YAAY,EAClB,2CAA2C,EAC3C,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CACL,KAAK,CAAC,QAAQ,EACd,uCAAuC,EACvC,QAAQ,CACT,CAAC;QACF,IACE,KAAK,CAAC,QAAQ,KAAK,CAAC;YACpB,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,EAC3C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CACL,KAAK,CAAC,MAAM,EACZ,qCAAqC,EACrC,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAClB,YAAY,EACZ,KAAK,EACL;QACE,QAAQ;YACN,6BAA6B;QAC/B,CAAC;QACD,MAAM;YACJ,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;oBAAE,SAAS;gBACjE,MAAM,CAAC,GAAI,IAA2C,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAmB,SAAmC;YACxD,OAAO,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional AMMBid factory — frozen-object style.
|
|
3
|
+
*
|
|
4
|
+
* Bids on an Automated Market Maker's (AMM's) auction slot. If the
|
|
5
|
+
* bid wins, the sender can trade against the AMM at a discounted
|
|
6
|
+
* fee for up to 24 hours. Validation happens at construction;
|
|
7
|
+
* there is no way to construct an invalid tx.
|
|
8
|
+
*
|
|
9
|
+
* import { ammBid } from 'xrplt/fp';
|
|
10
|
+
* const tx = ammBid({
|
|
11
|
+
* Account,
|
|
12
|
+
* Asset: { currency: 'XRP' },
|
|
13
|
+
* Asset2: { currency: 'TST', issuer: 'r…' },
|
|
14
|
+
* BidMax: { currency: '039C99…', issuer: 'r…', value: '100' },
|
|
15
|
+
* AuthAccounts: [
|
|
16
|
+
* { AuthAccount: { Account: 'r…' } },
|
|
17
|
+
* ],
|
|
18
|
+
* });
|
|
19
|
+
* const j = tx.toJSON();
|
|
20
|
+
* const tx2 = tx.with({ BidMax: { …, value: '200' } });
|
|
21
|
+
*
|
|
22
|
+
* Affected amendments:
|
|
23
|
+
* - `AMM` (base AMMBid)
|
|
24
|
+
* - `fixCleanup3_4_0` (minimum-bid floor when trading fee is 0;
|
|
25
|
+
* runtime, not locally checkable)
|
|
26
|
+
*
|
|
27
|
+
* @see https://xrpl.org/docs/references/protocol/transactions/types/ammbid
|
|
28
|
+
* @see https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0030-automated-market-maker
|
|
29
|
+
*
|
|
30
|
+
* ## Divergences
|
|
31
|
+
* The factory enforces seven preclaim checks that the class API
|
|
32
|
+
* (`src/transactions/amm-bid.ts`) skips:
|
|
33
|
+
*
|
|
34
|
+
* 1. `Asset` must be a valid `Currency` (XRP / IOU / MPT), not
|
|
35
|
+
* merely a record. The class API uses `isRecord(this.Asset)`,
|
|
36
|
+
* which accepts any object — including an MPT, an arbitrary
|
|
37
|
+
* object, or an incomplete IOU object.
|
|
38
|
+
* Source: xrpl.js `validateAMMBid` lines 66–72 — throws
|
|
39
|
+
* `'AMMBid: missing field Asset'` (undefined/null) and
|
|
40
|
+
* `'AMMBid: Asset must be a Currency'`.
|
|
41
|
+
* Note: xrpl.js's `validateAMMBid` uses `isIssuedCurrency`
|
|
42
|
+
* (XRP-form OR IOU-form, NOT MPT), which is narrower than
|
|
43
|
+
* the xrpl.org `ammbid.md` Fields table — "the asset can be
|
|
44
|
+
* XRP, a token, or an MPT". The factory uses `isCurrency`
|
|
45
|
+
* (XRP / IOU / MPT) to honor the broader spec.
|
|
46
|
+
*
|
|
47
|
+
* 2. `Asset2` must be a valid `Currency` (XRP / IOU / MPT).
|
|
48
|
+
* Same source as #1, but applied to Asset2 (xrpl.js lines 74–80).
|
|
49
|
+
*
|
|
50
|
+
* 3. `BidMin`, when present, must be an `IssuedCurrencyAmount`.
|
|
51
|
+
* LP tokens are always issued currencies — never XRP and never
|
|
52
|
+
* an MPT — so this guards against malformed bid amounts that
|
|
53
|
+
* would be rejected at submit time as `temBAD_AMM_TOKENS`
|
|
54
|
+
* (xrpl.org `ammbid.md` Error Cases: "The specified `BidMin`
|
|
55
|
+
* or `BidMax` were not specified as the correct LP Tokens for
|
|
56
|
+
* this AMM").
|
|
57
|
+
* Source: xrpl.js `validateAMMBid` lines 82–84 — throws
|
|
58
|
+
* `'AMMBid: BidMin must be an Amount'`. The class API does
|
|
59
|
+
* not validate `BidMin` at all.
|
|
60
|
+
* (Note: xrpl.js uses `isAmount` here, which allows XRP/MPT
|
|
61
|
+
* forms. The factory tightens this to `IssuedCurrencyAmount`
|
|
62
|
+
* to match the LP-token semantics and the typed
|
|
63
|
+
* `AMMBid.BidMin?: IssuedCurrencyAmount` declaration.)
|
|
64
|
+
*
|
|
65
|
+
* 4. `BidMax`, when present, must be an `IssuedCurrencyAmount`.
|
|
66
|
+
* Same rationale as #3, applied to `BidMax` (xrpl.js lines
|
|
67
|
+
* 86–88). The class API does not validate `BidMax`.
|
|
68
|
+
*
|
|
69
|
+
* 5. `AuthAccounts`, when present, must be an array. The class
|
|
70
|
+
* API types it as `Record<string, string>[]` but performs no
|
|
71
|
+
* runtime array check.
|
|
72
|
+
* Source: xrpl.js `validateAMMBid` lines 90–95 — throws
|
|
73
|
+
* `'AMMBid: AuthAccounts must be an AuthAccount array'`.
|
|
74
|
+
*
|
|
75
|
+
* 6. `AuthAccounts.length` must not exceed 4.
|
|
76
|
+
* Source: xrpl.js `validateAMMBid` lines 96–100 — throws
|
|
77
|
+
* `'AMMBid: AuthAccounts length must not be greater than 4'`;
|
|
78
|
+
* xrpl.org `ammbid.md` Fields table — "A list of up to 4
|
|
79
|
+
* additional accounts" — and Error Cases: `temMALFORMED`
|
|
80
|
+
* "such as a list of `AuthAccounts` that is too long".
|
|
81
|
+
*
|
|
82
|
+
* 7. Each element of `AuthAccounts` must have the inner shape
|
|
83
|
+
* `{ AuthAccount: { Account: <string> } }`, AND `AuthAccounts`
|
|
84
|
+
* must NOT include the sender's address.
|
|
85
|
+
* Source: xrpl.js `validateAuthAccounts` lines 105–129 — throws
|
|
86
|
+
* `'AMMBid: invalid AuthAccounts'` for malformed inner records
|
|
87
|
+
* and `'AMMBid: AuthAccounts must not include sender's address'`
|
|
88
|
+
* when the sender is in the list.
|
|
89
|
+
* xrpl.org `ammbid.md` Fields table — "This cannot include the
|
|
90
|
+
* address of the transaction sender." The class API does no
|
|
91
|
+
* inner-shape check and does not check for the sender address.
|
|
92
|
+
*/
|
|
93
|
+
import type { Currency, IssuedCurrencyAmount } from '../../types/amounts.js';
|
|
94
|
+
export interface AmmBidProps {
|
|
95
|
+
/** The unique address of the transaction sender (the bidder). */
|
|
96
|
+
Account: string;
|
|
97
|
+
/** One of the two assets in the AMM's pool (XRP / IOU / MPT). */
|
|
98
|
+
Asset: Currency;
|
|
99
|
+
/** The other asset in the AMM's pool (XRP / IOU / MPT). */
|
|
100
|
+
Asset2: Currency;
|
|
101
|
+
/**
|
|
102
|
+
* Pay at least this LP-token amount for the auction slot. Always an
|
|
103
|
+
* `IssuedCurrencyAmount` — LP tokens are issued currencies, never
|
|
104
|
+
* XRP and never an MPT.
|
|
105
|
+
*/
|
|
106
|
+
BidMin?: IssuedCurrencyAmount | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Pay at most this LP-token amount for the auction slot. Always an
|
|
109
|
+
* `IssuedCurrencyAmount` — LP tokens are issued currencies, never
|
|
110
|
+
* XRP and never an MPT.
|
|
111
|
+
*/
|
|
112
|
+
BidMax?: IssuedCurrencyAmount | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* Up to 4 additional accounts allowed to trade at the discounted
|
|
115
|
+
* fee. Must NOT include the sender's address.
|
|
116
|
+
*/
|
|
117
|
+
AuthAccounts?: ReadonlyArray<{
|
|
118
|
+
readonly AuthAccount: {
|
|
119
|
+
readonly Account: string;
|
|
120
|
+
};
|
|
121
|
+
}> | undefined;
|
|
122
|
+
/** Bit-flags for this transaction. */
|
|
123
|
+
Flags?: number | undefined;
|
|
124
|
+
Fee?: string | undefined;
|
|
125
|
+
Sequence?: number | undefined;
|
|
126
|
+
}
|
|
127
|
+
export interface AmmBid extends Readonly<AmmBidProps> {
|
|
128
|
+
readonly TransactionType: 'AMMBid';
|
|
129
|
+
validate(): void;
|
|
130
|
+
toJSON(): Record<string, unknown>;
|
|
131
|
+
with(overrides: Partial<AmmBidProps>): AmmBid;
|
|
132
|
+
}
|
|
133
|
+
export declare function ammBid(props: AmmBidProps): AmmBid;
|
|
134
|
+
//# sourceMappingURL=amm-bid.d.ts.map
|