> ## Documentation Index
> Fetch the complete documentation index at: https://docs.therootnetwork.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XrplBridge

***

## Pallet Calls

***

### Add Relayer

> add a relayer
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.addRelayer
> ```
>
> **Type:**
>
> ```
> function addRelayer(
>   relayer: SeedPrimitivesSignatureAccountId20
> )
> ```

### Prune Settled Ledger Index (Sudo Only)

> **Namespace:**
>
> ```
> api.tx.xrplBridge.pruneSettledLedgerIndex
> ```
>
> **Type:**
>
> ```
> function pruneSettledLedgerIndex(
>   ledger_index: u32
> )
> ```

### Remove Relayer

> remove a relayer
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.removeRelayer
> ```
>
> **Type:**
>
> ```
> function removeRelayer(
>   relayer: SeedPrimitivesSignatureAccountId20
> )
> ```

### Reset Settled Xrpl Tx Data (Sudo Only)

> **Namespace:**
>
> ```
> api.tx.xrplBridge.resetSettledXrplTxData
> ```
>
> **Type:**
>
> ```
> function resetSettledXrplTxData(
>   highest_settled_ledger_index: u32,
>   submission_window_width: u32,
>   highest_pruned_ledger_index: Option<u32>,
>   settled_tx_data: Option<Vec<(H512,u32,PalletXrplBridgeXrpTransaction,SeedPrimitivesSignatureAccountId20)>>
> )
> ```

### Set Door Address (Sudo Only)

> Set XRPL door address managed by this pallet
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setDoorAddress
> ```
>
> **Type:**
>
> ```
> function setDoorAddress(
>   door_address: H160
> )
> ```

### Set Door Tx Fee (Sudo Only)

> Set the door tx fee amount
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setDoorTxFee
> ```
>
> **Type:**
>
> ```
> function setDoorTxFee(
>   fee: u64
> )
> ```

### Set Payment Delay (Sudo Only)

> Sets the payment delay payment\_delay is a tuple of payment\_threshold and delay in blocks
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setPaymentDelay
> ```
>
> **Type:**
>
> ```
> function setPaymentDelay(
>   asset_id: u32,
>   payment_delay: Option<(u128,u32)>
> )
> ```

### Set Ticket Sequence Current Allocation (Sudo Only)

> Set the door account current ticket sequence params for current allocation - force set
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setTicketSequenceCurrentAllocation
> ```
>
> **Type:**
>
> ```
> function setTicketSequenceCurrentAllocation(
>   ticket_sequence: u32,
>   start_ticket_sequence: u32,
>   ticket_bucket_size: u32
> )
> ```

### Set Ticket Sequence Next Allocation

> Set the door account ticket sequence params for the next allocation
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setTicketSequenceNextAllocation
> ```
>
> **Type:**
>
> ```
> function setTicketSequenceNextAllocation(
>   start_ticket_sequence: u32,
>   ticket_bucket_size: u32
> )
> ```

### Set Xrp Source Tag (Sudo Only)

> Set the xrp source tag
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setXrpSourceTag
> ```
>
> **Type:**
>
> ```
> function setXrpSourceTag(
>   source_tag: u32
> )
> ```

### Submit Challenge

> Submit xrp transaction challenge
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.submitChallenge
> ```
>
> **Type:**
>
> ```
> function submitChallenge(
>   transaction_hash: H512
> )
> ```

### Submit Transaction

> Submit xrp transaction
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.submitTransaction
> ```
>
> **Type:**
>
> ```
> function submitTransaction(
>   ledger_index: u64,
>   transaction_hash: H512,
>   transaction: PalletXrplBridgeXrplTxData,
>   timestamp: u64
> )
> ```

### Withdraw Xrp

> Note. Use withdraw instead Withdraw xrp transaction
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.withdrawXrp
> ```
>
> **Type:**
>
> ```
> function withdrawXrp(
>   amount: u128,
>   destination: H160
> )
> ```

### Withdraw Xrp With Destination Tag

> Note. Use withdraw instead Withdraw xrp transaction
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.withdrawXrpWithDestinationTag
> ```
>
> **Type:**
>
> ```
> function withdrawXrpWithDestinationTag(
>   amount: u128,
>   destination: H160,
>   destination_tag: u32
> )
> ```

