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
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional CredentialCreate factory — frozen-object style.
|
|
3
|
+
*
|
|
4
|
+
* Provisionally issues a credential to a `Subject` account. The credential
|
|
5
|
+
* is not valid until the subject accepts it with a `CredentialAccept`.
|
|
6
|
+
* Validation happens at construction; there is no way to construct an
|
|
7
|
+
* invalid tx.
|
|
8
|
+
*
|
|
9
|
+
* import { credentialCreate } from 'xrplt/fp';
|
|
10
|
+
* const tx = credentialCreate({
|
|
11
|
+
* Account: issuerAddr,
|
|
12
|
+
* Subject: subjectAddr,
|
|
13
|
+
* CredentialType: '6D795F63726564656E7469616C',
|
|
14
|
+
* });
|
|
15
|
+
* const j = tx.toJSON();
|
|
16
|
+
* const tx2 = tx.with({ Expiration: 1735689600 });
|
|
17
|
+
*
|
|
18
|
+
* Required amendment: `Credentials`.
|
|
19
|
+
*
|
|
20
|
+
* @see https://xrpl.org/docs/references/protocol/transactions/types/credentialcreate
|
|
21
|
+
* @see https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070-credentials
|
|
22
|
+
*
|
|
23
|
+
* ## Divergences
|
|
24
|
+
*
|
|
25
|
+
* The class-based API at `src/transactions/credential-create.ts` is
|
|
26
|
+
* missing several rules the canonical sources require AND exposes one
|
|
27
|
+
* field that is not in the spec at all. The factory corrects both:
|
|
28
|
+
*
|
|
29
|
+
* 1. `CredentialSequence` is NOT in the spec.
|
|
30
|
+
* The class exposes `CredentialSequence: number` as a required
|
|
31
|
+
* field. XLS-0070 §3.1 lists ONLY `TransactionType`, `Account`,
|
|
32
|
+
* `Subject`, `CredentialType`, `Expiration`, `URI`. xrpl.js
|
|
33
|
+
* 5.3.0 `models/transactions/CredentialCreate.ts` and xrpl-dev-portal
|
|
34
|
+
* `credentialcreate.md` agree: no `CredentialSequence`. The
|
|
35
|
+
* `Credential` ledger object's `CredentialSequence` is auto-assigned
|
|
36
|
+
* by the network (XLS-0070 §3.3), not by the issuer. The factory
|
|
37
|
+
* omits this field entirely.
|
|
38
|
+
* Source: XLS-0070 §3.1 (field table) and §3.3 (state changes);
|
|
39
|
+
* xrpl.js `models/transactions/CredentialCreate.ts`
|
|
40
|
+
* lines 22–39; xrpl-dev-portal
|
|
41
|
+
* `credentialcreate.md` (field table).
|
|
42
|
+
*
|
|
43
|
+
* 2. `CredentialType` must be a non-empty hex string ≤ 64 bytes.
|
|
44
|
+
* The class only checks `isString`. XLS-0070 §3.2 failure
|
|
45
|
+
* conditions: "The `CredentialType` field is empty or too long
|
|
46
|
+
* (limit 64 bytes)." XLS-0070 §2.1.3 also says: "It has a maximum
|
|
47
|
+
* length of 64 bytes, and cannot be an empty string." xrpl.js
|
|
48
|
+
* enforces the same with `MAX_CREDENTIAL_TYPE_LENGTH = 128`
|
|
49
|
+
* (hex chars for 64 bytes) and a hex regex.
|
|
50
|
+
* Source: XLS-0070 §3.2 + §2.1.3; xrpl.js
|
|
51
|
+
* `models/transactions/common.ts:29–30` (`MAX_CREDENTIAL_TYPE_LENGTH`),
|
|
52
|
+
* `models/transactions/common.ts:1061–1093`
|
|
53
|
+
* (`validateCredentialType`).
|
|
54
|
+
*
|
|
55
|
+
* 3. `URI` must be a non-empty hex string ≤ 256 bytes.
|
|
56
|
+
* The class only checks it is undefined-or-string. XLS-0070 §3.2
|
|
57
|
+
* failure: "The `URI` field is empty or too long (limit 256
|
|
58
|
+
* bytes)." The factory enforces ≤ 512 hex chars (256 bytes),
|
|
59
|
+
* matching the spec — NOT the more conservative 256-hex-char cap
|
|
60
|
+
* that xrpl.js 5.3.0 enforces at `CredentialCreate.ts:15`
|
|
61
|
+
* (`MAX_URI_LENGTH = 256` actually bounds the hex string to 256
|
|
62
|
+
* characters = 128 bytes; this is an xrpl.js under-spec limit that
|
|
63
|
+
* the factory intentionally does NOT mirror).
|
|
64
|
+
* Source: XLS-0070 §3.2 + §2.1.2 (`MaxCredentialUriBytes = 256`);
|
|
65
|
+
* xrpl-dev-portal `credentialcreate.md` (URI table row:
|
|
66
|
+
* "maximum is 256 bytes").
|
|
67
|
+
*
|
|
68
|
+
* 4. `Expiration` must be a positive integer in UInt32 range.
|
|
69
|
+
* The class only checks `isNumber`. XLS-0070 §3.1 lists
|
|
70
|
+
* `Expiration` as `UInt32`. The factory enforces `Expiration`
|
|
71
|
+
* to be a finite, non-negative integer ≤ 2^32 − 1. (Whether the
|
|
72
|
+
* time is in the future is a runtime check, not enforceable here.)
|
|
73
|
+
* Source: XLS-0070 §3.1 (Internal Type column = UInt32);
|
|
74
|
+
* XLS-0070 §3.2 failure "The time in Expiration is in the
|
|
75
|
+
* past".
|
|
76
|
+
*
|
|
77
|
+
* 5. `Subject` must not be ACCOUNT_ZERO (`rHb9CJAWyB4rj91VRWn96Dkukn4MRtfQ`).
|
|
78
|
+
* The class accepts any `isAccount`-shaped string. xrpl-dev-portal
|
|
79
|
+
* `credentialcreate.md` error cases lists `temINVALID_ACCOUNT_ID`
|
|
80
|
+
* fired "if it contains ACCOUNT_ZERO". The factory rejects the
|
|
81
|
+
* zero address explicitly.
|
|
82
|
+
* Source: xrpl-dev-portal `credentialcreate.md` (Error Cases
|
|
83
|
+
* table, row for `temINVALID_ACCOUNT_ID`).
|
|
84
|
+
*
|
|
85
|
+
* 6. `Account` must be a non-empty string.
|
|
86
|
+
* The class uses `isAccount` which allows empty strings to slip
|
|
87
|
+
* through the format regex's lower bound (24+ chars), so an empty
|
|
88
|
+
* Account would actually be caught — but only as a side effect of
|
|
89
|
+
* length. The factory makes the intent explicit.
|
|
90
|
+
* Source: XLS-0070 §3.1 (Account is required, type AccountID);
|
|
91
|
+
* xrpl.js `validateCredentialCreate` calls
|
|
92
|
+
* `validateRequiredField(tx, 'Account', isString)`.
|
|
93
|
+
*/
|
|
94
|
+
import { isAccount, isHex, isNumber, isString } from '../../validation/helpers.js';
|
|
95
|
+
import { ValidationError } from '../../errors.js';
|
|
96
|
+
import { buildFrozenTx, mergeForWith, require } from '../shape.js';
|
|
97
|
+
// ─── Spec constants ──────────────────────────────────────────────────
|
|
98
|
+
/** CredentialType max bytes (XLS-0070 §3.2). */
|
|
99
|
+
const MAX_CREDENTIAL_TYPE_BYTES = 64;
|
|
100
|
+
/** CredentialType max hex chars = 2 × bytes. */
|
|
101
|
+
const MAX_CREDENTIAL_TYPE_LENGTH = MAX_CREDENTIAL_TYPE_BYTES * 2;
|
|
102
|
+
/** URI max bytes (XLS-0070 §3.2). */
|
|
103
|
+
const MAX_URI_BYTES = 256;
|
|
104
|
+
/** URI max hex chars = 2 × bytes. */
|
|
105
|
+
const MAX_URI_LENGTH = MAX_URI_BYTES * 2;
|
|
106
|
+
/** UInt32 max. */
|
|
107
|
+
const UINT32_MAX = 0xffffffff;
|
|
108
|
+
/** The XRPL ACCOUNT_ZERO address; rippled rejects this as Subject. */
|
|
109
|
+
const ACCOUNT_ZERO = 'rHb9CJAWyB4rj91VRWn96Dkukn4MRtfQ';
|
|
110
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
111
|
+
function validateCredentialType(value) {
|
|
112
|
+
if (!isString(value)) {
|
|
113
|
+
throw new ValidationError('CredentialCreate: CredentialType must be a hex string');
|
|
114
|
+
}
|
|
115
|
+
if (value.length === 0) {
|
|
116
|
+
throw new ValidationError('CredentialCreate: CredentialType cannot be an empty string');
|
|
117
|
+
}
|
|
118
|
+
if (!isHex(value)) {
|
|
119
|
+
throw new ValidationError('CredentialCreate: CredentialType must be encoded in hex');
|
|
120
|
+
}
|
|
121
|
+
if (value.length % 2 !== 0) {
|
|
122
|
+
throw new ValidationError('CredentialCreate: CredentialType must be a hex string with an even number of characters');
|
|
123
|
+
}
|
|
124
|
+
if (value.length > MAX_CREDENTIAL_TYPE_LENGTH) {
|
|
125
|
+
throw new ValidationError(`CredentialCreate: CredentialType length must be <= ${MAX_CREDENTIAL_TYPE_LENGTH} hex chars (${MAX_CREDENTIAL_TYPE_BYTES} bytes)`);
|
|
126
|
+
}
|
|
127
|
+
return value;
|
|
128
|
+
}
|
|
129
|
+
function validateURI(value) {
|
|
130
|
+
if (!isString(value)) {
|
|
131
|
+
throw new ValidationError('CredentialCreate: URI must be a hex string');
|
|
132
|
+
}
|
|
133
|
+
if (value.length === 0) {
|
|
134
|
+
throw new ValidationError('CredentialCreate: URI cannot be an empty string');
|
|
135
|
+
}
|
|
136
|
+
if (!isHex(value)) {
|
|
137
|
+
throw new ValidationError('CredentialCreate: URI must be encoded in hex');
|
|
138
|
+
}
|
|
139
|
+
if (value.length > MAX_URI_LENGTH) {
|
|
140
|
+
throw new ValidationError(`CredentialCreate: URI length must be <= ${MAX_URI_LENGTH} hex chars (${MAX_URI_BYTES} bytes)`);
|
|
141
|
+
}
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
function validateExpiration(value) {
|
|
145
|
+
if (!isNumber(value) || !Number.isFinite(value) || !Number.isInteger(value)) {
|
|
146
|
+
throw new ValidationError('CredentialCreate: Expiration must be an integer');
|
|
147
|
+
}
|
|
148
|
+
if (value < 0) {
|
|
149
|
+
throw new ValidationError('CredentialCreate: Expiration must be non-negative');
|
|
150
|
+
}
|
|
151
|
+
if (value > UINT32_MAX) {
|
|
152
|
+
throw new ValidationError(`CredentialCreate: Expiration must fit in UInt32 (max ${UINT32_MAX})`);
|
|
153
|
+
}
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
// ─── Factory ─────────────────────────────────────────────────────────
|
|
157
|
+
export function credentialCreate(props) {
|
|
158
|
+
// ── Account ── required, must be a non-empty string.
|
|
159
|
+
require(props.Account, 'CredentialCreate: Account is required', isString);
|
|
160
|
+
if (props.Account.length === 0) {
|
|
161
|
+
throw new ValidationError('CredentialCreate: Account is required');
|
|
162
|
+
}
|
|
163
|
+
// ── Subject ── required, must be a valid XRPL account AND not ACCOUNT_ZERO.
|
|
164
|
+
require(props.Subject, 'CredentialCreate: Subject is required', isString);
|
|
165
|
+
if (props.Subject.length === 0) {
|
|
166
|
+
throw new ValidationError('CredentialCreate: Subject is required');
|
|
167
|
+
}
|
|
168
|
+
if (!isAccount(props.Subject)) {
|
|
169
|
+
throw new ValidationError('CredentialCreate: Subject must be a valid XRPL address');
|
|
170
|
+
}
|
|
171
|
+
if (props.Subject === ACCOUNT_ZERO) {
|
|
172
|
+
throw new ValidationError('CredentialCreate: Subject must not be ACCOUNT_ZERO');
|
|
173
|
+
}
|
|
174
|
+
// ── CredentialType ── required, hex, 1–64 bytes.
|
|
175
|
+
validateCredentialType(props.CredentialType);
|
|
176
|
+
// ── URI ── optional, hex, 1–256 bytes when present.
|
|
177
|
+
if (props.URI !== undefined) {
|
|
178
|
+
validateURI(props.URI);
|
|
179
|
+
}
|
|
180
|
+
// ── Expiration ── optional, finite UInt32 integer.
|
|
181
|
+
if (props.Expiration !== undefined) {
|
|
182
|
+
validateExpiration(props.Expiration);
|
|
183
|
+
}
|
|
184
|
+
return buildFrozenTx('CredentialCreate', props, {
|
|
185
|
+
validate() {
|
|
186
|
+
// Validated at construction.
|
|
187
|
+
},
|
|
188
|
+
toJSON() {
|
|
189
|
+
const json = {};
|
|
190
|
+
for (const k of Object.keys(this)) {
|
|
191
|
+
if (k === 'validate' || k === 'toJSON' || k === 'with')
|
|
192
|
+
continue;
|
|
193
|
+
const v = this[k];
|
|
194
|
+
if (v !== undefined)
|
|
195
|
+
json[k] = v;
|
|
196
|
+
}
|
|
197
|
+
return json;
|
|
198
|
+
},
|
|
199
|
+
with(overrides) {
|
|
200
|
+
return credentialCreate(mergeForWith(this, overrides));
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=credential-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-create.js","sourceRoot":"","sources":["../../../src/fp/factories/credential-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface CredentialDeleteProps {
|
|
2
|
+
/** The unique address of the transaction sender. */
|
|
3
|
+
Account: string;
|
|
4
|
+
/**
|
|
5
|
+
* The subject of the credential to delete.
|
|
6
|
+
* If omitted, `Account` is assumed to be the subject.
|
|
7
|
+
* At least one of `Subject` / `Issuer` must be provided (XLS-0070 §5.1).
|
|
8
|
+
*/
|
|
9
|
+
Subject?: string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The issuer of the credential to delete.
|
|
12
|
+
* If omitted, `Account` is assumed to be the issuer.
|
|
13
|
+
* At least one of `Subject` / `Issuer` must be provided (XLS-0070 §5.1).
|
|
14
|
+
*/
|
|
15
|
+
Issuer?: string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Hex-encoded credential type (Blob). 1–128 hex chars (1–64 bytes).
|
|
18
|
+
* Cannot be empty (XLS-0070 §2.1.3).
|
|
19
|
+
*/
|
|
20
|
+
CredentialType: string;
|
|
21
|
+
/** Fee in XRP (drops), base-10 integer string. */
|
|
22
|
+
Fee?: string | undefined;
|
|
23
|
+
/** Account sequence number. */
|
|
24
|
+
Sequence?: number | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface CredentialDelete extends Readonly<CredentialDeleteProps> {
|
|
27
|
+
readonly TransactionType: 'CredentialDelete';
|
|
28
|
+
validate(): void;
|
|
29
|
+
toJSON(): Record<string, unknown>;
|
|
30
|
+
with(overrides: Partial<CredentialDeleteProps>): CredentialDelete;
|
|
31
|
+
}
|
|
32
|
+
export declare function credentialDelete(props: CredentialDeleteProps): CredentialDelete;
|
|
33
|
+
//# sourceMappingURL=credential-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-delete.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/credential-delete.ts"],"names":[],"mappings":"AAsHA,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAAC,qBAAqB,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,gBAAgB,CAAC;CACnE;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CA2E/E"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Functional CredentialDelete factory — frozen-object style.
|
|
3
|
+
*
|
|
4
|
+
* Deletes a `Credential` ledger entry. The holder or the issuer may
|
|
5
|
+
* submit this transaction. Validation happens at construction; there is
|
|
6
|
+
* no way to construct an invalid tx.
|
|
7
|
+
*
|
|
8
|
+
* import { credentialDelete } from 'xrplt/fp';
|
|
9
|
+
* const tx = credentialDelete({ Account, Subject, CredentialType });
|
|
10
|
+
* const j = tx.toJSON();
|
|
11
|
+
*
|
|
12
|
+
* Affected amendments:
|
|
13
|
+
* - `Credentials` — base CredentialDelete (XLS-0070 §5).
|
|
14
|
+
*
|
|
15
|
+
* @see https://xrpl.org/docs/references/protocol/transactions/types/credentialdelete
|
|
16
|
+
* @see XLS-0070 §5 (Transaction: `CredentialDelete`) in
|
|
17
|
+
* `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/README.md`
|
|
18
|
+
*
|
|
19
|
+
* ## Divergences
|
|
20
|
+
*
|
|
21
|
+
* The class-based API at `src/transactions/credential-delete.ts` and
|
|
22
|
+
* xrpl.js's `validateCredentialDelete` both diverge from the XLS-0070
|
|
23
|
+
* spec on two rules. The factory fills both gaps.
|
|
24
|
+
*
|
|
25
|
+
* 1. `Subject` and `Issuer` are OPTIONAL — at least one is required.
|
|
26
|
+
*
|
|
27
|
+
* Per XLS-0070 §5.1, both `Subject` and `Issuer` are listed as
|
|
28
|
+
* not-required ("If omitted, `Account` is assumed to be the
|
|
29
|
+
* subject / issuer"). The note immediately below the field table
|
|
30
|
+
* states: "If an account is deleting a credential it issued to
|
|
31
|
+
* itself, then either `Subject` or `Issuer` can be specified, but
|
|
32
|
+
* at least one must be."
|
|
33
|
+
*
|
|
34
|
+
* xrpl.js implements this correctly
|
|
35
|
+
* (`validateCredentialDelete` in
|
|
36
|
+
* `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
|
|
37
|
+
* transactions/CredentialDelete.ts`, lines 39–55 — throws
|
|
38
|
+
* "either `Issuer` or `Subject` must be provided" when both are
|
|
39
|
+
* absent).
|
|
40
|
+
*
|
|
41
|
+
* The local class API is wrong on this point: it declares
|
|
42
|
+
* `Subject` and `Issuer` as `readonly Subject: string` /
|
|
43
|
+
* `readonly Issuer: string` (both required) and rejects any tx
|
|
44
|
+
* that omits one with "missing or invalid Subject/Issuer". A tx
|
|
45
|
+
* with `Account === Issuer === Subject` (deleting a self-issued
|
|
46
|
+
* credential) cannot be constructed via the class. The factory
|
|
47
|
+
* makes both optional and enforces "at least one of {Subject,
|
|
48
|
+
* Issuer}".
|
|
49
|
+
*
|
|
50
|
+
* Source citation:
|
|
51
|
+
* - XLS-0070 §5.1 + §5.2 in
|
|
52
|
+
* `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/
|
|
53
|
+
* README.md` (lines 199–212).
|
|
54
|
+
* - xrpl.js `validateCredentialDelete` at
|
|
55
|
+
* `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
|
|
56
|
+
* transactions/CredentialDelete.ts` (lines 39–55).
|
|
57
|
+
* - xrpl-dev-portal `credentialdelete.md`
|
|
58
|
+
* (`~/.mavis/docs.local/xrpl-dev-portal/repo/docs/references/
|
|
59
|
+
* protocol/transactions/types/credentialdelete.md`): "You
|
|
60
|
+
* must provide the `Subject` field, `Issuer` field, or both."
|
|
61
|
+
* - Local class at `src/transactions/credential-delete.ts`
|
|
62
|
+
* (lines 9–17 and 37–38 — both declared required and both
|
|
63
|
+
* validated as required).
|
|
64
|
+
*
|
|
65
|
+
* 2. `CredentialType` is a hex `Blob`, not just any string.
|
|
66
|
+
*
|
|
67
|
+
* Per XLS-0070 §2.1.3 (the field definition carried over into the
|
|
68
|
+
* CredentialDelete spec): "It has a maximum length of 64 bytes,
|
|
69
|
+
* and cannot be an empty string." In hex that is 1–128
|
|
70
|
+
* characters. xrpl.js's `validateCredentialType` enforces this
|
|
71
|
+
* (`~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
|
|
72
|
+
* transactions/common.ts`, lines 1061–1093 — checks
|
|
73
|
+
* `MAX_CREDENTIAL_BYTE_LENGTH = 64`, empty-string rejection, and
|
|
74
|
+
* `HEX_REGEX`).
|
|
75
|
+
*
|
|
76
|
+
* The local class API only checks `isString(this.CredentialType)`
|
|
77
|
+
* (line 39). That admits three classes of bad input that rippled
|
|
78
|
+
* will reject: empty string (too short), non-hex strings, and
|
|
79
|
+
* strings longer than 128 hex chars. The factory rejects all
|
|
80
|
+
* three at construction.
|
|
81
|
+
*
|
|
82
|
+
* Source citation:
|
|
83
|
+
* - XLS-0070 §2.1.3 in
|
|
84
|
+
* `~/.mavis/docs.local/xrpl-standards/repo/XLS-0070-credentials/
|
|
85
|
+
* README.md` (line 116: "It has a maximum length of 64
|
|
86
|
+
* bytes, and cannot be an empty string.").
|
|
87
|
+
* - xrpl.js `validateCredentialType` at
|
|
88
|
+
* `~/.mavis/docs.local/xrpl.js/repo/packages/xrpl/src/models/
|
|
89
|
+
* transactions/common.ts` (lines 1061–1093 — empty-string,
|
|
90
|
+
* length ≤ 128 hex chars, `HEX_REGEX`).
|
|
91
|
+
* - xrpl-dev-portal `credentialdelete.md` (line 34): "The
|
|
92
|
+
* minimum length is 1 byte and the maximum length is 256
|
|
93
|
+
* bytes." (Note: the portal's "256 bytes" appears to be a
|
|
94
|
+
* copy-paste error from the `URI` field table; XLS-0070
|
|
95
|
+
* §2.1.3 and xrpl.js both cap at 64 bytes / 128 hex chars.
|
|
96
|
+
* The factory follows the standard + xrpl.js.)
|
|
97
|
+
* - Local class at `src/transactions/credential-delete.ts`
|
|
98
|
+
* (line 39 — only `isString`).
|
|
99
|
+
*
|
|
100
|
+
* The factory also validates `Account` as a well-formed XRPL
|
|
101
|
+
* classic/X-address. This matches the pattern in every other fp factory
|
|
102
|
+
* (`vaultDelete`, `permissionedDomainDelete`, `loanBrokerDelete`, …)
|
|
103
|
+
* and matches xrpl.js's `validateBaseTransaction` (which calls
|
|
104
|
+
* `validateRequiredField(common, 'Account', isString)` against the
|
|
105
|
+
* same regex). The class API here uses only `isString` via
|
|
106
|
+
* `validateBaseTransaction`.
|
|
107
|
+
*/
|
|
108
|
+
import { isAccount, isHex, isString } from '../../validation/helpers.js';
|
|
109
|
+
import { ValidationError } from '../../errors.js';
|
|
110
|
+
import { buildFrozenTx, mergeForWith, require } from '../shape.js';
|
|
111
|
+
// ─── Spec constants ──────────────────────────────────────────────────
|
|
112
|
+
// XLS-0070 §2.1.3 + xrpl.js MAX_CREDENTIAL_BYTE_LENGTH (= 64) → 128 hex chars.
|
|
113
|
+
const MAX_CREDENTIAL_TYPE_HEX_LENGTH = 128;
|
|
114
|
+
// ─── Factory ─────────────────────────────────────────────────────────
|
|
115
|
+
export function credentialDelete(props) {
|
|
116
|
+
// ── Account ── required, must be a valid XRPL classic or X-address.
|
|
117
|
+
require(props.Account, 'CredentialDelete: Account is required', isAccount);
|
|
118
|
+
// ── Subject / Issuer ── both optional, but at least one must be set.
|
|
119
|
+
// Per XLS-0070 §5.1 + xrpl.js's `validateCredentialDelete`:
|
|
120
|
+
// "either `Issuer` or `Subject` must be provided"
|
|
121
|
+
// The class API makes both required — see "Divergences" #1 in the
|
|
122
|
+
// header for the full citation trail.
|
|
123
|
+
const hasSubject = props.Subject !== undefined;
|
|
124
|
+
const hasIssuer = props.Issuer !== undefined;
|
|
125
|
+
if (!hasSubject && !hasIssuer) {
|
|
126
|
+
throw new ValidationError('CredentialDelete: either Subject or Issuer must be provided');
|
|
127
|
+
}
|
|
128
|
+
if (hasSubject && !isAccount(props.Subject)) {
|
|
129
|
+
throw new ValidationError('CredentialDelete: Subject must be a valid XRPL address');
|
|
130
|
+
}
|
|
131
|
+
if (hasIssuer && !isAccount(props.Issuer)) {
|
|
132
|
+
throw new ValidationError('CredentialDelete: Issuer must be a valid XRPL address');
|
|
133
|
+
}
|
|
134
|
+
// ── CredentialType ── required, hex Blob, 1–128 hex chars (1–64 bytes).
|
|
135
|
+
// Per XLS-0070 §2.1.3 + xrpl.js `validateCredentialType`:
|
|
136
|
+
// non-empty, ≤ 64 decoded bytes, hex-encoded.
|
|
137
|
+
// The class API only does `isString` — see "Divergences" #2.
|
|
138
|
+
if (!isString(props.CredentialType) || props.CredentialType.length === 0) {
|
|
139
|
+
throw new ValidationError('CredentialDelete: CredentialType is required and must be a non-empty hex string');
|
|
140
|
+
}
|
|
141
|
+
if (props.CredentialType.length > MAX_CREDENTIAL_TYPE_HEX_LENGTH) {
|
|
142
|
+
throw new ValidationError(`CredentialDelete: CredentialType exceeds ${MAX_CREDENTIAL_TYPE_HEX_LENGTH} hex chars (${MAX_CREDENTIAL_TYPE_HEX_LENGTH / 2} bytes)`);
|
|
143
|
+
}
|
|
144
|
+
if (!isHex(props.CredentialType)) {
|
|
145
|
+
throw new ValidationError('CredentialDelete: CredentialType must be a hex string');
|
|
146
|
+
}
|
|
147
|
+
return buildFrozenTx('CredentialDelete', props, {
|
|
148
|
+
validate() {
|
|
149
|
+
// Validated at construction.
|
|
150
|
+
},
|
|
151
|
+
toJSON() {
|
|
152
|
+
const json = {};
|
|
153
|
+
for (const k of Object.keys(this)) {
|
|
154
|
+
if (k === 'validate' || k === 'toJSON' || k === 'with')
|
|
155
|
+
continue;
|
|
156
|
+
const v = this[k];
|
|
157
|
+
if (v !== undefined)
|
|
158
|
+
json[k] = v;
|
|
159
|
+
}
|
|
160
|
+
return json;
|
|
161
|
+
},
|
|
162
|
+
with(overrides) {
|
|
163
|
+
return credentialDelete(mergeForWith(this, overrides));
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=credential-delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-delete.js","sourceRoot":"","sources":["../../../src/fp/factories/credential-delete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEnE,wEAAwE;AAExE,+EAA+E;AAC/E,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAqC3C,wEAAwE;AAExE,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,qEAAqE;IACrE,OAAO,CACL,KAAK,CAAC,OAAO,EACb,uCAAuC,EACvC,SAAS,CACV,CAAC;IAEF,sEAAsE;IACtE,4DAA4D;IAC5D,oDAAoD;IACpD,kEAAkE;IAClE,sCAAsC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CACvB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CACvB,wDAAwD,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CACvB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,0DAA0D;IAC1D,gDAAgD;IAChD,6DAA6D;IAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,eAAe,CACvB,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,8BAA8B,EAAE,CAAC;QACjE,MAAM,IAAI,eAAe,CACvB,4CAA4C,8BAA8B,eAAe,8BAA8B,GAAG,CAAC,SAAS,CACrI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CACvB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAClB,kBAAkB,EAClB,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,CAEF,SAAyC;YAEzC,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACzD,CAAC;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single permission grant. Wraps a `PermissionValue` (the
|
|
3
|
+
* transaction-type string being delegated) in two layers of objects
|
|
4
|
+
* because that is the on-ledger shape; rippled's binary codec
|
|
5
|
+
* expects exactly this nesting.
|
|
6
|
+
*/
|
|
7
|
+
export interface Permission {
|
|
8
|
+
Permission: {
|
|
9
|
+
PermissionValue: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface DelegateSetProps {
|
|
13
|
+
/** The unique address of the transaction sender. */
|
|
14
|
+
Account: string;
|
|
15
|
+
/**
|
|
16
|
+
* The account being authorized to act on the sender's behalf.
|
|
17
|
+
* Must be a valid XRPL classic or X-address AND must not equal
|
|
18
|
+
* `Account` (self-delegation is rejected).
|
|
19
|
+
*/
|
|
20
|
+
Authorize: string;
|
|
21
|
+
/**
|
|
22
|
+
* The transaction permissions being granted. Each entry must be of
|
|
23
|
+
* shape `{ Permission: { PermissionValue: string } }`. At most
|
|
24
|
+
* `PERMISSIONS_MAX_LENGTH` entries; no duplicate `PermissionValue`s;
|
|
25
|
+
* `PermissionValue` must be a string AND must not name a
|
|
26
|
+
* non-delegatable transaction.
|
|
27
|
+
*/
|
|
28
|
+
Permissions: Permission[];
|
|
29
|
+
/** Bit-flags for this transaction. The spec defines none — must be 0. */
|
|
30
|
+
Flags?: number | undefined;
|
|
31
|
+
/** Fee in XRP (drops), base-10 integer string. */
|
|
32
|
+
Fee?: string | undefined;
|
|
33
|
+
/** Account sequence number. */
|
|
34
|
+
Sequence?: number | undefined;
|
|
35
|
+
}
|
|
36
|
+
export interface DelegateSet extends Readonly<DelegateSetProps> {
|
|
37
|
+
readonly TransactionType: 'DelegateSet';
|
|
38
|
+
validate(): void;
|
|
39
|
+
toJSON(): Record<string, unknown>;
|
|
40
|
+
with(overrides: Partial<DelegateSetProps>): DelegateSet;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build a frozen DelegateSet. Throws `ValidationError` on construction
|
|
44
|
+
* if any required field is missing or malformed.
|
|
45
|
+
*
|
|
46
|
+
* The class-based equivalent validates lazily (caller must invoke
|
|
47
|
+
* `.validate()`); this functional version validates at construction.
|
|
48
|
+
* There is no way to build an invalid tx — `with()` re-runs the
|
|
49
|
+
* factory, so overrides are re-validated too.
|
|
50
|
+
*/
|
|
51
|
+
export declare function delegateSet(props: DelegateSetProps): DelegateSet;
|
|
52
|
+
//# sourceMappingURL=delegate-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate-set.d.ts","sourceRoot":"","sources":["../../../src/fp/factories/delegate-set.ts"],"names":[],"mappings":"AA2HA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,WACf,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;IACxC,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC;CACzD;AAID;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CA+FhE"}
|