xrpl 4.3.0-smartescrow.1 → 4.3.0-smartescrow.3
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.js +5269 -1599
- package/build/xrpl-latest.js.map +1 -1
- package/dist/npm/models/common/index.d.ts +4 -1
- package/dist/npm/models/common/index.d.ts.map +1 -1
- package/dist/npm/models/ledger/Delegate.d.ts +11 -0
- package/dist/npm/models/ledger/Delegate.d.ts.map +1 -0
- package/dist/npm/models/ledger/Delegate.js +3 -0
- package/dist/npm/models/ledger/Delegate.js.map +1 -0
- package/dist/npm/models/ledger/LedgerEntry.d.ts +3 -2
- package/dist/npm/models/ledger/LedgerEntry.d.ts.map +1 -1
- package/dist/npm/models/ledger/index.d.ts +2 -1
- package/dist/npm/models/ledger/index.d.ts.map +1 -1
- package/dist/npm/models/ledger/index.js.map +1 -1
- package/dist/npm/models/methods/ledgerEntry.d.ts +4 -0
- package/dist/npm/models/methods/ledgerEntry.d.ts.map +1 -1
- package/dist/npm/models/methods/serverInfo.d.ts +6 -0
- package/dist/npm/models/methods/serverInfo.d.ts.map +1 -1
- package/dist/npm/models/methods/serverState.d.ts +6 -0
- package/dist/npm/models/methods/serverState.d.ts.map +1 -1
- package/dist/npm/models/transactions/NFTokenMint.d.ts +5 -0
- package/dist/npm/models/transactions/NFTokenMint.d.ts.map +1 -1
- package/dist/npm/models/transactions/NFTokenMint.js +8 -0
- package/dist/npm/models/transactions/NFTokenMint.js.map +1 -1
- package/dist/npm/models/transactions/common.d.ts +1 -0
- package/dist/npm/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/models/transactions/common.js +5 -0
- package/dist/npm/models/transactions/common.js.map +1 -1
- package/dist/npm/models/transactions/delegateSet.d.ts +13 -0
- package/dist/npm/models/transactions/delegateSet.d.ts.map +1 -0
- package/dist/npm/models/transactions/delegateSet.js +53 -0
- package/dist/npm/models/transactions/delegateSet.js.map +1 -0
- package/dist/npm/models/transactions/escrowFinish.d.ts +1 -0
- package/dist/npm/models/transactions/escrowFinish.d.ts.map +1 -1
- package/dist/npm/models/transactions/escrowFinish.js.map +1 -1
- package/dist/npm/models/transactions/index.d.ts +1 -0
- 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/transaction.d.ts +2 -1
- package/dist/npm/models/transactions/transaction.d.ts.map +1 -1
- package/dist/npm/models/transactions/transaction.js +4 -0
- package/dist/npm/models/transactions/transaction.js.map +1 -1
- package/dist/npm/snippets/tsconfig.tsbuildinfo +1 -1
- package/dist/npm/src/models/common/index.d.ts +4 -1
- package/dist/npm/src/models/common/index.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/Delegate.d.ts +11 -0
- package/dist/npm/src/models/ledger/Delegate.d.ts.map +1 -0
- package/dist/npm/src/models/ledger/Delegate.js +3 -0
- package/dist/npm/src/models/ledger/Delegate.js.map +1 -0
- package/dist/npm/src/models/ledger/LedgerEntry.d.ts +3 -2
- package/dist/npm/src/models/ledger/LedgerEntry.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/index.d.ts +2 -1
- package/dist/npm/src/models/ledger/index.d.ts.map +1 -1
- package/dist/npm/src/models/ledger/index.js.map +1 -1
- package/dist/npm/src/models/methods/ledgerEntry.d.ts +4 -0
- package/dist/npm/src/models/methods/ledgerEntry.d.ts.map +1 -1
- package/dist/npm/src/models/methods/serverInfo.d.ts +6 -0
- package/dist/npm/src/models/methods/serverInfo.d.ts.map +1 -1
- package/dist/npm/src/models/methods/serverState.d.ts +6 -0
- package/dist/npm/src/models/methods/serverState.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/NFTokenMint.d.ts +5 -0
- package/dist/npm/src/models/transactions/NFTokenMint.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/NFTokenMint.js +8 -0
- package/dist/npm/src/models/transactions/NFTokenMint.js.map +1 -1
- package/dist/npm/src/models/transactions/common.d.ts +1 -0
- package/dist/npm/src/models/transactions/common.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/common.js +5 -0
- package/dist/npm/src/models/transactions/common.js.map +1 -1
- package/dist/npm/src/models/transactions/delegateSet.d.ts +13 -0
- package/dist/npm/src/models/transactions/delegateSet.d.ts.map +1 -0
- package/dist/npm/src/models/transactions/delegateSet.js +53 -0
- package/dist/npm/src/models/transactions/delegateSet.js.map +1 -0
- package/dist/npm/src/models/transactions/escrowFinish.d.ts +1 -0
- package/dist/npm/src/models/transactions/escrowFinish.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/escrowFinish.js.map +1 -1
- package/dist/npm/src/models/transactions/index.d.ts +1 -0
- 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/transaction.d.ts +2 -1
- package/dist/npm/src/models/transactions/transaction.d.ts.map +1 -1
- package/dist/npm/src/models/transactions/transaction.js +4 -0
- package/dist/npm/src/models/transactions/transaction.js.map +1 -1
- package/dist/npm/src/sugar/autofill.d.ts.map +1 -1
- package/dist/npm/src/sugar/autofill.js +33 -16
- package/dist/npm/src/sugar/autofill.js.map +1 -1
- package/dist/npm/sugar/autofill.d.ts.map +1 -1
- package/dist/npm/sugar/autofill.js +33 -16
- package/dist/npm/sugar/autofill.js.map +1 -1
- package/package.json +3 -3
- package/src/models/common/index.ts +5 -1
- package/src/models/ledger/Delegate.ts +39 -0
- package/src/models/ledger/LedgerEntry.ts +3 -0
- package/src/models/ledger/index.ts +2 -0
- package/src/models/methods/ledgerEntry.ts +5 -0
- package/src/models/methods/serverInfo.ts +9 -0
- package/src/models/methods/serverState.ts +10 -0
- package/src/models/transactions/NFTokenMint.ts +37 -0
- package/src/models/transactions/common.ts +14 -0
- package/src/models/transactions/delegateSet.ts +111 -0
- package/src/models/transactions/escrowFinish.ts +2 -0
- package/src/models/transactions/index.ts +1 -0
- package/src/models/transactions/transaction.ts +6 -0
- package/src/sugar/autofill.ts +51 -41
@@ -21,6 +21,7 @@ const getFeeXrp_1 = __importDefault(require("./getFeeXrp"));
|
|
21
21
|
const LEDGER_OFFSET = 20;
|
22
22
|
const RESTRICTED_NETWORKS = 1024;
|
23
23
|
const REQUIRED_NETWORKID_VERSION = '1.11.0';
|
24
|
+
const MICRO_DROPS_PER_DROP = 1000000;
|
24
25
|
function isNotLaterRippledVersion(source, target) {
|
25
26
|
if (source === target) {
|
26
27
|
return true;
|
@@ -127,7 +128,7 @@ function setNextValidSequenceNumber(client, tx) {
|
|
127
128
|
});
|
128
129
|
}
|
129
130
|
exports.setNextValidSequenceNumber = setNextValidSequenceNumber;
|
130
|
-
function
|
131
|
+
function fetchOwnerReserveFee(client) {
|
131
132
|
var _a;
|
132
133
|
return __awaiter(this, void 0, void 0, function* () {
|
133
134
|
const response = yield client.request({ command: 'server_state' });
|
@@ -138,37 +139,53 @@ function fetchAccountDeleteFee(client) {
|
|
138
139
|
return new bignumber_js_1.default(fee);
|
139
140
|
});
|
140
141
|
}
|
142
|
+
function fetchGasPrice(client) {
|
143
|
+
var _a;
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
145
|
+
const response = yield client.request({ command: 'server_state' });
|
146
|
+
const gasPrice = (_a = response.result.state.validated_ledger) === null || _a === void 0 ? void 0 : _a.gas_price;
|
147
|
+
if (gasPrice == null) {
|
148
|
+
return Promise.reject(new Error('Could not fetch Owner Reserve.'));
|
149
|
+
}
|
150
|
+
return new bignumber_js_1.default(gasPrice);
|
151
|
+
});
|
152
|
+
}
|
141
153
|
function calculateFeePerTransactionType(client, tx, signersCount = 0) {
|
142
154
|
return __awaiter(this, void 0, void 0, function* () {
|
143
155
|
const netFeeXRP = yield (0, getFeeXrp_1.default)(client);
|
144
|
-
const netFeeDrops = (0, utils_1.xrpToDrops)(netFeeXRP);
|
145
|
-
let baseFee =
|
146
|
-
if (tx.TransactionType === 'EscrowFinish'
|
147
|
-
|
148
|
-
|
149
|
-
|
156
|
+
const netFeeDrops = new bignumber_js_1.default((0, utils_1.xrpToDrops)(netFeeXRP));
|
157
|
+
let baseFee = netFeeDrops;
|
158
|
+
if (tx.TransactionType === 'EscrowFinish') {
|
159
|
+
if (tx.Fulfillment != null) {
|
160
|
+
const fulfillmentBytesSize = Math.ceil(tx.Fulfillment.length / 2);
|
161
|
+
baseFee = netFeeDrops.multipliedBy(33 + fulfillmentBytesSize / 16);
|
162
|
+
}
|
163
|
+
if (tx.ComputationAllowance != null) {
|
164
|
+
const gasPrice = yield fetchGasPrice(client);
|
165
|
+
const extraFee = gasPrice
|
166
|
+
.multipliedBy(tx.ComputationAllowance)
|
167
|
+
.dividedBy(MICRO_DROPS_PER_DROP);
|
168
|
+
baseFee = baseFee.plus(extraFee);
|
169
|
+
}
|
150
170
|
}
|
151
171
|
if (tx.TransactionType === 'EscrowCreate' && tx.FinishFunction != null) {
|
152
|
-
baseFee =
|
172
|
+
baseFee = baseFee.plus(1000);
|
153
173
|
}
|
154
|
-
|
155
|
-
|
156
|
-
baseFee = yield
|
174
|
+
const isSpecialTxCost = ['AccountDelete', 'AMMCreate'].includes(tx.TransactionType);
|
175
|
+
if (isSpecialTxCost) {
|
176
|
+
baseFee = yield fetchOwnerReserveFee(client);
|
157
177
|
}
|
158
178
|
if (signersCount > 0) {
|
159
|
-
baseFee = bignumber_js_1.default.sum(baseFee,
|
179
|
+
baseFee = bignumber_js_1.default.sum(baseFee, netFeeDrops.multipliedBy(1 + signersCount));
|
160
180
|
}
|
161
181
|
const maxFeeDrops = (0, utils_1.xrpToDrops)(client.maxFeeXRP);
|
162
|
-
const totalFee =
|
182
|
+
const totalFee = isSpecialTxCost
|
163
183
|
? baseFee
|
164
184
|
: bignumber_js_1.default.min(baseFee, maxFeeDrops);
|
165
185
|
tx.Fee = totalFee.dp(0, bignumber_js_1.default.ROUND_CEIL).toString(10);
|
166
186
|
});
|
167
187
|
}
|
168
188
|
exports.calculateFeePerTransactionType = calculateFeePerTransactionType;
|
169
|
-
function scaleValue(value, multiplier) {
|
170
|
-
return new bignumber_js_1.default(value).times(multiplier).toString();
|
171
|
-
}
|
172
189
|
function setLatestValidatedLedgerSequence(client, tx) {
|
173
190
|
return __awaiter(this, void 0, void 0, function* () {
|
174
191
|
const ledgerSequence = yield client.getLedgerIndex();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"autofill.js","sourceRoot":"","sources":["../../../../src/sugar/autofill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAoC;AACpC,+DAAgF;AAGhF,sCAAsD;AAGtD,oCAAqC;AAErC,4DAAmC;AAGnC,MAAM,aAAa,GAAG,EAAE,CAAA;AAKxB,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,MAAM,0BAA0B,GAAG,QAAQ,CAAA;
|
1
|
+
{"version":3,"file":"autofill.js","sourceRoot":"","sources":["../../../../src/sugar/autofill.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,IAAI,CAAA;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;
|
1
|
+
{"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,IAAI,CAAA;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAyFpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAaxD;AAYD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAcvD;AAqFD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,IAAI,CAAC,CASf;AAwCD,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,EACf,YAAY,SAAI,GACf,OAAO,CAAC,IAAI,CAAC,CAoDf;AASD,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,IAAI,CAAC,CAIf;AASD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
@@ -21,6 +21,7 @@ const getFeeXrp_1 = __importDefault(require("./getFeeXrp"));
|
|
21
21
|
const LEDGER_OFFSET = 20;
|
22
22
|
const RESTRICTED_NETWORKS = 1024;
|
23
23
|
const REQUIRED_NETWORKID_VERSION = '1.11.0';
|
24
|
+
const MICRO_DROPS_PER_DROP = 1000000;
|
24
25
|
function isNotLaterRippledVersion(source, target) {
|
25
26
|
if (source === target) {
|
26
27
|
return true;
|
@@ -127,7 +128,7 @@ function setNextValidSequenceNumber(client, tx) {
|
|
127
128
|
});
|
128
129
|
}
|
129
130
|
exports.setNextValidSequenceNumber = setNextValidSequenceNumber;
|
130
|
-
function
|
131
|
+
function fetchOwnerReserveFee(client) {
|
131
132
|
var _a;
|
132
133
|
return __awaiter(this, void 0, void 0, function* () {
|
133
134
|
const response = yield client.request({ command: 'server_state' });
|
@@ -138,37 +139,53 @@ function fetchAccountDeleteFee(client) {
|
|
138
139
|
return new bignumber_js_1.default(fee);
|
139
140
|
});
|
140
141
|
}
|
142
|
+
function fetchGasPrice(client) {
|
143
|
+
var _a;
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
145
|
+
const response = yield client.request({ command: 'server_state' });
|
146
|
+
const gasPrice = (_a = response.result.state.validated_ledger) === null || _a === void 0 ? void 0 : _a.gas_price;
|
147
|
+
if (gasPrice == null) {
|
148
|
+
return Promise.reject(new Error('Could not fetch Owner Reserve.'));
|
149
|
+
}
|
150
|
+
return new bignumber_js_1.default(gasPrice);
|
151
|
+
});
|
152
|
+
}
|
141
153
|
function calculateFeePerTransactionType(client, tx, signersCount = 0) {
|
142
154
|
return __awaiter(this, void 0, void 0, function* () {
|
143
155
|
const netFeeXRP = yield (0, getFeeXrp_1.default)(client);
|
144
|
-
const netFeeDrops = (0, utils_1.xrpToDrops)(netFeeXRP);
|
145
|
-
let baseFee =
|
146
|
-
if (tx.TransactionType === 'EscrowFinish'
|
147
|
-
|
148
|
-
|
149
|
-
|
156
|
+
const netFeeDrops = new bignumber_js_1.default((0, utils_1.xrpToDrops)(netFeeXRP));
|
157
|
+
let baseFee = netFeeDrops;
|
158
|
+
if (tx.TransactionType === 'EscrowFinish') {
|
159
|
+
if (tx.Fulfillment != null) {
|
160
|
+
const fulfillmentBytesSize = Math.ceil(tx.Fulfillment.length / 2);
|
161
|
+
baseFee = netFeeDrops.multipliedBy(33 + fulfillmentBytesSize / 16);
|
162
|
+
}
|
163
|
+
if (tx.ComputationAllowance != null) {
|
164
|
+
const gasPrice = yield fetchGasPrice(client);
|
165
|
+
const extraFee = gasPrice
|
166
|
+
.multipliedBy(tx.ComputationAllowance)
|
167
|
+
.dividedBy(MICRO_DROPS_PER_DROP);
|
168
|
+
baseFee = baseFee.plus(extraFee);
|
169
|
+
}
|
150
170
|
}
|
151
171
|
if (tx.TransactionType === 'EscrowCreate' && tx.FinishFunction != null) {
|
152
|
-
baseFee =
|
172
|
+
baseFee = baseFee.plus(1000);
|
153
173
|
}
|
154
|
-
|
155
|
-
|
156
|
-
baseFee = yield
|
174
|
+
const isSpecialTxCost = ['AccountDelete', 'AMMCreate'].includes(tx.TransactionType);
|
175
|
+
if (isSpecialTxCost) {
|
176
|
+
baseFee = yield fetchOwnerReserveFee(client);
|
157
177
|
}
|
158
178
|
if (signersCount > 0) {
|
159
|
-
baseFee = bignumber_js_1.default.sum(baseFee,
|
179
|
+
baseFee = bignumber_js_1.default.sum(baseFee, netFeeDrops.multipliedBy(1 + signersCount));
|
160
180
|
}
|
161
181
|
const maxFeeDrops = (0, utils_1.xrpToDrops)(client.maxFeeXRP);
|
162
|
-
const totalFee =
|
182
|
+
const totalFee = isSpecialTxCost
|
163
183
|
? baseFee
|
164
184
|
: bignumber_js_1.default.min(baseFee, maxFeeDrops);
|
165
185
|
tx.Fee = totalFee.dp(0, bignumber_js_1.default.ROUND_CEIL).toString(10);
|
166
186
|
});
|
167
187
|
}
|
168
188
|
exports.calculateFeePerTransactionType = calculateFeePerTransactionType;
|
169
|
-
function scaleValue(value, multiplier) {
|
170
|
-
return new bignumber_js_1.default(value).times(multiplier).toString();
|
171
|
-
}
|
172
189
|
function setLatestValidatedLedgerSequence(client, tx) {
|
173
190
|
return __awaiter(this, void 0, void 0, function* () {
|
174
191
|
const ledgerSequence = yield client.getLedgerIndex();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"autofill.js","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAoC;AACpC,+DAAgF;AAGhF,sCAAsD;AAGtD,oCAAqC;AAErC,4DAAmC;AAGnC,MAAM,aAAa,GAAG,EAAE,CAAA;AAKxB,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,MAAM,0BAA0B,GAAG,QAAQ,CAAA;
|
1
|
+
{"version":3,"file":"autofill.js","sourceRoot":"","sources":["../../../src/sugar/autofill.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "xrpl",
|
3
|
-
"version": "4.3.0-smartescrow.
|
3
|
+
"version": "4.3.0-smartescrow.3",
|
4
4
|
"license": "ISC",
|
5
5
|
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
|
6
6
|
"files": [
|
@@ -29,7 +29,7 @@
|
|
29
29
|
"bignumber.js": "^9.0.0",
|
30
30
|
"eventemitter3": "^5.0.1",
|
31
31
|
"ripple-address-codec": "^5.0.0",
|
32
|
-
"ripple-binary-codec": "^2.4.0-
|
32
|
+
"ripple-binary-codec": "^2.4.0-smartescrow.2",
|
33
33
|
"ripple-keypairs": "^2.0.0"
|
34
34
|
},
|
35
35
|
"devDependencies": {
|
@@ -85,5 +85,5 @@
|
|
85
85
|
"engines": {
|
86
86
|
"node": ">=18.0.0"
|
87
87
|
},
|
88
|
-
"gitHead": "
|
88
|
+
"gitHead": "d866d6641fffc460561f50e3fd79e744764919bc"
|
89
89
|
}
|
@@ -14,7 +14,11 @@ export interface IssuedCurrency {
|
|
14
14
|
issuer: string
|
15
15
|
}
|
16
16
|
|
17
|
-
export
|
17
|
+
export interface MPTCurrency {
|
18
|
+
mpt_issuance_id: string
|
19
|
+
}
|
20
|
+
|
21
|
+
export type Currency = IssuedCurrency | MPTCurrency | XRP
|
18
22
|
|
19
23
|
export interface IssuedCurrencyAmount extends IssuedCurrency {
|
20
24
|
value: string
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { Permission } from '../transactions'
|
2
|
+
|
3
|
+
import { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'
|
4
|
+
|
5
|
+
/**
|
6
|
+
* This object represents a set of permissions that an account has delegated to another account.
|
7
|
+
*
|
8
|
+
* @category Ledger Entries
|
9
|
+
*/
|
10
|
+
export default interface Delegate extends BaseLedgerEntry, HasPreviousTxnID {
|
11
|
+
LedgerEntryType: 'Delegate'
|
12
|
+
|
13
|
+
/**
|
14
|
+
* The account that wants to authorize another account.
|
15
|
+
*/
|
16
|
+
Account: string
|
17
|
+
|
18
|
+
/**
|
19
|
+
* The authorized account.
|
20
|
+
*/
|
21
|
+
Authorize: string
|
22
|
+
|
23
|
+
/**
|
24
|
+
* The transaction permissions that the account has access to.
|
25
|
+
*/
|
26
|
+
Permissions: Permission[]
|
27
|
+
|
28
|
+
/**
|
29
|
+
* A hint indicating which page of the sender's owner directory links to this object,
|
30
|
+
* in case the directory consists of multiple pages.
|
31
|
+
*/
|
32
|
+
OwnerNode: string
|
33
|
+
|
34
|
+
/**
|
35
|
+
* A bit-map of boolean flags. No flags are defined for the Delegate object
|
36
|
+
* type, so this value is always 0.
|
37
|
+
*/
|
38
|
+
Flags: 0
|
39
|
+
}
|
@@ -4,6 +4,7 @@ import AMM from './AMM'
|
|
4
4
|
import Bridge from './Bridge'
|
5
5
|
import Check from './Check'
|
6
6
|
import Credential from './Credential'
|
7
|
+
import Delegate from './Delegate'
|
7
8
|
import DepositPreauth from './DepositPreauth'
|
8
9
|
import DirectoryNode from './DirectoryNode'
|
9
10
|
import Escrow from './Escrow'
|
@@ -27,6 +28,7 @@ type LedgerEntry =
|
|
27
28
|
| Bridge
|
28
29
|
| Check
|
29
30
|
| Credential
|
31
|
+
| Delegate
|
30
32
|
| DepositPreauth
|
31
33
|
| DirectoryNode
|
32
34
|
| Escrow
|
@@ -50,6 +52,7 @@ type LedgerEntryFilter =
|
|
50
52
|
| 'bridge'
|
51
53
|
| 'check'
|
52
54
|
| 'credential'
|
55
|
+
| 'delegate'
|
53
56
|
| 'deposit_preauth'
|
54
57
|
| 'did'
|
55
58
|
| 'directory'
|
@@ -7,6 +7,7 @@ import AMM, { VoteSlot } from './AMM'
|
|
7
7
|
import Bridge from './Bridge'
|
8
8
|
import Check from './Check'
|
9
9
|
import Credential from './Credential'
|
10
|
+
import Delegate from './Delegate'
|
10
11
|
import DepositPreauth from './DepositPreauth'
|
11
12
|
import DID from './DID'
|
12
13
|
import DirectoryNode from './DirectoryNode'
|
@@ -43,6 +44,7 @@ export {
|
|
43
44
|
Bridge,
|
44
45
|
Check,
|
45
46
|
Credential,
|
47
|
+
Delegate,
|
46
48
|
DepositPreauth,
|
47
49
|
DirectoryNode,
|
48
50
|
DID,
|
@@ -85,6 +85,11 @@ export interface ServerInfoResponse extends BaseResponse {
|
|
85
85
|
hash: string
|
86
86
|
reserve_base_xrp: number
|
87
87
|
reserve_inc_xrp: number
|
88
|
+
|
89
|
+
extension_compute: number
|
90
|
+
extension_size: number
|
91
|
+
gas_price: number
|
92
|
+
|
88
93
|
seq: number
|
89
94
|
}
|
90
95
|
/**
|
@@ -252,6 +257,10 @@ export interface ServerInfoResponse extends BaseResponse {
|
|
252
257
|
* object an account owns in the ledger.
|
253
258
|
*/
|
254
259
|
reserve_inc_xrp: number
|
260
|
+
|
261
|
+
extension_compute: number
|
262
|
+
extension_size: number
|
263
|
+
gas_price: number
|
255
264
|
/** The ledger index of the latest validated ledger. */
|
256
265
|
seq: number
|
257
266
|
}
|
@@ -30,6 +30,11 @@ export interface ServerStateResponse extends BaseResponse {
|
|
30
30
|
hash: string
|
31
31
|
reserve_base: number
|
32
32
|
reserve_inc: number
|
33
|
+
|
34
|
+
extension_compute: number
|
35
|
+
extension_size: number
|
36
|
+
gas_price: number
|
37
|
+
|
33
38
|
seq: number
|
34
39
|
}
|
35
40
|
io_latency_ms: number
|
@@ -69,6 +74,11 @@ export interface ServerStateResponse extends BaseResponse {
|
|
69
74
|
hash: string
|
70
75
|
reserve_base: number
|
71
76
|
reserve_inc: number
|
77
|
+
|
78
|
+
extension_compute: number
|
79
|
+
extension_size: number
|
80
|
+
gas_price: number
|
81
|
+
|
72
82
|
seq: number
|
73
83
|
}
|
74
84
|
validation_quorum: number
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { ValidationError } from '../../errors'
|
2
|
+
import { Amount } from '../common'
|
2
3
|
import { isHex } from '../utils'
|
3
4
|
|
4
5
|
import {
|
@@ -6,6 +7,8 @@ import {
|
|
6
7
|
BaseTransaction,
|
7
8
|
GlobalFlags,
|
8
9
|
isAccount,
|
10
|
+
isAmount,
|
11
|
+
isNumber,
|
9
12
|
validateBaseTransaction,
|
10
13
|
validateOptionalField,
|
11
14
|
} from './common'
|
@@ -104,12 +107,34 @@ export interface NFTokenMint extends BaseTransaction {
|
|
104
107
|
* set to `undefined` value if you do not use it.
|
105
108
|
*/
|
106
109
|
URI?: string | null
|
110
|
+
/**
|
111
|
+
* Indicates the amount expected for the Token.
|
112
|
+
*
|
113
|
+
* The amount can be zero. This would indicate that the account is giving
|
114
|
+
* the token away free, either to anyone at all, or to the account identified
|
115
|
+
* by the Destination field.
|
116
|
+
*/
|
117
|
+
Amount?: Amount
|
118
|
+
/**
|
119
|
+
* Indicates the time after which the offer will no longer
|
120
|
+
* be valid. The value is the number of seconds since the
|
121
|
+
* Ripple Epoch.
|
122
|
+
*/
|
123
|
+
Expiration?: number
|
124
|
+
/**
|
125
|
+
* If present, indicates that this offer may only be
|
126
|
+
* accepted by the specified account. Attempts by other
|
127
|
+
* accounts to accept this offer MUST fail.
|
128
|
+
*/
|
129
|
+
Destination?: Account
|
107
130
|
Flags?: number | NFTokenMintFlagsInterface
|
108
131
|
}
|
109
132
|
|
110
133
|
export interface NFTokenMintMetadata extends TransactionMetadataBase {
|
111
134
|
// rippled 1.11.0 or later
|
112
135
|
nftoken_id?: string
|
136
|
+
// if Amount is present
|
137
|
+
offer_id?: string
|
113
138
|
}
|
114
139
|
|
115
140
|
/**
|
@@ -140,4 +165,16 @@ export function validateNFTokenMint(tx: Record<string, unknown>): void {
|
|
140
165
|
if (tx.NFTokenTaxon == null) {
|
141
166
|
throw new ValidationError('NFTokenMint: missing field NFTokenTaxon')
|
142
167
|
}
|
168
|
+
|
169
|
+
if (tx.Amount == null) {
|
170
|
+
if (tx.Expiration != null || tx.Destination != null) {
|
171
|
+
throw new ValidationError(
|
172
|
+
'NFTokenMint: Amount is required when Expiration or Destination is present',
|
173
|
+
)
|
174
|
+
}
|
175
|
+
}
|
176
|
+
|
177
|
+
validateOptionalField(tx, 'Amount', isAmount)
|
178
|
+
validateOptionalField(tx, 'Expiration', isNumber)
|
179
|
+
validateOptionalField(tx, 'Destination', isAccount)
|
143
180
|
}
|
@@ -337,6 +337,10 @@ export interface BaseTransaction {
|
|
337
337
|
* The network id of the transaction.
|
338
338
|
*/
|
339
339
|
NetworkID?: number
|
340
|
+
/**
|
341
|
+
* The delegate account that is sending the transaction.
|
342
|
+
*/
|
343
|
+
Delegate?: Account
|
340
344
|
}
|
341
345
|
|
342
346
|
/**
|
@@ -347,6 +351,7 @@ export interface BaseTransaction {
|
|
347
351
|
* @param common - An interface w/ common transaction fields.
|
348
352
|
* @throws When the common param is malformed.
|
349
353
|
*/
|
354
|
+
// eslint-disable-next-line max-statements -- lines required for validation
|
350
355
|
export function validateBaseTransaction(common: Record<string, unknown>): void {
|
351
356
|
if (common.TransactionType === undefined) {
|
352
357
|
throw new ValidationError('BaseTransaction: missing field TransactionType')
|
@@ -395,6 +400,15 @@ export function validateBaseTransaction(common: Record<string, unknown>): void {
|
|
395
400
|
validateOptionalField(common, 'TxnSignature', isString)
|
396
401
|
|
397
402
|
validateOptionalField(common, 'NetworkID', isNumber)
|
403
|
+
|
404
|
+
validateOptionalField(common, 'Delegate', isAccount)
|
405
|
+
|
406
|
+
const delegate = common.Delegate
|
407
|
+
if (delegate != null && delegate === common.Account) {
|
408
|
+
throw new ValidationError(
|
409
|
+
'BaseTransaction: Account and Delegate addresses cannot be the same',
|
410
|
+
)
|
411
|
+
}
|
398
412
|
}
|
399
413
|
|
400
414
|
/**
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import { ValidationError } from '../../errors'
|
2
|
+
|
3
|
+
import {
|
4
|
+
BaseTransaction,
|
5
|
+
validateBaseTransaction,
|
6
|
+
validateRequiredField,
|
7
|
+
isAccount,
|
8
|
+
Account,
|
9
|
+
} from './common'
|
10
|
+
|
11
|
+
const PERMISSIONS_MAX_LENGTH = 10
|
12
|
+
const NON_DELEGATABLE_TRANSACTIONS = new Set([
|
13
|
+
'AccountSet',
|
14
|
+
'SetRegularKey',
|
15
|
+
'SignerListSet',
|
16
|
+
'DelegateSet',
|
17
|
+
'AccountDelete',
|
18
|
+
// Pseudo transactions below:
|
19
|
+
'EnableAmendment',
|
20
|
+
'SetFee',
|
21
|
+
'UNLModify',
|
22
|
+
])
|
23
|
+
|
24
|
+
export interface Permission {
|
25
|
+
Permission: {
|
26
|
+
PermissionValue: string
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* DelegateSet allows an account to delegate a set of permissions to another account.
|
32
|
+
*
|
33
|
+
* @category Transaction Models
|
34
|
+
*/
|
35
|
+
export interface DelegateSet extends BaseTransaction {
|
36
|
+
TransactionType: 'DelegateSet'
|
37
|
+
|
38
|
+
/**
|
39
|
+
* The authorized account.
|
40
|
+
*/
|
41
|
+
Authorize: Account
|
42
|
+
|
43
|
+
/**
|
44
|
+
* The transaction permissions (represented by integers) that the account has been granted.
|
45
|
+
*/
|
46
|
+
Permissions: Permission[]
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Verify the form and type of an DelegateSet at runtime.
|
51
|
+
*
|
52
|
+
* @param tx - An DelegateSet Transaction.
|
53
|
+
* @throws When the DelegateSet is malformed.
|
54
|
+
*/
|
55
|
+
// eslint-disable-next-line max-lines-per-function -- necessary for validation
|
56
|
+
export function validateDelegateSet(tx: Record<string, unknown>): void {
|
57
|
+
validateBaseTransaction(tx)
|
58
|
+
|
59
|
+
validateRequiredField(tx, 'Authorize', isAccount)
|
60
|
+
|
61
|
+
if (tx.Authorize === tx.Account) {
|
62
|
+
throw new ValidationError(
|
63
|
+
'DelegateSet: Authorize and Account must be different.',
|
64
|
+
)
|
65
|
+
}
|
66
|
+
|
67
|
+
validateRequiredField(tx, 'Permissions', Array.isArray)
|
68
|
+
|
69
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- required for validation
|
70
|
+
const permissions = tx.Permissions as DelegateSet['Permissions']
|
71
|
+
if (permissions.length > PERMISSIONS_MAX_LENGTH) {
|
72
|
+
throw new ValidationError(
|
73
|
+
`DelegateSet: Permissions array length cannot be greater than ${PERMISSIONS_MAX_LENGTH}.`,
|
74
|
+
)
|
75
|
+
}
|
76
|
+
|
77
|
+
const permissionValueSet = new Set()
|
78
|
+
permissions.forEach((permission: Permission) => {
|
79
|
+
if (
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation
|
81
|
+
permission == null ||
|
82
|
+
Object.keys(permission).length !== 1 ||
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation
|
84
|
+
permission.Permission == null ||
|
85
|
+
Object.keys(permission.Permission).length !== 1
|
86
|
+
) {
|
87
|
+
throw new ValidationError(
|
88
|
+
'DelegateSet: Permissions array element is malformed',
|
89
|
+
)
|
90
|
+
}
|
91
|
+
const permissionValue = permission.Permission.PermissionValue
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation
|
93
|
+
if (permissionValue == null) {
|
94
|
+
throw new ValidationError('DelegateSet: PermissionValue must be defined')
|
95
|
+
}
|
96
|
+
if (typeof permissionValue !== 'string') {
|
97
|
+
throw new ValidationError('DelegateSet: PermissionValue must be a string')
|
98
|
+
}
|
99
|
+
if (NON_DELEGATABLE_TRANSACTIONS.has(permissionValue)) {
|
100
|
+
throw new ValidationError(
|
101
|
+
`DelegateSet: PermissionValue contains a non-delegatable transaction ${permissionValue}`,
|
102
|
+
)
|
103
|
+
}
|
104
|
+
permissionValueSet.add(permissionValue)
|
105
|
+
})
|
106
|
+
if (permissions.length !== permissionValueSet.size) {
|
107
|
+
throw new ValidationError(
|
108
|
+
'DelegateSet: Permissions array cannot contain duplicate values',
|
109
|
+
)
|
110
|
+
}
|
111
|
+
}
|