### Withdraw

> Withdraw asset specified by asset\_id. This extrinsic replaces withdrawXrp and withdrawXrpWithDestinationTag
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.withdraw
> ```
>
> **Type:**
>
> ```
> function withdraw(
>   asset_id: u32,
>   amount: u128,
>   destination: H160,
>   destination_tag: Option<u32>
> )
> ```

### Set Xrpl Asset Map (Sudo Only)

> Sets the mapping for an asset to an xrpl symbol Sets both XRPLToAssetId and AssetIdToXRPL
>
> **Namespace:**
>
> ```
> api.tx.xrplBridge.setXrplAssetMap
> ```
>
> **Type:**
>
> ```
> function setXrplAssetMap(
>   asset_id: u32,
>   xrpl_currency: PalletXrplBridgeXRPLCurrency,
> )
> ```

***

## Pallet Storage

***

### Challenge XRP Transaction List

> Challenge received for a transaction mapped by hash, will be cleared when validator validates
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.challengeXRPTransactionList
> ```
>
> **Type:**
>
> ```
> function challengeXRPTransactionList(
>   H512
> ): Option<SeedPrimitivesSignatureAccountId20>
> ```

### Delayed Payments

> Map from DelayedPaymentId to (sender, WithdrawTx)
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.delayedPayments
> ```
>
> **Type:**
>
> ```
> function delayedPayments(
>   u64
> ): Option<PalletXrplBridgeDelayedWithdrawal>
> ```

### Delayed Payment Schedule

> Map from block number to DelayedPatmentIds scheduled for that block
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.delayedPaymentSchedule
> ```
>
> **Type:**
>
> ```
> function delayedPaymentSchedule(
>   u32
> ): Option<Vec<u64>>
> ```

### Door Address

> The door address on XRPL
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.doorAddress
> ```
>
> **Type:**
>
> ```
> function doorAddress(
>
> ): Option<H160>
> ```

### Door Ticket Sequence

> The current ticket sequence of the XRPL door account
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.doorTicketSequence
> ```
>
> **Type:**
>
> ```
> function doorTicketSequence(
>
> ): u32
> ```

### Door Ticket Sequence Params

> The Ticket sequence params of the XRPL door account for the current allocation
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.doorTicketSequenceParams
> ```
>
> **Type:**
>
> ```
> function doorTicketSequenceParams(
>
> ): PalletXrplBridgeXrplTicketSequenceParams
> ```

### Door Ticket Sequence Params Next

> The Ticket sequence params of the XRPL door account for the next allocation
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.doorTicketSequenceParamsNext
> ```
>
> **Type:**
>
> ```
> function doorTicketSequenceParamsNext(
>
> ): PalletXrplBridgeXrplTicketSequenceParams
> ```

### Door Tx Fee

> The flat fee for XRPL door txs
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.doorTxFee
> ```
>
> **Type:**
>
> ```
> function doorTxFee(
>
> ): u64
> ```

### Highest Pruned Ledger Index

> Highest pruned XRPL ledger index
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.highestPrunedLedgerIndex
> ```
>
> **Type:**
>
> ```
> function highestPrunedLedgerIndex(
>
> ): u32
> ```

### Highest Settled Ledger Index

> Highest settled XRPL ledger index
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.highestSettledLedgerIndex
> ```
>
> **Type:**
>
> ```
> function highestSettledLedgerIndex(
>
> ): u32
> ```

### Next Delayed Payment Id

> The next available delayedPaymentId
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.nextDelayedPaymentId
> ```
>
> **Type:**
>
> ```
> function nextDelayedPaymentId(
>
> ): u64
> ```

### Next Delay Process Block

> The highest block number that has had all delayed payments processed
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.nextDelayProcessBlock
> ```
>
> **Type:**
>
> ```
> function nextDelayProcessBlock(
>
> ): u32
> ```

### Payment Delay

> Payment delay for any withdraw over the specified Balance threshold
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.paymentDelay
> ```
>
> **Type:**
>
> ```
> function paymentDelay(
>   u32
> ): Option<(u128,u32)>
> ```

