diff --git a/packages/xrpl/src/models/transactions/signerListSet.ts b/packages/xrpl/src/models/transactions/signerListSet.ts index 407aaecdf6..0d2cffe272 100644 --- a/packages/xrpl/src/models/transactions/signerListSet.ts +++ b/packages/xrpl/src/models/transactions/signerListSet.ts @@ -23,7 +23,7 @@ export interface SignerListSet extends BaseTransaction { * more than 32 members. No address may appear more than once in the list, nor * may the Account submitting the transaction appear in the list. */ - SignerEntries: SignerEntry[] + SignerEntries?: SignerEntry[] } const MAX_SIGNERS = 32 @@ -36,6 +36,7 @@ const HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u * @param tx - An SignerListSet Transaction. * @throws When the SignerListSet is Malformed. */ +// eslint-disable-next-line complexity -- validation can be complex export function validateSignerListSet(tx: Record): void { validateBaseTransaction(tx) @@ -47,6 +48,11 @@ export function validateSignerListSet(tx: Record): void { throw new ValidationError('SignerListSet: invalid SignerQuorum') } + // All other checks are for if SignerQuorum is greater than 0 + if (tx.SignerQuorum === 0) { + return + } + if (tx.SignerEntries === undefined) { throw new ValidationError('SignerListSet: missing field SignerEntries') } diff --git a/packages/xrpl/test/integration/transactions/signerListSet.test.ts b/packages/xrpl/test/integration/transactions/signerListSet.test.ts index 0cafdffce4..1181e1eb0a 100644 --- a/packages/xrpl/test/integration/transactions/signerListSet.test.ts +++ b/packages/xrpl/test/integration/transactions/signerListSet.test.ts @@ -18,8 +18,9 @@ describe('SignerListSet', function () { }) afterEach(async () => teardownClient(testContext)) + // Add signerlist it( - 'base', + 'add', async () => { const tx: SignerListSet = { TransactionType: 'SignerListSet', @@ -44,4 +45,18 @@ describe('SignerListSet', function () { }, TIMEOUT, ) + + // Remove signerlist + it( + 'remove', + async () => { + const tx: SignerListSet = { + TransactionType: 'SignerListSet', + Account: testContext.wallet.classicAddress, + SignerQuorum: 0, + } + await testTransaction(testContext.client, tx, testContext.wallet) + }, + TIMEOUT, + ) })