xrpl
Version:
A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser
51 lines (42 loc) • 1.5 kB
text/typescript
import { AuthorizeCredential } from '../common'
import {
BaseTransaction,
isString,
validateBaseTransaction,
validateOptionalField,
validateRequiredField,
validateCredentialsList,
isArray,
} from './common'
const MAX_ACCEPTED_CREDENTIALS = 10
export interface PermissionedDomainSet extends BaseTransaction {
/* The transaction type (PermissionedDomainSet). */
TransactionType: 'PermissionedDomainSet'
/* The domain to modify. Must be included if modifying an existing domain. */
DomainID?: string
/* The credentials that are accepted by the domain. Ownership of one
of these credentials automatically makes you a member of the domain.
An empty array means deleting the field. */
AcceptedCredentials: AuthorizeCredential[]
}
/**
* Validate a PermissionedDomainSet transaction.
*
* @param tx - The transaction to validate.
* @throws {ValidationError} When the transaction is invalid.
*/
export function validatePermissionedDomainSet(
tx: Record<string, unknown>,
): void {
validateBaseTransaction(tx)
validateOptionalField(tx, 'DomainID', isString)
validateRequiredField(tx, 'AcceptedCredentials', isArray)
validateCredentialsList(
tx.AcceptedCredentials,
tx.TransactionType,
// PermissionedDomainSet uses AuthorizeCredential nested objects only, strings are not allowed
false,
// PermissionedDomainSet uses at most 10 accepted credentials. This is different from Credential-feature transactions.
MAX_ACCEPTED_CREDENTIALS,
)
}