### Process XRP Transaction

> Temporary storage to set the transactions ready to be processed at specified block number
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.processXRPTransaction
> ```
>
> **Type:**
>
> ```
> function processXRPTransaction(
>   u32
> ): Option<Vec<H512>>
> ```

### Process XRP Transaction Details

> Stores submitted transactions from XRPL waiting to be processed Transactions will be cleared according to the submission window after processing
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.processXRPTransactionDetails
> ```
>
> **Type:**
>
> ```
> function processXRPTransactionDetails(
>   H512
> ): Option<(u64,PalletXrplBridgeXrpTransaction,SeedPrimitivesSignatureAccountId20)>
> ```

### Relayer

> List of all XRP transaction relayers
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.relayer
> ```
>
> **Type:**
>
> ```
> function relayer(
>   SeedPrimitivesSignatureAccountId20
> ): Option<bool>
> ```

### Settled XRP Transaction Details

> Settled xrp transactions stored against XRPL ledger index
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.settledXRPTransactionDetails
> ```
>
> **Type:**
>
> ```
> function settledXRPTransactionDetails(
>   u32
> ): Option<Vec<H512>>
> ```

### Asset Id To XRPL

> Map TRN asset Id to XRPL symbol, storage to keep mapping between TRN -> XRPL tokens/assets
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.assetIdToXRPL
> ```
>
> **Type:**
>
> ```
> function assetIdToXRPL(
>   u32
> ): Option<PalletXrplBridgeXRPLCurrency>
> ```

### XRPL To Asset Id

> Map XRPL symbol to TRN asset Id, storage to keep mapping between XRPL -> TRN tokens/assets
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.xrplToAssetId
> ```
>
> **Type:**
>
> ```
> function xrplToAssetId(
>   PalletXrplBridgeXRPLCurrency
> ): Option<u32>
> ```

### Source Tag

> Source tag to be used to indicate the transaction is happening from futureverse
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.sourceTag
> ```
>
> **Type:**
>
> ```
> function sourceTag(
>
> ): u32
> ```

### Submission Window Width

> XRPL transactions submission window width in ledger indexes
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.submissionWindowWidth
> ```
>
> **Type:**
>
> ```
> function submissionWindowWidth(
>
> ): u32
> ```

### Ticket Sequence Threshold Reached Emitted

> Keeps track whether the TicketSequenceThresholdReached event is emitted
>
> **Namespace:**
>
> ```
> api.query.xrplBridge.ticketSequenceThresholdReachedEmitted
> ```
>
> **Type:**
>
> ```
> function ticketSequenceThresholdReachedEmitted(
>
> ): bool
> ```

***

## Pallet Events

***

### Door Address Set

> **Namespace:**
>
> ```
> api.events.xrplBridge.DoorAddressSet
> ```
>
> **Type:**
>
> ```
> type DoorAddressSet = {
>   param0: H160
> }
> ```

### Door Next Ticket Sequence Param Set

> **Namespace:**
>
> ```
> api.events.xrplBridge.DoorNextTicketSequenceParamSet
> ```
>
> **Type:**
>
> ```
> type DoorNextTicketSequenceParamSet = {
>   ticket_sequence_start_next: u32,
>   ticket_bucket_size_next: u32
> }
> ```

### Door Ticket Sequence Param Set

> **Namespace:**
>
> ```
> api.events.xrplBridge.DoorTicketSequenceParamSet
> ```
>
> **Type:**
>
> ```
> type DoorTicketSequenceParamSet = {
>   ticket_sequence: u32,
>   ticket_sequence_start: u32,
>   ticket_bucket_size: u32
> }
> ```

### Ledger Index Manual Prune

> **Namespace:**
>
> ```
> api.events.xrplBridge.LedgerIndexManualPrune
> ```
>
> **Type:**
>
> ```
> type LedgerIndexManualPrune = {
>   ledger_index: u32,
>   total_cleared: u32
> }
> ```

### Not Supported Transaction

