xrpl 4.2.0-batch.0 → 4.2.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/build/xrpl-latest-min.js +1 -1
- package/build/xrpl-latest-min.js.map +1 -1
- package/build/xrpl-latest.js +35 -294
- package/build/xrpl-latest.js.map +1 -1
- package/dist/npm/Wallet/defaultFaucets.d.ts +1 -2
- package/dist/npm/Wallet/defaultFaucets.d.ts.map +1 -1
- package/dist/npm/Wallet/defaultFaucets.js +0 -5
- package/dist/npm/Wallet/defaultFaucets.js.map +1 -1
- package/dist/npm/Wallet/index.d.ts.map +1 -1
- package/dist/npm/Wallet/index.js +2 -8
- package/dist/npm/Wallet/index.js.map +1 -1
- package/dist/npm/client/RequestManager.d.ts.map +1 -1
- package/dist/npm/client/RequestManager.js +3 -3
- package/dist/npm/client/RequestManager.js.map +1 -1
- package/dist/npm/client/connection.d.ts.map +1 -1
- package/dist/npm/client/connection.js.map +1 -1
- package/dist/npm/client/index.d.ts.map +1 -1
- package/dist/npm/client/index.js +8 -5
- package/dist/npm/client/index.js.map +1 -1
- package/dist/npm/models/ledger/Credential.d.ts +2 -2
- package/dist/npm/models/ledger/Credential.d.ts.map +1 -1
- package/dist/npm/models/methods/baseMethod.d.ts +0 -1
- package/dist/npm/models/methods/baseMethod.d.ts.map +1 -1
- package/dist/npm/models/transactions/AMMClawback.d.ts +2 -2
- package/dist/npm/models/transactions/AMMClawback.d.ts.map +1 -1
- package/dist/npm/models/transactions/AMMDeposit.d.ts +2 -2
- package/dist/npm/models/transactions/AMMDeposit.d.ts.map +1 -1
- package/dist/npm/models/transactions/AMMWithdraw.d.ts +2 -2
- package/dist/npm/models/transactions/AMMWithdraw.d.ts.map +1 -1
- package/dist/npm/models/transactions/MPTokenAuthorize.d.ts +2 -2
- package/dist/npm/models/transactions/MPTokenAuthorize.d.ts.map +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts +2 -2
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
- package/dist/npm/models/transactions/MPTokenIssuanceSet.d.ts +2 -2
- package/dist/npm/models/transactions/MPTokenIssuanceSet.d.ts.map +1 -1
- package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts +2 -2
- package/dist/npm/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
- package/dist/npm/models/transactions/NFTokenMint.d.ts +2 -2
- package/dist/npm/models/transactions/NFTokenMint.d.ts.map +1 -1
- package/dist/npm/models/transactions/XChainModifyBridge.d.ts +2 -2
- package/dist/npm/models/transactions/XChainModifyBridge.d.ts.map +1 -1
- package/dist/npm/models/transactions/accountSet.d.ts +2 -2
- package/dist/npm/models/transactions/accountSet.d.ts.map +1 -1
- package/dist/npm/models/transactions/accountSet.js.map +1 -1
- package/dist/npm/models/transactions/common.d.ts +4 -16
- package/dist/npm/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/models/transactions/common.js +10 -28
- package/dist/npm/models/transactions/common.js.map +1 -1
- package/dist/npm/models/transactions/index.d.ts +2 -3
- package/dist/npm/models/transactions/index.d.ts.map +1 -1
- package/dist/npm/models/transactions/index.js.map +1 -1
- package/dist/npm/models/transactions/metadata.d.ts +0 -1
- package/dist/npm/models/transactions/metadata.d.ts.map +1 -1
- package/dist/npm/models/transactions/offerCreate.d.ts +2 -2
- package/dist/npm/models/transactions/offerCreate.d.ts.map +1 -1
- package/dist/npm/models/transactions/payment.d.ts +2 -2
- package/dist/npm/models/transactions/payment.d.ts.map +1 -1
- package/dist/npm/models/transactions/paymentChannelClaim.d.ts +2 -2
- package/dist/npm/models/transactions/paymentChannelClaim.d.ts.map +1 -1
- package/dist/npm/models/transactions/paymentChannelClaim.js.map +1 -1
- package/dist/npm/models/transactions/transaction.d.ts +1 -2
- package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
- package/dist/npm/models/transactions/transaction.js +0 -7
- package/dist/npm/models/transactions/transaction.js.map +1 -1
- package/dist/npm/models/transactions/trustSet.d.ts +2 -2
- package/dist/npm/models/transactions/trustSet.d.ts.map +1 -1
- package/dist/npm/models/utils/flags.d.ts +0 -1
- package/dist/npm/models/utils/flags.d.ts.map +1 -1
- package/dist/npm/models/utils/flags.js +2 -22
- package/dist/npm/models/utils/flags.js.map +1 -1
- package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
- package/dist/npm/src/Wallet/defaultFaucets.d.ts +1 -2
- package/dist/npm/src/Wallet/defaultFaucets.d.ts.map +1 -1
- package/dist/npm/src/Wallet/defaultFaucets.js +0 -5
- package/dist/npm/src/Wallet/defaultFaucets.js.map +1 -1
- package/dist/npm/src/Wallet/index.d.ts.map +1 -1
- package/dist/npm/src/Wallet/index.js +2 -8
- package/dist/npm/src/Wallet/index.js.map +1 -1
- package/dist/npm/src/client/RequestManager.d.ts.map +1 -1
- package/dist/npm/src/client/RequestManager.js +3 -3
- package/dist/npm/src/client/RequestManager.js.map +1 -1
- package/dist/npm/src/client/connection.d.ts.map +1 -1
- package/dist/npm/src/client/connection.js.map +1 -1
- package/dist/npm/src/client/index.d.ts.map +1 -1
- package/dist/npm/src/client/index.js +8 -5
- package/dist/npm/src/client/index.js.map +1 -1
- package/dist/npm/src/models/ledger/Credential.d.ts +2 -2
- package/dist/npm/src/models/ledger/Credential.d.ts.map +1 -1
- package/dist/npm/src/models/methods/baseMethod.d.ts +0 -1
- package/dist/npm/src/models/methods/baseMethod.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/AMMClawback.d.ts +2 -2
- package/dist/npm/src/models/transactions/AMMClawback.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/AMMDeposit.d.ts +2 -2
- package/dist/npm/src/models/transactions/AMMDeposit.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/AMMWithdraw.d.ts +2 -2
- package/dist/npm/src/models/transactions/AMMWithdraw.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenAuthorize.d.ts +2 -2
- package/dist/npm/src/models/transactions/MPTokenAuthorize.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts +2 -2
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceCreate.js.map +1 -1
- package/dist/npm/src/models/transactions/MPTokenIssuanceSet.d.ts +2 -2
- package/dist/npm/src/models/transactions/MPTokenIssuanceSet.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts +2 -2
- package/dist/npm/src/models/transactions/NFTokenCreateOffer.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/NFTokenMint.d.ts +2 -2
- package/dist/npm/src/models/transactions/NFTokenMint.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts +2 -2
- package/dist/npm/src/models/transactions/XChainModifyBridge.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/accountSet.d.ts +2 -2
- package/dist/npm/src/models/transactions/accountSet.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/accountSet.js.map +1 -1
- package/dist/npm/src/models/transactions/common.d.ts +4 -16
- package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/common.js +10 -28
- package/dist/npm/src/models/transactions/common.js.map +1 -1
- package/dist/npm/src/models/transactions/index.d.ts +2 -3
- package/dist/npm/src/models/transactions/index.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/index.js.map +1 -1
- package/dist/npm/src/models/transactions/metadata.d.ts +0 -1
- package/dist/npm/src/models/transactions/metadata.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/offerCreate.d.ts +2 -2
- package/dist/npm/src/models/transactions/offerCreate.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/payment.d.ts +2 -2
- package/dist/npm/src/models/transactions/payment.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/paymentChannelClaim.d.ts +2 -2
- package/dist/npm/src/models/transactions/paymentChannelClaim.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/paymentChannelClaim.js.map +1 -1
- package/dist/npm/src/models/transactions/transaction.d.ts +1 -2
- package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/transaction.js +0 -7
- package/dist/npm/src/models/transactions/transaction.js.map +1 -1
- package/dist/npm/src/models/transactions/trustSet.d.ts +2 -2
- package/dist/npm/src/models/transactions/trustSet.d.ts.map +1 -1
- package/dist/npm/src/models/utils/flags.d.ts +0 -1
- package/dist/npm/src/models/utils/flags.d.ts.map +1 -1
- package/dist/npm/src/models/utils/flags.js +2 -22
- package/dist/npm/src/models/utils/flags.js.map +1 -1
- package/dist/npm/src/sugar/autofill.d.ts +1 -3
- package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
- package/dist/npm/src/sugar/autofill.js +5 -100
- package/dist/npm/src/sugar/autofill.js.map +1 -1
- package/dist/npm/src/sugar/submit.d.ts.map +1 -1
- package/dist/npm/src/sugar/submit.js.map +1 -1
- package/dist/npm/src/utils/hashes/hashLedger.d.ts.map +1 -1
- package/dist/npm/src/utils/hashes/hashLedger.js +1 -4
- package/dist/npm/src/utils/hashes/hashLedger.js.map +1 -1
- package/dist/npm/sugar/autofill.d.ts +1 -3
- package/dist/npm/sugar/autofill.d.ts.map +1 -1
- package/dist/npm/sugar/autofill.js +5 -100
- package/dist/npm/sugar/autofill.js.map +1 -1
- package/dist/npm/sugar/submit.d.ts.map +1 -1
- package/dist/npm/sugar/submit.js.map +1 -1
- package/dist/npm/utils/hashes/hashLedger.d.ts.map +1 -1
- package/dist/npm/utils/hashes/hashLedger.js +1 -4
- package/dist/npm/utils/hashes/hashLedger.js.map +1 -1
- package/package.json +4 -4
- package/src/Wallet/defaultFaucets.ts +0 -6
- package/src/Wallet/index.ts +3 -9
- package/src/client/RequestManager.ts +1 -4
- package/src/client/connection.ts +1 -0
- package/src/client/index.ts +28 -7
- package/src/models/ledger/Credential.ts +2 -2
- package/src/models/methods/baseMethod.ts +0 -1
- package/src/models/transactions/AMMClawback.ts +2 -2
- package/src/models/transactions/AMMDeposit.ts +2 -2
- package/src/models/transactions/AMMWithdraw.ts +2 -2
- package/src/models/transactions/MPTokenAuthorize.ts +2 -2
- package/src/models/transactions/MPTokenIssuanceCreate.ts +2 -3
- package/src/models/transactions/MPTokenIssuanceSet.ts +2 -2
- package/src/models/transactions/NFTokenCreateOffer.ts +2 -2
- package/src/models/transactions/NFTokenMint.ts +2 -2
- package/src/models/transactions/XChainModifyBridge.ts +2 -2
- package/src/models/transactions/accountSet.ts +1 -2
- package/src/models/transactions/common.ts +22 -62
- package/src/models/transactions/index.ts +3 -3
- package/src/models/transactions/metadata.ts +0 -2
- package/src/models/transactions/offerCreate.ts +2 -2
- package/src/models/transactions/payment.ts +2 -2
- package/src/models/transactions/paymentChannelClaim.ts +2 -3
- package/src/models/transactions/transaction.ts +0 -15
- package/src/models/transactions/trustSet.ts +2 -2
- package/src/models/utils/flags.ts +1 -30
- package/src/sugar/autofill.ts +11 -140
- package/src/sugar/submit.ts +2 -1
- package/src/utils/hashes/hashLedger.ts +2 -5
- package/dist/npm/Wallet/batchSigner.d.ts +0 -8
- package/dist/npm/Wallet/batchSigner.d.ts.map +0 -1
- package/dist/npm/Wallet/batchSigner.js +0 -124
- package/dist/npm/Wallet/batchSigner.js.map +0 -1
- package/dist/npm/models/transactions/batch.d.ts +0 -39
- package/dist/npm/models/transactions/batch.d.ts.map +0 -1
- package/dist/npm/models/transactions/batch.js +0 -62
- package/dist/npm/models/transactions/batch.js.map +0 -1
- package/dist/npm/src/Wallet/batchSigner.d.ts +0 -8
- package/dist/npm/src/Wallet/batchSigner.d.ts.map +0 -1
- package/dist/npm/src/Wallet/batchSigner.js +0 -124
- package/dist/npm/src/Wallet/batchSigner.js.map +0 -1
- package/dist/npm/src/models/transactions/batch.d.ts +0 -39
- package/dist/npm/src/models/transactions/batch.d.ts.map +0 -1
- package/dist/npm/src/models/transactions/batch.js +0 -62
- package/dist/npm/src/models/transactions/batch.js.map +0 -1
- package/src/Wallet/batchSigner.ts +0 -222
- package/src/models/transactions/batch.ts +0 -147
@@ -8,8 +8,6 @@ import { AccountSetTfFlags } from '../transactions/accountSet'
|
|
8
8
|
import { AMMClawbackFlags } from '../transactions/AMMClawback'
|
9
9
|
import { AMMDepositFlags } from '../transactions/AMMDeposit'
|
10
10
|
import { AMMWithdrawFlags } from '../transactions/AMMWithdraw'
|
11
|
-
import { BatchFlags } from '../transactions/batch'
|
12
|
-
import { GlobalFlags } from '../transactions/common'
|
13
11
|
import { MPTokenAuthorizeFlags } from '../transactions/MPTokenAuthorize'
|
14
12
|
import { MPTokenIssuanceCreateFlags } from '../transactions/MPTokenIssuanceCreate'
|
15
13
|
import { MPTokenIssuanceSetFlags } from '../transactions/MPTokenIssuanceSet'
|
@@ -53,7 +51,6 @@ const txToFlag = {
|
|
53
51
|
AMMClawback: AMMClawbackFlags,
|
54
52
|
AMMDeposit: AMMDepositFlags,
|
55
53
|
AMMWithdraw: AMMWithdrawFlags,
|
56
|
-
Batch: BatchFlags,
|
57
54
|
MPTokenAuthorize: MPTokenAuthorizeFlags,
|
58
55
|
MPTokenIssuanceCreate: MPTokenIssuanceCreateFlags,
|
59
56
|
MPTokenIssuanceSet: MPTokenIssuanceSetFlags,
|
@@ -120,15 +117,7 @@ export function convertTxFlagsToNumber(tx: Transaction): number {
|
|
120
117
|
}, 0)
|
121
118
|
}
|
122
119
|
|
123
|
-
return
|
124
|
-
if (GlobalFlags[flag] == null) {
|
125
|
-
throw new ValidationError(
|
126
|
-
`Invalid flag ${flag}. Valid flags are ${JSON.stringify(GlobalFlags)}`,
|
127
|
-
)
|
128
|
-
}
|
129
|
-
|
130
|
-
return tx.Flags?.[flag] ? resultFlags | GlobalFlags[flag] : resultFlags
|
131
|
-
}, 0)
|
120
|
+
return 0
|
132
121
|
}
|
133
122
|
|
134
123
|
/**
|
@@ -159,21 +148,3 @@ export function parseTransactionFlags(tx: Transaction): object {
|
|
159
148
|
|
160
149
|
return booleanFlagMap
|
161
150
|
}
|
162
|
-
|
163
|
-
/**
|
164
|
-
* Determines whether a transaction has a certain flag enabled.
|
165
|
-
*
|
166
|
-
* @param tx The transaction.
|
167
|
-
* @param flag The flag to check.
|
168
|
-
* @returns Whether `flag` is enabled on `tx`.
|
169
|
-
*/
|
170
|
-
export function hasFlag(tx: Transaction, flag: number): boolean {
|
171
|
-
if (tx.Flags == null) {
|
172
|
-
return false
|
173
|
-
}
|
174
|
-
if (typeof tx.Flags === 'number') {
|
175
|
-
return isFlagEnabled(tx.Flags, flag)
|
176
|
-
}
|
177
|
-
const txFlagNum = convertTxFlagsToNumber(tx)
|
178
|
-
return isFlagEnabled(txFlagNum, flag)
|
179
|
-
}
|
package/src/sugar/autofill.ts
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
/* eslint-disable max-lines -- lots of helper functions needed for autofill */
|
2
1
|
import BigNumber from 'bignumber.js'
|
3
2
|
import { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'
|
4
3
|
|
5
4
|
import { type Client } from '..'
|
6
5
|
import { ValidationError, XrplError } from '../errors'
|
7
6
|
import { AccountInfoRequest, AccountObjectsRequest } from '../models/methods'
|
8
|
-
import {
|
9
|
-
import { GlobalFlags } from '../models/transactions/common'
|
7
|
+
import { Transaction } from '../models/transactions'
|
10
8
|
import { xrpToDrops } from '../utils'
|
11
9
|
|
12
10
|
import getFeeXrp from './getFeeXrp'
|
@@ -209,20 +207,6 @@ function convertToClassicAddress(tx: Transaction, fieldName: string): void {
|
|
209
207
|
}
|
210
208
|
}
|
211
209
|
|
212
|
-
// Helper function to get the next valid sequence number for an account.
|
213
|
-
async function getNextValidSequenceNumber(
|
214
|
-
client: Client,
|
215
|
-
account: string,
|
216
|
-
): Promise<number> {
|
217
|
-
const request: AccountInfoRequest = {
|
218
|
-
command: 'account_info',
|
219
|
-
account,
|
220
|
-
ledger_index: 'current',
|
221
|
-
}
|
222
|
-
const data = await client.request(request)
|
223
|
-
return data.result.account_data.Sequence
|
224
|
-
}
|
225
|
-
|
226
210
|
/**
|
227
211
|
* Sets the next valid sequence number for a transaction.
|
228
212
|
*
|
@@ -235,8 +219,14 @@ export async function setNextValidSequenceNumber(
|
|
235
219
|
client: Client,
|
236
220
|
tx: Transaction,
|
237
221
|
): Promise<void> {
|
222
|
+
const request: AccountInfoRequest = {
|
223
|
+
command: 'account_info',
|
224
|
+
account: tx.Account,
|
225
|
+
ledger_index: 'current',
|
226
|
+
}
|
227
|
+
const data = await client.request(request)
|
238
228
|
// eslint-disable-next-line no-param-reassign, require-atomic-updates -- param reassign is safe with no race condition
|
239
|
-
tx.Sequence =
|
229
|
+
tx.Sequence = data.result.account_data.Sequence
|
240
230
|
}
|
241
231
|
|
242
232
|
/**
|
@@ -284,16 +274,13 @@ export async function calculateFeePerTransactionType(
|
|
284
274
|
scaleValue(netFeeDrops, 33 + fulfillmentBytesSize / 16),
|
285
275
|
)
|
286
276
|
baseFee = product.dp(0, BigNumber.ROUND_CEIL)
|
287
|
-
}
|
277
|
+
}
|
278
|
+
|
279
|
+
if (
|
288
280
|
tx.TransactionType === 'AccountDelete' ||
|
289
281
|
tx.TransactionType === 'AMMCreate'
|
290
282
|
) {
|
291
283
|
baseFee = await fetchAccountDeleteFee(client)
|
292
|
-
} else if (tx.TransactionType === 'Batch') {
|
293
|
-
baseFee = BigNumber.sum(
|
294
|
-
baseFee.times(2),
|
295
|
-
baseFee.times(tx.RawTransactions.length + (tx.BatchSigners?.length ?? 0)),
|
296
|
-
)
|
297
284
|
}
|
298
285
|
|
299
286
|
/*
|
@@ -372,119 +359,3 @@ export async function checkAccountDeleteBlockers(
|
|
372
359
|
resolve()
|
373
360
|
})
|
374
361
|
}
|
375
|
-
/**
|
376
|
-
* Replaces Amount with DeliverMax if needed.
|
377
|
-
*
|
378
|
-
* @param tx - The transaction object.
|
379
|
-
* @throws ValidationError if Amount and DeliverMax are both provided but do not match.
|
380
|
-
*/
|
381
|
-
export function handleDeliverMax(tx: Payment): void {
|
382
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore type-assertions on the DeliverMax property
|
383
|
-
// @ts-expect-error -- DeliverMax property exists only at the RPC level, not at the protocol level
|
384
|
-
if (tx.DeliverMax != null) {
|
385
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- needed here
|
386
|
-
if (tx.Amount == null) {
|
387
|
-
// If only DeliverMax is provided, use it to populate the Amount field
|
388
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore type-assertions on the DeliverMax property
|
389
|
-
// @ts-expect-error -- DeliverMax property exists only at the RPC level, not at the protocol level
|
390
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, no-param-reassign -- known RPC-level property
|
391
|
-
tx.Amount = tx.DeliverMax
|
392
|
-
}
|
393
|
-
|
394
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore type-assertions on the DeliverMax property
|
395
|
-
// @ts-expect-error -- DeliverMax property exists only at the RPC level, not at the protocol level
|
396
|
-
|
397
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- needed here
|
398
|
-
if (tx.Amount != null && tx.Amount !== tx.DeliverMax) {
|
399
|
-
throw new ValidationError(
|
400
|
-
'PaymentTransaction: Amount and DeliverMax fields must be identical when both are provided',
|
401
|
-
)
|
402
|
-
}
|
403
|
-
|
404
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore type-assertions on the DeliverMax property
|
405
|
-
// @ts-expect-error -- DeliverMax property exists only at the RPC level, not at the protocol level
|
406
|
-
// eslint-disable-next-line no-param-reassign -- needed here
|
407
|
-
delete tx.DeliverMax
|
408
|
-
}
|
409
|
-
}
|
410
|
-
|
411
|
-
/**
|
412
|
-
* Autofills all the relevant `x` fields.
|
413
|
-
*
|
414
|
-
* @param client - The client object.
|
415
|
-
* @param tx - The transaction object.
|
416
|
-
* @returns A promise that resolves with void if there are no blockers, or rejects with an XrplError if there are blockers.
|
417
|
-
*/
|
418
|
-
// eslint-disable-next-line complexity, max-lines-per-function, max-statements -- needed here, lots to check
|
419
|
-
export async function autofillBatchTxn(
|
420
|
-
client: Client,
|
421
|
-
tx: Batch,
|
422
|
-
): Promise<void> {
|
423
|
-
const accountSequences: Record<string, number> = {}
|
424
|
-
|
425
|
-
for await (const rawTxn of tx.RawTransactions) {
|
426
|
-
const txn = rawTxn.RawTransaction
|
427
|
-
|
428
|
-
// Flag processing
|
429
|
-
/* eslint-disable no-bitwise -- needed here for flag parsing */
|
430
|
-
if (txn.Flags == null) {
|
431
|
-
txn.Flags = GlobalFlags.tfInnerBatchTxn
|
432
|
-
} else if (typeof txn.Flags === 'number') {
|
433
|
-
if (!((txn.Flags & GlobalFlags.tfInnerBatchTxn) === 0)) {
|
434
|
-
txn.Flags |= GlobalFlags.tfInnerBatchTxn
|
435
|
-
}
|
436
|
-
} else if (!txn.Flags.tfInnerBatchTxn) {
|
437
|
-
txn.Flags.tfInnerBatchTxn = true
|
438
|
-
}
|
439
|
-
/* eslint-enable no-bitwise */
|
440
|
-
|
441
|
-
// Sequence processing
|
442
|
-
if (txn.Sequence == null && txn.TicketSequence == null) {
|
443
|
-
if (txn.Account in accountSequences) {
|
444
|
-
txn.Sequence = accountSequences[txn.Account]
|
445
|
-
accountSequences[txn.Account] += 1
|
446
|
-
} else {
|
447
|
-
const nextSequence = await getNextValidSequenceNumber(
|
448
|
-
client,
|
449
|
-
txn.Account,
|
450
|
-
)
|
451
|
-
const sequence =
|
452
|
-
txn.Account === tx.Account ? nextSequence + 1 : nextSequence
|
453
|
-
accountSequences[txn.Account] = sequence + 1
|
454
|
-
txn.Sequence = sequence
|
455
|
-
}
|
456
|
-
}
|
457
|
-
|
458
|
-
if (txn.Fee == null) {
|
459
|
-
txn.Fee = '0'
|
460
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- JS check
|
461
|
-
} else if (txn.Fee !== '0') {
|
462
|
-
throw new XrplError('Must have `Fee of "0" in inner Batch transaction.')
|
463
|
-
}
|
464
|
-
|
465
|
-
if (txn.SigningPubKey == null) {
|
466
|
-
txn.SigningPubKey = ''
|
467
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- JS check
|
468
|
-
} else if (txn.SigningPubKey !== '') {
|
469
|
-
throw new XrplError(
|
470
|
-
'Must have `SigningPubKey` of "" in inner Batch transaction.',
|
471
|
-
)
|
472
|
-
}
|
473
|
-
|
474
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- needed for JS
|
475
|
-
if (txn.TxnSignature != null) {
|
476
|
-
throw new XrplError(
|
477
|
-
'Must not have `TxnSignature` in inner Batch transaction.',
|
478
|
-
)
|
479
|
-
}
|
480
|
-
|
481
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- needed for JS
|
482
|
-
if (txn.Signers != null) {
|
483
|
-
throw new XrplError('Must not have `Signers` in inner Batch transaction.')
|
484
|
-
}
|
485
|
-
|
486
|
-
if (txn.NetworkID == null) {
|
487
|
-
txn.NetworkID = txNeedsNetworkID(client) ? client.networkID : undefined
|
488
|
-
}
|
489
|
-
}
|
490
|
-
}
|
package/src/sugar/submit.ts
CHANGED
@@ -175,6 +175,7 @@ function isSigned(transaction: SubmittableTransaction | string): boolean {
|
|
175
175
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know that tx.Signers is an array of Signers
|
176
176
|
const signers = tx.Signers as Signer[]
|
177
177
|
for (const signer of signers) {
|
178
|
+
// eslint-disable-next-line max-depth -- necessary for checking if signer is signed
|
178
179
|
if (
|
179
180
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- necessary check
|
180
181
|
signer.Signer.SigningPubKey == null ||
|
@@ -282,7 +283,7 @@ export function getLastLedgerSequence(
|
|
282
283
|
transaction: Transaction | string,
|
283
284
|
): number | null {
|
284
285
|
const tx = typeof transaction === 'string' ? decode(transaction) : transaction
|
285
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- converts
|
286
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- converts LastLedgSeq to number if present.
|
286
287
|
return tx.LastLedgerSequence as number | null
|
287
288
|
}
|
288
289
|
|
@@ -12,8 +12,6 @@ import { APIVersion } from '../../models'
|
|
12
12
|
import { LedgerEntry } from '../../models/ledger'
|
13
13
|
import { LedgerVersionMap } from '../../models/ledger/Ledger'
|
14
14
|
import { Transaction, TransactionMetadata } from '../../models/transactions'
|
15
|
-
import { GlobalFlags } from '../../models/transactions/common'
|
16
|
-
import { hasFlag } from '../../models/utils/flags'
|
17
15
|
|
18
16
|
import HashPrefix from './HashPrefix'
|
19
17
|
import sha512Half from './sha512Half'
|
@@ -68,7 +66,7 @@ function addLengthPrefix(hex: string): string {
|
|
68
66
|
*
|
69
67
|
* @param tx - A transaction to hash. Tx may be in binary blob form. Tx must be signed.
|
70
68
|
* @returns A hash of tx.
|
71
|
-
* @throws ValidationError if the Transaction is unsigned
|
69
|
+
* @throws ValidationError if the Transaction is unsigned.\
|
72
70
|
* @category Utilities
|
73
71
|
*/
|
74
72
|
export function hashSignedTx(tx: Transaction | string): string {
|
@@ -86,8 +84,7 @@ export function hashSignedTx(tx: Transaction | string): string {
|
|
86
84
|
if (
|
87
85
|
txObject.TxnSignature === undefined &&
|
88
86
|
txObject.Signers === undefined &&
|
89
|
-
txObject.SigningPubKey === undefined
|
90
|
-
!hasFlag(txObject, GlobalFlags.tfInnerBatchTxn)
|
87
|
+
txObject.SigningPubKey === undefined
|
91
88
|
) {
|
92
89
|
throw new ValidationError('The transaction must be signed to hash it.')
|
93
90
|
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { Batch } from '../models';
|
2
|
-
import { Wallet } from '.';
|
3
|
-
export declare function signMultiBatch(wallet: Wallet, transaction: Batch, opts?: {
|
4
|
-
batchAccount?: string;
|
5
|
-
multisign?: boolean | string;
|
6
|
-
}): void;
|
7
|
-
export declare function combineBatchSigners(transactions: Array<Batch | string>): string;
|
8
|
-
//# sourceMappingURL=batchSigner.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"batchSigner.d.ts","sourceRoot":"","sources":["../../../src/Wallet/batchSigner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAyB,MAAM,WAAW,CAAA;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAA;AAc1B,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,KAAK,EAClB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAAO,GACjE,IAAI,CAmEN;AAYD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAClC,MAAM,CAmCR"}
|
@@ -1,124 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.combineBatchSigners = exports.signMultiBatch = void 0;
|
7
|
-
const utils_1 = require("@xrplf/isomorphic/utils");
|
8
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
9
|
-
const ripple_address_codec_1 = require("ripple-address-codec");
|
10
|
-
const ripple_binary_codec_1 = require("ripple-binary-codec");
|
11
|
-
const ripple_keypairs_1 = require("ripple-keypairs");
|
12
|
-
const errors_1 = require("../errors");
|
13
|
-
const models_1 = require("../models");
|
14
|
-
const batch_1 = require("../models/transactions/batch");
|
15
|
-
const hashes_1 = require("../utils/hashes");
|
16
|
-
function signMultiBatch(wallet, transaction, opts = {}) {
|
17
|
-
var _a;
|
18
|
-
const batchAccount = (_a = opts.batchAccount) !== null && _a !== void 0 ? _a : wallet.classicAddress;
|
19
|
-
let multisignAddress = false;
|
20
|
-
if (typeof opts.multisign === 'string') {
|
21
|
-
multisignAddress = opts.multisign;
|
22
|
-
}
|
23
|
-
else if (opts.multisign) {
|
24
|
-
multisignAddress = wallet.classicAddress;
|
25
|
-
}
|
26
|
-
if (transaction.TransactionType !== 'Batch') {
|
27
|
-
throw new errors_1.ValidationError('Must be a Batch transaction.');
|
28
|
-
}
|
29
|
-
const involvedAccounts = transaction.RawTransactions.map((raw) => raw.RawTransaction.Account);
|
30
|
-
if (!involvedAccounts.includes(batchAccount)) {
|
31
|
-
throw new errors_1.ValidationError('Must be signing for an address included in the Batch.');
|
32
|
-
}
|
33
|
-
(0, models_1.validate)(transaction);
|
34
|
-
const fieldsToSign = {
|
35
|
-
flags: transaction.Flags,
|
36
|
-
txIDs: transaction.RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)),
|
37
|
-
};
|
38
|
-
let batchSigner;
|
39
|
-
if (multisignAddress) {
|
40
|
-
batchSigner = {
|
41
|
-
BatchSigner: {
|
42
|
-
Account: batchAccount,
|
43
|
-
Signers: [
|
44
|
-
{
|
45
|
-
Signer: {
|
46
|
-
Account: multisignAddress,
|
47
|
-
SigningPubKey: wallet.publicKey,
|
48
|
-
TxnSignature: (0, ripple_keypairs_1.sign)((0, ripple_binary_codec_1.encodeForSigningBatch)(fieldsToSign), wallet.privateKey),
|
49
|
-
},
|
50
|
-
},
|
51
|
-
],
|
52
|
-
},
|
53
|
-
};
|
54
|
-
}
|
55
|
-
else {
|
56
|
-
batchSigner = {
|
57
|
-
BatchSigner: {
|
58
|
-
Account: batchAccount,
|
59
|
-
SigningPubKey: wallet.publicKey,
|
60
|
-
TxnSignature: (0, ripple_keypairs_1.sign)((0, ripple_binary_codec_1.encodeForSigningBatch)(fieldsToSign), wallet.privateKey),
|
61
|
-
},
|
62
|
-
};
|
63
|
-
}
|
64
|
-
transaction.BatchSigners = [batchSigner];
|
65
|
-
}
|
66
|
-
exports.signMultiBatch = signMultiBatch;
|
67
|
-
function combineBatchSigners(transactions) {
|
68
|
-
if (transactions.length === 0) {
|
69
|
-
throw new errors_1.ValidationError('There are 0 transactions to combine.');
|
70
|
-
}
|
71
|
-
const decodedTransactions = transactions.map((txOrBlob) => {
|
72
|
-
return getDecodedTransaction(txOrBlob);
|
73
|
-
});
|
74
|
-
decodedTransactions.forEach((tx) => {
|
75
|
-
if (tx.TransactionType !== 'Batch') {
|
76
|
-
throw new errors_1.ValidationError('TransactionType must be `Batch`.');
|
77
|
-
}
|
78
|
-
(0, batch_1.validateBatch)(tx);
|
79
|
-
if (tx.BatchSigners == null || tx.BatchSigners.length === 0) {
|
80
|
-
throw new errors_1.ValidationError('For combining Batch transaction signatures, all transactions must include a BatchSigners field containing an array of signatures.');
|
81
|
-
}
|
82
|
-
if (tx.TxnSignature != null || tx.Signers != null) {
|
83
|
-
throw new errors_1.ValidationError('Batch transaction must be unsigned.');
|
84
|
-
}
|
85
|
-
});
|
86
|
-
const batchTransactions = decodedTransactions;
|
87
|
-
validateBatchTransactionEquivalence(batchTransactions);
|
88
|
-
return (0, ripple_binary_codec_1.encode)(getTransactionWithAllBatchSigners(batchTransactions));
|
89
|
-
}
|
90
|
-
exports.combineBatchSigners = combineBatchSigners;
|
91
|
-
function validateBatchTransactionEquivalence(transactions) {
|
92
|
-
const exampleTransaction = JSON.stringify({
|
93
|
-
flags: transactions[0].Flags,
|
94
|
-
transactionIDs: transactions[0].RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)),
|
95
|
-
});
|
96
|
-
if (transactions.slice(1).some((tx) => JSON.stringify({
|
97
|
-
flags: tx.Flags,
|
98
|
-
transactionIDs: tx.RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)),
|
99
|
-
}) !== exampleTransaction)) {
|
100
|
-
throw new errors_1.ValidationError('Flags and transaction hashes are not the same for all provided transactions.');
|
101
|
-
}
|
102
|
-
}
|
103
|
-
function getTransactionWithAllBatchSigners(transactions) {
|
104
|
-
const sortedSigners = transactions
|
105
|
-
.flatMap((tx) => { var _a; return (_a = tx.BatchSigners) !== null && _a !== void 0 ? _a : []; })
|
106
|
-
.filter((signer) => signer.BatchSigner.Account !== transactions[0].Account)
|
107
|
-
.sort(compareBatchSigners);
|
108
|
-
return Object.assign(Object.assign({}, transactions[0]), { BatchSigners: sortedSigners });
|
109
|
-
}
|
110
|
-
function compareBatchSigners(left, right) {
|
111
|
-
return addressToBigNumber(left.BatchSigner.Account).comparedTo(addressToBigNumber(right.BatchSigner.Account));
|
112
|
-
}
|
113
|
-
const NUM_BITS_IN_HEX = 16;
|
114
|
-
function addressToBigNumber(address) {
|
115
|
-
const hex = (0, utils_1.bytesToHex)((0, ripple_address_codec_1.decodeAccountID)(address));
|
116
|
-
return new bignumber_js_1.default(hex, NUM_BITS_IN_HEX);
|
117
|
-
}
|
118
|
-
function getDecodedTransaction(txOrBlob) {
|
119
|
-
if (typeof txOrBlob === 'object') {
|
120
|
-
return (0, ripple_binary_codec_1.decode)((0, ripple_binary_codec_1.encode)(txOrBlob));
|
121
|
-
}
|
122
|
-
return (0, ripple_binary_codec_1.decode)(txOrBlob);
|
123
|
-
}
|
124
|
-
//# sourceMappingURL=batchSigner.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"batchSigner.js","sourceRoot":"","sources":["../../../src/Wallet/batchSigner.ts"],"names":[],"mappings":"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"}
|
@@ -1,39 +0,0 @@
|
|
1
|
-
import { Signer } from '../common';
|
2
|
-
import { BaseTransaction, GlobalFlagsInterface } from './common';
|
3
|
-
import type { SubmittableTransaction } from './transaction';
|
4
|
-
export declare enum BatchFlags {
|
5
|
-
tfAllOrNothing = 65536,
|
6
|
-
tfOnlyOne = 131072,
|
7
|
-
tfUntilFailure = 262144,
|
8
|
-
tfIndependent = 524288
|
9
|
-
}
|
10
|
-
export interface BatchFlagsInterface extends GlobalFlagsInterface {
|
11
|
-
tfAllOrNothing?: boolean;
|
12
|
-
tfOnlyOne?: boolean;
|
13
|
-
tfUntilFailure?: boolean;
|
14
|
-
tfIndependent?: boolean;
|
15
|
-
}
|
16
|
-
export type BatchInnerTransaction = SubmittableTransaction & {
|
17
|
-
Fee?: '0';
|
18
|
-
SigningPubKey?: '';
|
19
|
-
TxnSignature?: never;
|
20
|
-
Signers?: never;
|
21
|
-
LastLedgerSequence?: never;
|
22
|
-
};
|
23
|
-
export interface BatchSigner {
|
24
|
-
BatchSigner: {
|
25
|
-
Account: string;
|
26
|
-
SigningPubKey?: string;
|
27
|
-
TxnSignature?: string;
|
28
|
-
Signers?: Signer[];
|
29
|
-
};
|
30
|
-
}
|
31
|
-
export interface Batch extends BaseTransaction {
|
32
|
-
TransactionType: 'Batch';
|
33
|
-
BatchSigners?: BatchSigner[];
|
34
|
-
RawTransactions: Array<{
|
35
|
-
RawTransaction: BatchInnerTransaction;
|
36
|
-
}>;
|
37
|
-
}
|
38
|
-
export declare function validateBatch(tx: Record<string, unknown>): void;
|
39
|
-
//# sourceMappingURL=batch.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../../src/models/transactions/batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EACL,eAAe,EACf,oBAAoB,EAOrB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAO3D,oBAAY,UAAU;IACpB,cAAc,QAAa;IAC3B,SAAS,SAAa;IACtB,cAAc,SAAa;IAC3B,aAAa,SAAa;CAC3B;AAQD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,GAAG,CAAC,EAAE,GAAG,CAAA;IAET,aAAa,CAAC,EAAE,EAAE,CAAA;IAElB,YAAY,CAAC,EAAE,KAAK,CAAA;IAEpB,OAAO,CAAC,EAAE,KAAK,CAAA;IAEf,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAA;QAEf,aAAa,CAAC,EAAE,MAAM,CAAA;QAEtB,YAAY,CAAC,EAAE,MAAM,CAAA;QAErB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;CACF;AAKD,MAAM,WAAW,KAAM,SAAQ,eAAe;IAC5C,eAAe,EAAE,OAAO,CAAA;IAExB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAE5B,eAAe,EAAE,KAAK,CAAC;QACrB,cAAc,EAAE,qBAAqB,CAAA;KACtC,CAAC,CAAA;CACH;AASD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA8D/D"}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.validateBatch = exports.BatchFlags = void 0;
|
4
|
-
const errors_1 = require("../../errors");
|
5
|
-
const common_1 = require("./common");
|
6
|
-
var BatchFlags;
|
7
|
-
(function (BatchFlags) {
|
8
|
-
BatchFlags[BatchFlags["tfAllOrNothing"] = 65536] = "tfAllOrNothing";
|
9
|
-
BatchFlags[BatchFlags["tfOnlyOne"] = 131072] = "tfOnlyOne";
|
10
|
-
BatchFlags[BatchFlags["tfUntilFailure"] = 262144] = "tfUntilFailure";
|
11
|
-
BatchFlags[BatchFlags["tfIndependent"] = 524288] = "tfIndependent";
|
12
|
-
})(BatchFlags || (exports.BatchFlags = BatchFlags = {}));
|
13
|
-
function validateBatch(tx) {
|
14
|
-
(0, common_1.validateBaseTransaction)(tx);
|
15
|
-
(0, common_1.validateRequiredField)(tx, 'RawTransactions', common_1.isArray);
|
16
|
-
const rawTransactions = tx.RawTransactions;
|
17
|
-
rawTransactions.forEach((rawTxObj, index) => {
|
18
|
-
if (!(0, common_1.isObject)(rawTxObj)) {
|
19
|
-
throw new errors_1.ValidationError(`Batch: RawTransactions[${index}] is not object.`);
|
20
|
-
}
|
21
|
-
const rawTxRecord = rawTxObj;
|
22
|
-
(0, common_1.validateRequiredField)(rawTxRecord, 'RawTransaction', common_1.isObject, {
|
23
|
-
paramName: `RawTransactions[${index}].RawTransaction`,
|
24
|
-
txType: 'Batch',
|
25
|
-
});
|
26
|
-
const rawTx = rawTxRecord.RawTransaction;
|
27
|
-
if (rawTx.TransactionType === 'Batch') {
|
28
|
-
throw new errors_1.ValidationError(`Batch: RawTransactions[${index}] is a Batch transaction. Cannot nest Batch transactions.`);
|
29
|
-
}
|
30
|
-
});
|
31
|
-
(0, common_1.validateOptionalField)(tx, 'BatchSigners', common_1.isArray);
|
32
|
-
const batchSigners = tx.BatchSigners;
|
33
|
-
batchSigners === null || batchSigners === void 0 ? void 0 : batchSigners.forEach((signerObj, index) => {
|
34
|
-
if (!(0, common_1.isObject)(signerObj)) {
|
35
|
-
throw new errors_1.ValidationError(`Batch: BatchSigners[${index}] is not object.`);
|
36
|
-
}
|
37
|
-
const signerRecord = signerObj;
|
38
|
-
(0, common_1.validateRequiredField)(signerRecord, 'BatchSigner', common_1.isObject, {
|
39
|
-
paramName: `BatchSigners[${index}].BatchSigner`,
|
40
|
-
txType: 'Batch',
|
41
|
-
});
|
42
|
-
const signer = signerRecord.BatchSigner;
|
43
|
-
(0, common_1.validateRequiredField)(signer, 'Account', common_1.isString, {
|
44
|
-
paramName: `BatchSigners[${index}].Account`,
|
45
|
-
txType: 'Batch',
|
46
|
-
});
|
47
|
-
(0, common_1.validateOptionalField)(signer, 'SigningPubKey', common_1.isString, {
|
48
|
-
paramName: `BatchSigners[${index}].SigningPubKey`,
|
49
|
-
txType: 'Batch',
|
50
|
-
});
|
51
|
-
(0, common_1.validateOptionalField)(signer, 'TxnSignature', common_1.isString, {
|
52
|
-
paramName: `BatchSigners[${index}].TxnSignature`,
|
53
|
-
txType: 'Batch',
|
54
|
-
});
|
55
|
-
(0, common_1.validateOptionalField)(signer, 'Signers', common_1.isArray, {
|
56
|
-
paramName: `BatchSigners[${index}].Signers`,
|
57
|
-
txType: 'Batch',
|
58
|
-
});
|
59
|
-
});
|
60
|
-
}
|
61
|
-
exports.validateBatch = validateBatch;
|
62
|
-
//# sourceMappingURL=batch.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../src/models/transactions/batch.ts"],"names":[],"mappings":";;;AAAA,yCAA8C;AAG9C,qCASiB;AAQjB,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,mEAA2B,CAAA;IAC3B,0DAAsB,CAAA;IACtB,oEAA2B,CAAA;IAC3B,kEAA0B,CAAA;AAC5B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AA2DD,SAAgB,aAAa,CAAC,EAA2B;IACvD,IAAA,gCAAuB,EAAC,EAAE,CAAC,CAAA;IAE3B,IAAA,8BAAqB,EAAC,EAAE,EAAE,iBAAiB,EAAE,gBAAO,CAAC,CAAA;IAErD,MAAM,eAAe,GAAG,EAAE,CAAC,eAA4B,CAAA;IACvD,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,CAAC,IAAA,iBAAQ,EAAC,QAAQ,CAAC,EAAE;YACvB,MAAM,IAAI,wBAAe,CACvB,0BAA0B,KAAK,kBAAkB,CAClD,CAAA;SACF;QAED,MAAM,WAAW,GAAG,QAAmC,CAAA;QACvD,IAAA,8BAAqB,EAAC,WAAW,EAAE,gBAAgB,EAAE,iBAAQ,EAAE;YAC7D,SAAS,EAAE,mBAAmB,KAAK,kBAAkB;YACrD,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QAGF,MAAM,KAAK,GAAG,WAAW,CAAC,cAAyC,CAAA;QACnE,IAAI,KAAK,CAAC,eAAe,KAAK,OAAO,EAAE;YACrC,MAAM,IAAI,wBAAe,CACvB,0BAA0B,KAAK,2DAA2D,CAC3F,CAAA;SACF;IACH,CAAC,CAAC,CAAA;IAGF,IAAA,8BAAqB,EAAC,EAAE,EAAE,cAAc,EAAE,gBAAO,CAAC,CAAA;IAGlD,MAAM,YAAY,GAAG,EAAE,CAAC,YAAqC,CAAA;IAC7D,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,CAAC,IAAA,iBAAQ,EAAC,SAAS,CAAC,EAAE;YACxB,MAAM,IAAI,wBAAe,CAAC,uBAAuB,KAAK,kBAAkB,CAAC,CAAA;SAC1E;QAED,MAAM,YAAY,GAAG,SAAoC,CAAA;QACzD,IAAA,8BAAqB,EAAC,YAAY,EAAE,aAAa,EAAE,iBAAQ,EAAE;YAC3D,SAAS,EAAE,gBAAgB,KAAK,eAAe;YAC/C,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,WAAsC,CAAA;QAClE,IAAA,8BAAqB,EAAC,MAAM,EAAE,SAAS,EAAE,iBAAQ,EAAE;YACjD,SAAS,EAAE,gBAAgB,KAAK,WAAW;YAC3C,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QACF,IAAA,8BAAqB,EAAC,MAAM,EAAE,eAAe,EAAE,iBAAQ,EAAE;YACvD,SAAS,EAAE,gBAAgB,KAAK,iBAAiB;YACjD,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QACF,IAAA,8BAAqB,EAAC,MAAM,EAAE,cAAc,EAAE,iBAAQ,EAAE;YACtD,SAAS,EAAE,gBAAgB,KAAK,gBAAgB;YAChD,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QACF,IAAA,8BAAqB,EAAC,MAAM,EAAE,SAAS,EAAE,gBAAO,EAAE;YAChD,SAAS,EAAE,gBAAgB,KAAK,WAAW;YAC3C,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AA9DD,sCA8DC"}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { Batch } from '../models';
|
2
|
-
import { Wallet } from '.';
|
3
|
-
export declare function signMultiBatch(wallet: Wallet, transaction: Batch, opts?: {
|
4
|
-
batchAccount?: string;
|
5
|
-
multisign?: boolean | string;
|
6
|
-
}): void;
|
7
|
-
export declare function combineBatchSigners(transactions: Array<Batch | string>): string;
|
8
|
-
//# sourceMappingURL=batchSigner.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"batchSigner.d.ts","sourceRoot":"","sources":["../../../../src/Wallet/batchSigner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAyB,MAAM,WAAW,CAAA;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAA;AAc1B,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,KAAK,EAClB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAAO,GACjE,IAAI,CAmEN;AAYD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAClC,MAAM,CAmCR"}
|