> Transaction not supported
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.NotSupportedTransaction
> ```
>
> **Type:**
>
> ```
> type NotSupportedTransaction = {
>
> }
> ```

### Payment Delay Removed

> The payment delay was removed
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.PaymentDelayRemoved
> ```
>
> **Type:**
>
> ```
> type PaymentDelayRemoved = {
>   asset_id: u32,
> }
> ```

### Payment Delay Set

> The payment delay was set
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.PaymentDelaySet
> ```
>
> **Type:**
>
> ```
> type PaymentDelaySet = {
>   asset_id: u32,
>   payment_threshold: u128,
>   delay: u32
> }
> ```

### Processing Failed

> Processing an event failed
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.ProcessingFailed
> ```
>
> **Type:**
>
> ```
> type ProcessingFailed = {
>   param0: u64,
>   param1: H512,
>   param2: SpRuntimeDispatchError
> }
> ```

### Processing Ok

> Processing an event succeeded
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.ProcessingOk
> ```
>
> **Type:**
>
> ```
> type ProcessingOk = {
>   param0: u64,
>   param1: H512
> }
> ```

### Relayer Added

> **Namespace:**
>
> ```
> api.events.xrplBridge.RelayerAdded
> ```
>
> **Type:**
>
> ```
> type RelayerAdded = {
>   param0: SeedPrimitivesSignatureAccountId20
> }
> ```

### Relayer Removed

> **Namespace:**
>
> ```
> api.events.xrplBridge.RelayerRemoved
> ```
>
> **Type:**
>
> ```
> type RelayerRemoved = {
>   param0: SeedPrimitivesSignatureAccountId20
> }
> ```

### Ticket Sequence Threshold Reached

> **Namespace:**
>
> ```
> api.events.xrplBridge.TicketSequenceThresholdReached
> ```
>
> **Type:**
>
> ```
> type TicketSequenceThresholdReached = {
>   param0: u32
> }
> ```

### Transaction Added

> **Namespace:**
>
> ```
> api.events.xrplBridge.TransactionAdded
> ```
>
> **Type:**
>
> ```
> type TransactionAdded = {
>   param0: u64,
>   param1: H512
> }
> ```

### Transaction Challenge

> **Namespace:**
>
> ```
> api.events.xrplBridge.TransactionChallenge
> ```
>
> **Type:**
>
> ```
> type TransactionChallenge = {
>   param0: u64,
>   param1: H512
> }
> ```

### Withdraw Delayed

> A withdrawal was delayed as it was above the min\_payment threshold
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.WithdrawDelayed
> ```
>
> **Type:**
>
> ```
> type WithdrawDelayed = {
>   sender: SeedPrimitivesSignatureAccountId20,
>   asset_id: u32,
>   amount: u128,
>   destination: H160,
>   delayed_payment_id: u64
> }
> ```

### Withdraw Request

> Request to withdraw some XRP amount to XRPL
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.WithdrawRequest
> ```
>
> **Type:**
>
> ```
> type WithdrawRequest = {
>   proof_id: u64,
>   sender: SeedPrimitivesSignatureAccountId20,
>   asset_id: u32,
>   amount: u128,
>   destination: H160
> }
> ```

### Xrpl Asset Map Set

> A new mapping between asset\_id and XRPL currency was set
>
> **Namespace:**
>
> ```
> api.events.xrplBridge.xrplAssetMapSet
> ```
>
> **Type:**
>
> ```
> type XrplAssetMapSet = {
>   asset_id: u32,
>   xrpl_currency: PalletXrplBridgeXRPLCurrency
> }
> ```

***

## Pallet Errors

***

### Asset Not Supported

> This asset is not supported by the bridge
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.assetNotSupported
> ```

### Cannot Process More Transactions At That Block

> Cannot process more transactions at that block
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.CannotProcessMoreTransactionsAtThatBlock
> ```

### Cannot Prune Active Ledger Index

> This ledger index is within the submission window and can't be pruned
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.CannotPruneActiveLedgerIndex
> ```

### Delay Schedule At Capacity

> The scheduled block cannot hold any more delayed payments
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.DelayScheduleAtCapacity
> ```

### Door Address Not Set

> The door address has not been configured
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.DoorAddressNotSet
> ```

### Invalid Highest Pruned Index

> highest\_pruned\_ledger\_index must be less than highest\_settled\_ledger\_index - submission\_window\_width
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidHighestPrunedIndex
> ```

### Invalid Signers

> The signers are not known by ethy
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidSigners
> ```

### Next Ticket Sequence Params Invalid

> The NextTicketSequenceParams is invalid
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.NextTicketSequenceParamsInvalid
> ```

### Next Ticket Sequence Params Not Set

> The NextTicketSequenceParams has not been set
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.NextTicketSequenceParamsNotSet
> ```

### No Available Payment Ids

> The paymentIds have been exhausted
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.NoAvailablePaymentIds
> ```

### Not Permitted

> **Namespace:**
>
> ```
> api.errors.xrplBridge.NotPermitted
> ```

### No Transaction Details

> There is no settledXRPTransactionDetails for this ledger index
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.NoTransactionDetails
> ```

### Outside Submission Window

> Transaction submitted is outside the submission window
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.OutSideSubmissionWindow
> ```

### Relayer Does Not Exists

> **Namespace:**
>
> ```
> api.errors.xrplBridge.RelayerDoesNotExists
> ```

### Ticket Sequence Params Invalid

> The TicketSequenceParams is invalid
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.TicketSequenceParamsInvalid
> ```

### Too Many Signers

> XRPL does not allow more than 8 signers for door address
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.TooManySigners
> ```

### Invalid Asset Decimals

> The asset decimals are too high to bridge to XRPL
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidAssetDecimals
> ```

### Invalid Currency Code

> The issued amount currency code is invalid
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidCurrencyCode
> ```

### Invalid Mantissa Exponent Conversion

> Could not convert Balance to Mantissa Exponent
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidMantissaExponentConversion
> ```

### Invalid Symbol Mapping

> XRPL symbol to TRN asset id mapping is invalid
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.InvalidSymbolMapping
> ```

### Asset Rounding Too High

> The asset rounding due to saturation is too high, reduce the significant digits
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.AssetRoundingTooHigh
> ```

### Too Many Transactions Per Ledger

> Too Many transactions per ledger
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.TooManyTransactionsPerLedger
> ```

### Tx Replay

> Submitted a duplicate transaction hash
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.TxReplay
> ```

### Withdraw Invalid Amount

> Withdraw amount must be non-zero and \< = u64
>
> **Namespace:**
>
> ```
> api.errors.xrplBridge.WithdrawInvalidAmount
> ```

***

## Constants

***

### Challenge Period

> Challenge Period to wait for a challenge before processing the transaction
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.challengePeriod
> ```
>
> **Type:**
>
> ```
> type challengePeriod = u32
> ```

### Delayed Payment Block Limit

> Upper limit to the number of blocks we can check per block for delayed payments
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.delayedPaymentBlockLimit
> ```
>
> **Type:**
>
> ```
> type delayedPaymentBlockLimit = u32
> ```

### Max Delayed Payments Per Block

> Maximum number of delayed transactions that can be processed in a single block
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.maxDelayedPaymentsPerBlock
> ```
>
> **Type:**
>
> ```
> type maxDelayedPaymentsPerBlock = u32
> ```

### Max Pruned Transactions Per Block

> Maximum number of transactions that can be pruned in on\_idle
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.maxPrunedTransactionsPerBlock
> ```
>
> **Type:**
>
> ```
> type maxPrunedTransactionsPerBlock = u32
> ```

### Xrp Asset Id

> XRP Asset Id set at runtime
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.xrpAssetId
> ```
>
> **Type:**
>
> ```
> type xrpAssetId = u32
> ```

### Native Asset Id

> ROOT Asset Id set at runtime
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.nativeAssetId
> ```
>
> **Type:**
>
> ```
> type nativeAssetId = u32
> ```

### Pallet Id

> This pallet's Id, used for deriving a sovereign account ID
>
> **Namespace:**
>
> ```
> api.consts.xrplBridge.palletId
> ```
>
> **Type:**
>
> ```
> type palletId = u32
> ```
