@fuel-ts/account 0.100.3 → 0.100.5
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/dist/account.d.ts +71 -3
- package/dist/account.d.ts.map +1 -1
- package/dist/connectors/fuel-connector.d.ts +3 -3
- package/dist/connectors/fuel-connector.d.ts.map +1 -1
- package/dist/index.global.js +1506 -221
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +2222 -1027
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2021 -828
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +9 -4
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +1187 -76
- package/dist/providers/__generated__/operations.d.ts.map +1 -1
- package/dist/providers/assemble-tx-helpers.d.ts +39 -0
- package/dist/providers/assemble-tx-helpers.d.ts.map +1 -0
- package/dist/providers/fuel-graphql-subscriber.d.ts +28 -0
- package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +85 -6
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/resource.d.ts +4 -1
- package/dist/providers/resource.d.ts.map +1 -1
- package/dist/providers/transaction-request/helpers.d.ts +3 -3
- package/dist/providers/transaction-request/helpers.d.ts.map +1 -1
- package/dist/providers/transaction-request/input.d.ts +2 -0
- package/dist/providers/transaction-request/input.d.ts.map +1 -1
- package/dist/providers/transaction-request/output.d.ts +6 -0
- package/dist/providers/transaction-request/output.d.ts.map +1 -1
- package/dist/providers/transaction-request/script-transaction-request.d.ts +11 -0
- package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/transaction-request.d.ts +3 -3
- package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-response/getAllDecodedLogs.d.ts.map +1 -1
- package/dist/providers/transaction-response/transaction-response.d.ts +54 -15
- package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +12 -1
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/status.d.ts +16 -2
- package/dist/providers/transaction-summary/status.d.ts.map +1 -1
- package/dist/providers/transaction-summary/types.d.ts +85 -4
- package/dist/providers/transaction-summary/types.d.ts.map +1 -1
- package/dist/providers/utils/handle-gql-error-message.d.ts.map +1 -1
- package/dist/providers/utils/index.d.ts +1 -0
- package/dist/providers/utils/index.d.ts.map +1 -1
- package/dist/providers/utils/parse-graphql-response.d.ts +12 -0
- package/dist/providers/utils/parse-graphql-response.d.ts.map +1 -0
- package/dist/providers/utils/serialization.d.ts +9 -0
- package/dist/providers/utils/serialization.d.ts.map +1 -1
- package/dist/providers/utils/transaction-response-serialization.d.ts +8 -0
- package/dist/providers/utils/transaction-response-serialization.d.ts.map +1 -0
- package/dist/test-utils/launchNode.d.ts.map +1 -1
- package/dist/test-utils/setup-test-provider-and-wallets.d.ts.map +1 -1
- package/dist/test-utils.global.js +1500 -205
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +2091 -901
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +1938 -742
- package/dist/test-utils.mjs.map +1 -1
- package/dist/utils/deployScriptOrPredicate.d.ts.map +1 -1
- package/dist/utils/split-coins-into-batches.d.ts +3 -0
- package/dist/utils/split-coins-into-batches.d.ts.map +1 -0
- package/package.json +15 -15
- package/dist/providers/utils/helpers.d.ts +0 -14
- package/dist/providers/utils/helpers.d.ts.map +0 -1
package/dist/index.global.js
CHANGED
@@ -7970,9 +7970,9 @@
|
|
7970
7970
|
}
|
7971
7971
|
});
|
7972
7972
|
|
7973
|
-
// ../../node_modules/.pnpm/@fuels+vm-asm@0.
|
7973
|
+
// ../../node_modules/.pnpm/@fuels+vm-asm@0.60.2/node_modules/@fuels/vm-asm/dist/node/index.cjs
|
7974
7974
|
var require_node = __commonJS({
|
7975
|
-
"../../node_modules/.pnpm/@fuels+vm-asm@0.
|
7975
|
+
"../../node_modules/.pnpm/@fuels+vm-asm@0.60.2/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
|
7976
7976
|
"use strict";
|
7977
7977
|
var wasm$1;
|
7978
7978
|
var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: /* @__PURE__ */ __name(() => {
|
@@ -8711,7 +8711,12 @@
|
|
8711
8711
|
* r" Get memory address of base asset ID
|
8712
8712
|
*/
|
8713
8713
|
BaseAssetId: 6,
|
8714
|
-
"6": "BaseAssetId"
|
8714
|
+
"6": "BaseAssetId",
|
8715
|
+
/**
|
8716
|
+
* r" Get gas price for block
|
8717
|
+
*/
|
8718
|
+
GetGasPrice: 7,
|
8719
|
+
"7": "GetGasPrice"
|
8715
8720
|
});
|
8716
8721
|
var GTFArgs2 = Object.freeze({
|
8717
8722
|
/**
|
@@ -9043,7 +9048,82 @@
|
|
9043
9048
|
* r" Set `$rA` to `tx.policies[count_ones(0b11111 & tx.policyTypes) - 1].expiration`
|
9044
9049
|
*/
|
9045
9050
|
PolicyExpiration: 1285,
|
9046
|
-
"1285": "PolicyExpiration"
|
9051
|
+
"1285": "PolicyExpiration",
|
9052
|
+
/**
|
9053
|
+
* r" Set `$rA` to `Memory address of tx.root`
|
9054
|
+
*/
|
9055
|
+
UploadRoot: 1536,
|
9056
|
+
"1536": "UploadRoot",
|
9057
|
+
/**
|
9058
|
+
* r" Set `$rA` to `tx.witnessIndex`
|
9059
|
+
*/
|
9060
|
+
UploadWitnessIndex: 1537,
|
9061
|
+
"1537": "UploadWitnessIndex",
|
9062
|
+
/**
|
9063
|
+
* r" Set `$rA` to `tx.subsectionIndex`
|
9064
|
+
*/
|
9065
|
+
UploadSubsectionIndex: 1538,
|
9066
|
+
"1538": "UploadSubsectionIndex",
|
9067
|
+
/**
|
9068
|
+
* r" Set `$rA` to `tx.subsectionsNumber`
|
9069
|
+
*/
|
9070
|
+
UploadSubsectionsCount: 1539,
|
9071
|
+
"1539": "UploadSubsectionsCount",
|
9072
|
+
/**
|
9073
|
+
* r" Set `$rA` to `tx.proofSetCount`
|
9074
|
+
*/
|
9075
|
+
UploadProofSetCount: 1540,
|
9076
|
+
"1540": "UploadProofSetCount",
|
9077
|
+
/**
|
9078
|
+
* r" Set `$rA` to `Memory address of tx.proofSet[$rB]`
|
9079
|
+
*/
|
9080
|
+
UploadProofSetAtIndex: 1541,
|
9081
|
+
"1541": "UploadProofSetAtIndex",
|
9082
|
+
/**
|
9083
|
+
* r" Set `$rA` to `Memory address of tx.id`
|
9084
|
+
*/
|
9085
|
+
BlobId: 1792,
|
9086
|
+
"1792": "BlobId",
|
9087
|
+
/**
|
9088
|
+
* r" Set `$rA` to `tx.witnessIndex`
|
9089
|
+
*/
|
9090
|
+
BlobWitnessIndex: 1793,
|
9091
|
+
"1793": "BlobWitnessIndex",
|
9092
|
+
/**
|
9093
|
+
* r" Set `$rA` to `Memory address of tx.purpose`
|
9094
|
+
*/
|
9095
|
+
UpgradePurpose: 2048,
|
9096
|
+
"2048": "UpgradePurpose",
|
9097
|
+
/**
|
9098
|
+
* r" Set `$rA` to `tx.inputsCount`
|
9099
|
+
*/
|
9100
|
+
TxInputsCount: 2304,
|
9101
|
+
"2304": "TxInputsCount",
|
9102
|
+
/**
|
9103
|
+
* r" Set `$rA` to `tx.outputsCount`
|
9104
|
+
*/
|
9105
|
+
TxOutputsCount: 2305,
|
9106
|
+
"2305": "TxOutputsCount",
|
9107
|
+
/**
|
9108
|
+
* r" Set `$rA` to `tx.witnessesCount`
|
9109
|
+
*/
|
9110
|
+
TxWitnessesCount: 2306,
|
9111
|
+
"2306": "TxWitnessesCount",
|
9112
|
+
/**
|
9113
|
+
* r" Set `$rA` to `Memory address of tx.inputs[$rB]`
|
9114
|
+
*/
|
9115
|
+
TxInputAtIndex: 2307,
|
9116
|
+
"2307": "TxInputAtIndex",
|
9117
|
+
/**
|
9118
|
+
* r" Set `$rA` to `Memory address of t.outputs[$rB]`
|
9119
|
+
*/
|
9120
|
+
TxOutputAtIndex: 2308,
|
9121
|
+
"2308": "TxOutputAtIndex",
|
9122
|
+
/**
|
9123
|
+
* r" Set `$rA` to `Memory address of tx.witnesses[$rB]`
|
9124
|
+
*/
|
9125
|
+
TxWitnessAtIndex: 2309,
|
9126
|
+
"2309": "TxWitnessAtIndex"
|
9047
9127
|
});
|
9048
9128
|
var MathOp = Object.freeze({
|
9049
9129
|
/**
|
@@ -9399,7 +9479,27 @@
|
|
9399
9479
|
* r" Given input contract does not exist.
|
9400
9480
|
*/
|
9401
9481
|
InputContractDoesNotExist: 60,
|
9402
|
-
"60": "InputContractDoesNotExist"
|
9482
|
+
"60": "InputContractDoesNotExist",
|
9483
|
+
/**
|
9484
|
+
* r" Storage slot in Create not found
|
9485
|
+
*/
|
9486
|
+
StorageSlotsNotFound: 61,
|
9487
|
+
"61": "StorageSlotsNotFound",
|
9488
|
+
/**
|
9489
|
+
* r" Proof in Upload not found
|
9490
|
+
*/
|
9491
|
+
ProofInUploadNotFound: 62,
|
9492
|
+
"62": "ProofInUploadNotFound",
|
9493
|
+
/**
|
9494
|
+
* r" Invalid purpose type in Upgrade
|
9495
|
+
*/
|
9496
|
+
InvalidUpgradePurposeType: 63,
|
9497
|
+
"63": "InvalidUpgradePurposeType",
|
9498
|
+
/**
|
9499
|
+
* r" Cannot get gas price in predicate
|
9500
|
+
*/
|
9501
|
+
CanNotGetGasPriceInPredicate: 64,
|
9502
|
+
"64": "CanNotGetGasPriceInPredicate"
|
9403
9503
|
});
|
9404
9504
|
var ADDFinalization = typeof FinalizationRegistry === "undefined" ? { register: /* @__PURE__ */ __name(() => {
|
9405
9505
|
}, "register"), unregister: /* @__PURE__ */ __name(() => {
|
@@ -16917,11 +17017,11 @@
|
|
16917
17017
|
}
|
16918
17018
|
__name(_loadWasmModule, "_loadWasmModule");
|
16919
17019
|
function wasm(imports) {
|
16920
|
-
return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwOBAv8BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBBQEBAQEEAAQBBgICAwMAAgAHAQgEAQQBCQMBAQcBBQUFBQUFBQUFBQUFBQUFBQUFBQMGBgICBAIGBgAACAAEBQMBABEGCQF/AUGAgMAACwe9Td0FBm1lbW9yeQIAFl9fd2JnX2NvbXBhcmVhcmdzX2ZyZWUAEBpfX3diZ19nZXRfY29tcGFyZWFyZ3NfbW9kZQBIGl9fd2JnX3NldF9jb21wYXJlYXJnc19tb2RlADgiX193YmdfZ2V0X2NvbXBhcmVhcmdzX2luZGlyZWN0X3JocwBJIl9fd2JnX3NldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASxJjb21wYXJlYXJnc190b19pbW0AWBRjb21wYXJlYXJnc19mcm9tX2ltbQAfFV9fd2JnX2dldF9tYXRoYXJnc19vcABIFV9fd2JnX3NldF9tYXRoYXJnc19vcAA5El9fd2JnX211bGFyZ3NfZnJlZQARHl9fd2JnX2dldF9tdWxhcmdzX2luZGlyZWN0X3JocwBIHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X3JocwBMEl9fd2JnX2RpdmFyZ3NfZnJlZQAjHl9fd2JnX2dldF9kaXZhcmdzX2luZGlyZWN0X3JocwC7AR5fX3diZ19zZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAYxtfX3diZ19wYW5pY2luc3RydWN0aW9uX2ZyZWUAFyFwYW5pY2luc3RydWN0aW9uX2Vycm9yX3R5cGVzY3JpcHQATRdwYW5pY2luc3RydWN0aW9uX3JlYXNvbgBbHHBhbmljaW5zdHJ1Y3Rpb25faW5zdHJ1Y3Rpb24AXAxnbV9mcm9tX2FyZ3MA1wENZ3RmX2Zyb21fYXJncwDPAQdnbV9hcmdzAIoBCGd0Zl9hcmdzAGkOd2RjbV9mcm9tX2FyZ3MAOw53ZG9wX2Zyb21fYXJncwA7DndkbWxfZnJvbV9hcmdzADwOd2Rkdl9mcm9tX2FyZ3MAywEJd2RjbV9hcmdzACQJd3FjbV9hcmdzACUJd2RvcF9hcmdzACYJd3FvcF9hcmdzACcJd2RtbF9hcmdzACgJd3FtbF9hcmdzACkJd2Rkdl9hcmdzAGQJd3Fkdl9hcmdzAGUQX193YmdfaW1tMDZfZnJlZQAqEF9fd2JnX2ltbTEyX2ZyZWUAKxBfX3diZ19pbW0xOF9mcmVlACwOX193YmdfYWRkX2ZyZWUAGA9fX3diZ19ub29wX2ZyZWUABxJhZGRfbmV3X3R5cGVzY3JpcHQAWQZhZGRfcmEANQZhZGRfcmIAEgZhZGRfcmMAGgNhZGQAxwEDYW5kAIwBA2RpdgCNAQJlcQCOAQNleHAAjwECZ3QAkAECbHQAkQEEbWxvZwCSAQRtcm9vAJMBBG1vZF8AlAEFbW92ZV8APQNtdWwAlQEDbm90AD4Cb3IAlgEDc2xsAJcBA3NybACYAQNzdWIAmQEDeG9yAJoBBG1sZHYAagNyZXQAvAEEcmV0ZAA/E2Fsb2NfbmV3X3R5cGVzY3JpcHQAYAdhbG9jX3JhACIEYWxvYwC9AQNtY2wAQANtY3AAmwEDbWVxAGsTYmhzaF9uZXdfdHlwZXNjcmlwdAAgBGJoc2gALQRiaGVpAL4BBGJ1cm4AQQRjYWxsAGwDY2NwAG0EY3JvbwBCBGNzaXoAQwJjYgC/AQNsZGMAbgNsb2cAbwRsb2dkAHAEbWludABEBHJ2cnQAwAEEc2N3cQCcAQNzcncAnQEEc3J3cQBxA3N3dwCeAQRzd3dxAHICdHIAnwEDdHJvAHMEZWNrMQCgAQRlY3IxAKEBBGVkMTkAdARrMjU2AKIBBHMyNTYAowEEdGltZQBFE25vb3BfbmV3X3R5cGVzY3JpcHQAwQEEbm9vcADfAQRmbGFnAMIBA2JhbACkAQNqbXAAwwEDam5lAKUBA3NtbwB1E2FkZGlfbmV3X3R5cGVzY3JpcHQAWgphZGRpX2ltbTEyAAkEYWRkaQCmAQRhbmRpAKcBBGRpdmkAqAEEZXhwaQCpAQRtb2RpAKoBBG11bGkAqwEDb3JpAKwBBHNsbGkArQEEc3JsaQCuAQRzdWJpAK8BBHhvcmkAsAEEam5laQCxAQJsYgCyAQJsdwCzAQJzYgC0AQJzdwC1AQRtY3BpALYBEmd0Zl9uZXdfdHlwZXNjcmlwdADRAQNndGYAtwEEbWNsaQAuEWdtX25ld190eXBlc2NyaXB0AEYIZ21faW1tMTgADQJnbQAvBG1vdmkAMARqbnppADEEam1wZgAyE2ptcGJfbmV3X3R5cGVzY3JpcHQAFQRqbXBiADMEam56ZgC4AQRqbnpiALkBBGpuZWYAdgpqbmViX2ltbTA2ADYEam5lYgB3AmppAE4TY2ZlaV9uZXdfdHlwZXNjcmlwdAA3CmNmZWlfaW1tMjQACgRjZmVpAE8EY2ZzaQBQA2NmZQDEAQNjZnMAxQEEcHNobABRBHBzaGgAUgRwb3BsAFMEcG9waABUE3dkY21fbmV3X3R5cGVzY3JpcHQAzAEEd2RjbQB4BHdxY20AeQR3ZG9wAHoEd3FvcAB7BHdkbWwAfAR3cW1sAH0Ed2RkdgB+BHdxZHYAfwR3ZG1kAIABBHdxbWQAgQEEd2RhbQCCAQR3cWFtAIMBBHdkbW0AhAEEd3FtbQCFAQRlY2FsAIYBBGJzaXoANBNibGRkX25ld190eXBlc2NyaXB0AFUHYmxkZF9yZAA2BGJsZGQAhwEEZWNvcACIAQRlcGFyAIkBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA8QERcmVnaWRfbmV3X2NoZWNrZWQAugEJcmVnaWRfYmFsAOABCnJlZ2lkX2NnYXMA4QEJcmVnaWRfZXJyAOIBCnJlZ2lkX2ZsYWcA4wEIcmVnaWRfZnAA5AEKcmVnaWRfZ2dhcwDlAQhyZWdpZF9ocADmAQhyZWdpZF9pcwDnAQhyZWdpZF9vZgDoAQlyZWdpZF9vbmUA6QEIcmVnaWRfcGMA6gEJcmVnaWRfcmV0AOsBCnJlZ2lkX3JldGwA7AEIcmVnaWRfc3AA7QEJcmVnaWRfc3BwAO4BDnJlZ2lkX3dyaXRhYmxlAO8BCnJlZ2lkX3plcm8A8AEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2wELcmVnaWRfdG9fdTgA3AESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNlY29wX25ld190eXBlc2NyaXB0AFUTZXBhcl9uZXdfdHlwZXNjcmlwdABVE19fd2JnX21hdGhhcmdzX2ZyZWUAEB9fX3diZ19zZXRfbWF0aGFyZ3NfaW5kaXJlY3RfcmhzAEseX193Ymdfc2V0X211bGFyZ3NfaW5kaXJlY3RfbGhzAEsfX193YmdfZ2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBJHl9fd2JnX2dldF9tdWxhcmdzX2luZGlyZWN0X2xocwBJEnJldF9uZXdfdHlwZXNjcmlwdABgE2JoZWlfbmV3X3R5cGVzY3JpcHQAYBFjYl9uZXdfdHlwZXNjcmlwdABgE3J2cnRfbmV3X3R5cGVzY3JpcHQAYBNmbGFnX25ld190eXBlc2NyaXB0AGASam1wX25ld190eXBlc2NyaXB0AGASY2ZlX25ld190eXBlc2NyaXB0AGASY2ZzX25ld190eXBlc2NyaXB0AGAPX193Ymdfam1wZl9mcmVlABgPX193Ymdfc3ViaV9mcmVlABgNX193YmdfamlfZnJlZQAYD19fd2JnX2VjYWxfZnJlZQAYD19fd2JnX3BvcGxfZnJlZQAYDl9fd2JnX2xkY19mcmVlABgPX193Ymdfd2RtbF9mcmVlABgNX193YmdfbHdfZnJlZQAYD19fd2JnX3dxbWxfZnJlZQAYD19fd2JnX2V4cGlfZnJlZQAYD19fd2JnX2puZWZfZnJlZQAYDl9fd2JnX3Nyd19mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbWNwX2ZyZWUAGA9fX3diZ193ZG9wX2ZyZWUAGA9fX3diZ190aW1lX2ZyZWUAGA9fX3diZ19zcndxX2ZyZWUAGA5fX3diZ19jZmVfZnJlZQAYDV9fd2JnX2x0X2ZyZWUAGA9fX3diZ19ydnJ0X2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA9fX3diZ19tbGR2X2ZyZWUAGA1fX3diZ19sYl9mcmVlABgNX193YmdfY2JfZnJlZQAYDl9fd2JnX2xvZ19mcmVlABgOX193YmdfbWNsX2ZyZWUAGA9fX3diZ193cW1tX2ZyZWUAGA9fX3diZ19zd3dxX2ZyZWUAGA9fX3diZ19idXJuX2ZyZWUAGA5fX3diZ194b3JfZnJlZQAYDl9fd2JnX2V4cF9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgPX193YmdfczI1Nl9mcmVlABgPX193Ymdfd2RhbV9mcmVlABgPX193Ymdfam5lYl9mcmVlABgPX193YmdfbW92aV9mcmVlABgOX193Ymdfam1wX2ZyZWUAGA5fX3diZ19zbW9fZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYD19fd2JnX211bGlfZnJlZQAYD19fd2JnX21vZGlfZnJlZQAYDl9fd2JnX3Ryb19mcmVlABgPX193Ymdfc2N3cV9mcmVlABgPX193Ymdfd3FjbV9mcmVlABgPX193Ymdfd3FtZF9mcmVlABgPX193YmdfZWNyMV9mcmVlABgNX193Ymdfc3dfZnJlZQAYD19fd2JnX2xvZ2RfZnJlZQAYD19fd2JnX21pbnRfZnJlZQAYD19fd2JnX3dkbWRfZnJlZQAYD19fd2JnX3hvcmlfZnJlZQAYD19fd2JnX2FuZGlfZnJlZQAYD19fd2JnX3NybGlfZnJlZQAYD19fd2JnX2NhbGxfZnJlZQAYD19fd2JnX21vdmVfZnJlZQAYDV9fd2JnX2VxX2ZyZWUAGA9fX3diZ19qbmVpX2ZyZWUAGA9fX3diZ19lZDE5X2ZyZWUAGA9fX3diZ19wc2hoX2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYD19fd2JnX2FkZGlfZnJlZQAYD19fd2JnX2puemJfZnJlZQAYDl9fd2JnX3N3d19mcmVlABgOX193YmdfY2NwX2ZyZWUAGA9fX3diZ19qbXBiX2ZyZWUAGA9fX3diZ19tbG9nX2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA1fX3diZ19ndF9mcmVlABgPX193YmdfYnNpel9mcmVlABgPX193Ymdfam56aV9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA5fX3diZ19kaXZfZnJlZQAYDl9fd2JnX2puZV9mcmVlABgOX193YmdfcmV0X2ZyZWUAGA9fX3diZ19lY29wX2ZyZWUAGA9fX3diZ19yZXRkX2ZyZWUAGA1fX3diZ19vcl9mcmVlABgPX193YmdfY2ZzaV9mcmVlABgPX193YmdfcG9waF9mcmVlABgOX193YmdfYmFsX2ZyZWUAGA9fX3diZ193ZGR2X2ZyZWUAGA9fX3diZ19tcm9vX2ZyZWUAGA9fX3diZ19rMjU2X2ZyZWUAGA1fX3diZ190cl9mcmVlABgOX193YmdfY2ZzX2ZyZWUAGA9fX3diZ193cWFtX2ZyZWUAGA1fX3diZ19zYl9mcmVlABgOX193YmdfZ3RmX2ZyZWUAGA9fX3diZ19qbnpmX2ZyZWUAGA9fX3diZ19mbGFnX2ZyZWUAGA5fX3diZ19tZXFfZnJlZQAYD19fd2JnX2VwYXJfZnJlZQAYD19fd2JnX21jbGlfZnJlZQAYD19fd2JnX3dkY21fZnJlZQAYD19fd2JnX2NmZWlfZnJlZQAYD19fd2JnX2Fsb2NfZnJlZQAYDV9fd2JnX2dtX2ZyZWUAGA9fX3diZ193cWR2X2ZyZWUAGA5fX3diZ19zcmxfZnJlZQAYDl9fd2JnX25vdF9mcmVlABgPX193YmdfY3Npel9mcmVlABgOX193YmdfbW9kX2ZyZWUAGA9fX3diZ193ZG1tX2ZyZWUAGA9fX3diZ19zbGxpX2ZyZWUAGA9fX3diZ19iaGVpX2ZyZWUAGA9fX3diZ19lY2sxX2ZyZWUAGA9fX3diZ19wc2hsX2ZyZWUAGA9fX3diZ19jcm9vX2ZyZWUAGA5fX3diZ19tdWxfZnJlZQAYDl9fd2JnX2FuZF9mcmVlABgOX193Ymdfb3JpX2ZyZWUAGBN3cWR2X25ld190eXBlc2NyaXB0AMwBE3dxbWxfbmV3X3R5cGVzY3JpcHQAzAETd2RtbF9uZXdfdHlwZXNjcmlwdADMARN3cW9wX25ld190eXBlc2NyaXB0AMwBE3dkb3BfbmV3X3R5cGVzY3JpcHQAzAETd3FjbV9uZXdfdHlwZXNjcmlwdADMARN3ZGR2X25ld190eXBlc2NyaXB0AMwBDndxY21fZnJvbV9hcmdzADsKd3Fkdl9pbW0wNgA2CndxbWxfaW1tMDYANgp3ZG1sX2ltbTA2ADYKd3FvcF9pbW0wNgA2Cndkb3BfaW1tMDYANgp3cWNtX2ltbTA2ADYKd2Rkdl9pbW0wNgA2CndkY21faW1tMDYANgpqbmVmX2ltbTA2ADYJbGRjX2ltbTA2ADYOd3Fkdl9mcm9tX2FyZ3MAywEOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNvcF9yZAA2B2Vjb3BfcmMAGgdlY29wX3JiABIHZWNvcF9yYQA1B2VjcjFfcmMAGgdlY3IxX3JiABIHZWNyMV9yYQA1B2VkMTlfcmQANgdlZDE5X3JjABoHZWQxOV9yYgASB2VkMTlfcmEANQdlcGFyX3JkADYHZXBhcl9yYwAaB2VwYXJfcmIAEgdlcGFyX3JhADUKZXhwaV9pbW0xMgAJB2V4cGlfcmIAEgdleHBpX3JhADUKam1wYl9pbW0xOAANB2ptcGJfcmEANQpqbXBmX2ltbTE4AA0Ham1wZl9yYQA1B2puZWJfcmMAGgdqbmViX3JiABIHam5lYl9yYQA1B2puZWZfcmMAGgdqbmVmX3JiABIHam5lZl9yYQA1CmpuZWlfaW1tMTIACQdqbmVpX3JiABIHam5laV9yYQA1CmpuemJfaW1tMTIACQdqbnpiX3JiABIHam56Yl9yYQA1CmpuemZfaW1tMTIACQdqbnpmX3JiABIHam56Zl9yYQA1CmpuemlfaW1tMTgADQdqbnppX3JhADUHazI1Nl9yYwAaB2syNTZfcmIAEgdrMjU2X3JhADUHbG9nZF9yZAA2B2xvZ2RfcmMAGgdsb2dkX3JiABIHbG9nZF9yYQA1Cm1jbGlfaW1tMTgADQdtY2xpX3JhADUKbWNwaV9pbW0xMgAJB21jcGlfcmIAEgdtY3BpX3JhADUHbWludF9yYgASB21pbnRfcmEANQdtbGR2X3JkADYHbWxkdl9yYwAaB21sZHZfcmIAEgdtbGR2X3JhADUHbWxvZ19yYwAaB21sb2dfcmIAEgdtbG9nX3JhADUKbW9kaV9pbW0xMgAJB21vZGlfcmIAEgdtb2RpX3JhADUHbW92ZV9yYgASB21vdmVfcmEANQptb3ZpX2ltbTE4AA0HbW92aV9yYQA1B21yb29fcmMAGgdtcm9vX3JiABIHbXJvb19yYQA1Cm11bGlfaW1tMTIACQdtdWxpX3JiABIHbXVsaV9yYQA1B3JldGRfcmIAEgdyZXRkX3JhADUHczI1Nl9yYwAaB3MyNTZfcmIAEgdzMjU2X3JhADUHc2N3cV9yYwAaB3Njd3FfcmIAEgdzY3dxX3JhADUKc2xsaV9pbW0xMgAJB3NsbGlfcmIAEgdzbGxpX3JhADUKc3JsaV9pbW0xMgAJB3NybGlfcmIAEgdzcmxpX3JhADUHc3J3cV9yZAA2B3Nyd3FfcmMAGgdzcndxX3JiABIHc3J3cV9yYQA1CnN1YmlfaW1tMTIACQdzdWJpX3JiABIHc3ViaV9yYQA1B3N3d3FfcmQANgdzd3dxX3JjABoHc3d3cV9yYgASB3N3d3FfcmEANQd0aW1lX3JiABIHdGltZV9yYQA1B3dkYW1fcmQANgd3ZGFtX3JjABoHd2RhbV9yYgASB3dkYW1fcmEANQd3ZGNtX3JjABoHd2RjbV9yYgASB3dkY21fcmEANQd3ZGR2X3JjABoHd2Rkdl9yYgASB3dkZHZfcmEANQd3ZG1kX3JkADYHd2RtZF9yYwAaB3dkbWRfcmIAEgd3ZG1kX3JhADUHd2RtbF9yYwAaB3dkbWxfcmIAEgd3ZG1sX3JhADUHd2RtbV9yZAA2B3dkbW1fcmMAGgd3ZG1tX3JiABIHd2RtbV9yYQA1B3dkb3BfcmMAGgd3ZG9wX3JiABIHd2RvcF9yYQA1B3dxYW1fcmQANgd3cWFtX3Jj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AAssAQF/QRBBBBDIASIBQoGAgIAQNwIAIAEgAK1C////B4NCIIY3AgggAUEIagskACAAENIBIAAoAgAEQBDZAQALIABBADYCACAAIAFBAEc6AAQLKAAgAxAWIQMgABDJASABEMkBIAIQyQEgAxDQAUEIdEHkAHIQ0wEQZwsoACADEBYhAyAAEMkBIAEQyQEgAhDJASADENABQQh0QeUAchDTARBnCyAAIABBAWsiAEEFTQRAIABBAWoPC0HggsAAQRkQ2gEACykBAX9BEEEEEMgBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMgBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQyQEgARDJASACEEdBCHRBygByENMBEGcLDwAgACABIAIgA0ESEPMBCw8AIAAgASACIANBGBDzAQsPACAAIAEgAiADQRwQ8wELDwAgACABIAIgA0EdEPMBCw8AIAAgASACIANBIRD0AQsPACAAIAEgAiADQSIQ8wELDwAgACABIAIgA0EjEPMBCw8AIAAgASACIANBKBDzAQsPACAAIAEgAiADQSoQ8wELDwAgACABIAIgA0EsEPMBCw8AIAAgASACIANBLxDzAQsPACAAIAEgAiADQTgQ8wELEAAgACABIAIgA0HTABD0AQsQACAAIAEgAiADQdQAEPQBCxAAIAAgASACIANB3gAQ9AELEAAgACABIAIgA0HfABD0AQsQACAAIAEgAiADQeAAEPQBCxAAIAAgASACIANB4QAQ9AELEAAgACABIAIgA0HiABD0AQsQACAAIAEgAiADQeMAEPQBCxAAIAAgASACIANB5AAQ9AELEAAgACABIAIgA0HlABD0AQsQACAAIAEgAiADQeYAEPMBCxAAIAAgASACIANB5wAQ8wELEAAgACABIAIgA0HoABDzAQsQACAAIAEgAiADQekAEPMBCxAAIAAgASACIANB6gAQ8wELEAAgACABIAIgA0HrABDzAQsQACAAIAEgAiADQewAEPMBCxAAIAAgASACIANB7gAQ8wELEAAgACABIAIgA0HvABDzAQsQACAAIAEgAiADQfAAEPMBCx4AIAEQZiEBIAAQyQEgARDGAUEIdEHMAHIQ0wEQZwsZACAAIAEgAkEgQQAgBBtBEEEAIAMbchAhCw0AIAAgASACQQEQ9QELDQAgACABIAJBAhD1AQsNACAAIAEgAkEDEPUBCw0AIAAgASACQQQQ9QELDQAgACABIAJBBRD1AQsNACAAIAEgAkEGEPUBCw0AIAAgASACQQcQ9QELDQAgACABIAJBCBD1AQsNACAAIAEgAkEJEPUBCw0AIAAgASACQQsQ9QELDQAgACABIAJBDRD1AQsNACAAIAEgAkEOEPUBCw0AIAAgASACQQ8Q9QELDQAgACABIAJBEBD1AQsNACAAIAEgAkEREPUBCw0AIAAgASACQRcQ9QELDQAgACABIAJBJhD1AQsNACAAIAEgAkEnEPUBCw0AIAAgASACQSkQ9QELDQAgACABIAJBKxD1AQsNACAAIAEgAkEtEPUBCw0AIAAgASACQS4Q9QELDQAgACABIAJBMBD1AQsNACAAIAEgAkExEPUBCw0AIAAgASACQTUQ9QELDQAgACABIAJBNxD1AQsNACAAIAEgAkE5EPYBCw0AIAAgASACQToQ9gELDQAgACABIAJBOxD2AQsNACAAIAEgAkE8EPYBCw0AIAAgASACQT0Q9gELDQAgACABIAJBPhD2AQsNACAAIAEgAkE/EPYBCw4AIAAgASACQcAAEPYBCw4AIAAgASACQcEAEPYBCw4AIAAgASACQcIAEPYBCw4AIAAgASACQcMAEPYBCw4AIAAgASACQcQAEPYBCw4AIAAgASACQcUAEPYBCw4AIAAgASACQcYAEPYBCw4AIAAgASACQccAEPYBCw4AIAAgASACQcgAEPYBCw4AIAAgASACQckAEPYBCw4AIAAgASACQcoAEPYBCw4AIAAgASACQdEAEPYBCw4AIAAgASACQdIAEPYBCxcBAX8gAEH/AXFBP00EfyAAEGgFQQALCxsAIAAQ0gEgACgCAEF/RgRAENkBAAsgAC0ABAsJACAAQRMQ9wELCQAgAEEVEPcBCwkAIABBGhD3AQsJACAAQSAQ9wELCQAgAEElEPcBCyIBAX9BEEEEEMgBIgBCADcCCCAAQoGAgIAQNwIAIABBCGoLCQAgAEE0EPcBCwkAIABBNhD3AQsKACAAQdgAEPcBCwoAIABB2QAQ9wELFwAgAUEQdEGAgPwDcSAAQQJ0QfwBcXILGwAgABDJASABEMkBIAIQyQEQOkEIdBDTARBnCxIAIAEgABDVASIABEAgAA8LAAt1AQF/IABB/wFxQcAATwRAIwBBEGsiASQAIAFBIjYCDCABQYCAwAA2AggjAEEgayIAJAAgAEEBNgIEIABB/IbAADYCACAAQgE3AgwgACABQQhqrUKAgICAwACENwMYIAAgAEEYajYCCCAAQbiAwAAQVwALIAALFAAgACABIAJBIEEAIAMbIARyECELFwAgABAbIAEQGyACEBsgAxAWENABEGILFgAgABAbIAEQGyACEBsgAxAbECEQYgsTACAAIAAoAgBBAWs2AgAgARBeCxMAIAAgACgCAEEBazYCACABEF8LEgAgABAbIAEQGyACEAIQRxBiCxEAIAAgASACQSBBACADGxAhCxIAIAAQGyABEBsgAhAdEEcQYgsTACAABEAPC0HcisAAQRsQ2gEACxQBAX9BBEEBEMgBIgEgADYAACABCw0AIAEEQCAAIAEQGQsLgQMBBX9BmY/AAC0AABoCfyAAQQlPBEACQEHN/3tBECAAIABBEE0bIgBrIAFNDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQASICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhADDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQAwsgAEEIaiEDCyADDAELIAEQAQsLDQAgABDeAUEKdkE/cQsPACAAEBsgARBmEMYBEGILCwAgACMAaiQAIwALDgBB94rAAEHPABDaAQALCQAgACABEAAACwkAIABBP3EQaAsKACAAEBtB/wFxCwgAIABBBBAZCwcAIABBCHQLCQBBMxDTARBnCwYAQQsQaAsGAEEKEGgLBgBBCBBoCwYAQQ8QaAsGAEEGEGgLBgBBCRBoCwYAQQcQ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", imports);
|
17020
|
+
return _loadWasmModule(1, null, "AGFzbQEAAAABRwxgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38Bf2ACf38AYAABf2ABfwBgBX9/f39/AX9gA39/fwBgAn5/AX9gBH9/f38AYAAAAhgBA3diZxBfX3diaW5kZ2VuX3Rocm93AAQDigKIAgEDCQEEBAQEBAEEAQQEAQMKAQEEAQQBAQEDAQQEAQEEAQEEAgEBBAICAgICAgQEBAMDAwMDAwMDAgEBBAQABAICAwAAAwMDAwMDAwMDAwABAQQEBAEBAQEBAQECAQYBAQEEBgYBAQEEBAICAQUAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEDAAEHAgIGBAQAAgAGCAMBAwELAwMDBAEBBAYBBQQFBQUFBQUFBQUFBQUFBQUFBQUEBwcCAgMCBwcAAAgAAwQFAXABCAgFAwEAEQYJAX8BQYCAwAALB8FN3QUGbWVtb3J5AgAWX193YmdfY29tcGFyZWFyZ3NfZnJlZQAUGl9fd2JnX2dldF9jb21wYXJlYXJnc19tb2RlAFAaX193Ymdfc2V0X2NvbXBhcmVhcmdzX21vZGUAPCJfX3diZ19nZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAFEiX193Ymdfc2V0X2NvbXBhcmVhcmdzX2luZGlyZWN0X3JocwBTEmNvbXBhcmVhcmdzX3RvX2ltbQBfFGNvbXBhcmVhcmdzX2Zyb21faW1tABUVX193YmdfZ2V0X21hdGhhcmdzX29wAFAVX193Ymdfc2V0X21hdGhhcmdzX29wAD0SX193YmdfbXVsYXJnc19mcmVlABYeX193YmdfZ2V0X211bGFyZ3NfaW5kaXJlY3RfcmhzAFAeX193Ymdfc2V0X211bGFyZ3NfaW5kaXJlY3RfcmhzAFQSX193YmdfZGl2YXJnc19mcmVlACceX193YmdfZ2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAMABHl9fd2JnX3NldF9kaXZhcmdzX2luZGlyZWN0X3JocwBpG19fd2JnX3BhbmljaW5zdHJ1Y3Rpb25fZnJlZQAcIXBhbmljaW5zdHJ1Y3Rpb25fZXJyb3JfdHlwZXNjcmlwdABCF3BhbmljaW5zdHJ1Y3Rpb25fcmVhc29uAGAccGFuaWNpbnN0cnVjdGlvbl9pbnN0cnVjdGlvbgBhDGdtX2Zyb21fYXJncwDbAQ1ndGZfZnJvbV9hcmdzANQBB2dtX2FyZ3MAjwEIZ3RmX2FyZ3MAbg53ZGNtX2Zyb21fYXJncwBADndkb3BfZnJvbV9hcmdzAEAOd2RtbF9mcm9tX2FyZ3MAQQ53ZGR2X2Zyb21fYXJncwDPAQl3ZGNtX2FyZ3MAKAl3cWNtX2FyZ3MAKQl3ZG9wX2FyZ3MAKgl3cW9wX2FyZ3MAKwl3ZG1sX2FyZ3MALAl3cW1sX2FyZ3MALQl3ZGR2X2FyZ3MAagl3cWR2X2FyZ3MAaxBfX3diZ19pbW0wNl9mcmVlAC4QX193YmdfaW1tMTJfZnJlZQAvEF9fd2JnX2ltbTE4X2ZyZWUAMA5fX3diZ19hZGRfZnJlZQAdD19fd2JnX25vb3BfZnJlZQAJEmFkZF9uZXdfdHlwZXNjcmlwdABDBmFkZF9yYQA6BmFkZF9yYgAXBmFkZF9yYwAeA2FkZADMAQNhbmQAkQEDZGl2AJIBAmVxAJMBA2V4cACUAQJndACVAQJsdACWAQRtbG9nAJcBBG1yb28AmAEEbW9kXwCZAQVtb3ZlXwBFA211bACaAQNub3QARgJvcgCbAQNzbGwAnAEDc3JsAJ0BA3N1YgCeAQN4b3IAnwEEbWxkdgBvA3JldADBAQRyZXRkAEcTYWxvY19uZXdfdHlwZXNjcmlwdABdB2Fsb2NfcmEAJQRhbG9jAMIBA21jbABIA21jcACgAQNtZXEAcBNiaHNoX25ld190eXBlc2NyaXB0ABoEYmhzaAAxBGJoZWkAwwEEYnVybgBJBGNhbGwAcQNjY3AAcgRjcm9vAEoEY3NpegBLAmNiAMQBA2xkYwBzA2xvZwB0BGxvZ2QAdQRtaW50AEwEcnZydADFAQRzY3dxAKEBA3NydwCiAQRzcndxAHYDc3d3AKMBBHN3d3EAdwJ0cgCkAQN0cm8AeARlY2sxAKUBBGVjcjEApgEEZWQxOQB5BGsyNTYApwEEczI1NgCoAQR0aW1lAE0Tbm9vcF9uZXdfdHlwZXNjcmlwdABtBG5vb3AA5wEEZmxhZwDGAQNiYWwAqQEDam1wAMcBA2puZQCqAQNzbW8AehNhZGRpX25ld190eXBlc2NyaXB0AEQKYWRkaV9pbW0xMgAKBGFkZGkAqwEEYW5kaQCsAQRkaXZpAK0BBGV4cGkArgEEbW9kaQCvAQRtdWxpALABA29yaQCxAQRzbGxpALIBBHNybGkAswEEc3ViaQC0AQR4b3JpALUBBGpuZWkAtgECbGIAtwECbHcAuAECc2IAuQECc3cAugEEbWNwaQC7ARJndGZfbmV3X3R5cGVzY3JpcHQA1gEDZ3RmALwBBG1jbGkAMhFnbV9uZXdfdHlwZXNjcmlwdABOCGdtX2ltbTE4AA8CZ20AMwRtb3ZpADQEam56aQA1BGptcGYANhNqbXBiX25ld190eXBlc2NyaXB0ABAEam1wYgA3BGpuemYAvQEEam56YgC+AQRqbmVmAHsKam5lYl9pbW0wNgA7BGpuZWIAfAJqaQBVE2NmZWlfbmV3X3R5cGVzY3JpcHQAJgpjZmVpX2ltbTI0AAwEY2ZlaQBWBGNmc2kAVwNjZmUAyAEDY2ZzAMkBBHBzaGwAWARwc2hoAFkEcG9wbABaBHBvcGgAWxN3ZGNtX25ld190eXBlc2NyaXB0ANABBHdkY20AfQR3cWNtAH4Ed2RvcAB/BHdxb3AAgAEEd2RtbACBAQR3cW1sAIIBBHdkZHYAgwEEd3FkdgCEAQR3ZG1kAIUBBHdxbWQAhgEEd2RhbQCHAQR3cWFtAIgBBHdkbW0AiQEEd3FtbQCKAQRlY2FsAIsBBGJzaXoAOBNibGRkX25ld190eXBlc2NyaXB0ADkHYmxkZF9yZAA7BGJsZGQAjAEEZWNvcACNAQRlcGFyAI4BFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADhRpbnN0cnVjdGlvbl90b19ieXRlcwAIEGluc3RydWN0aW9uX3NpemUA+gERcmVnaWRfbmV3X2NoZWNrZWQAvwEJcmVnaWRfYmFsAOkBCnJlZ2lkX2NnYXMA6gEJcmVnaWRfZXJyAOsBCnJlZ2lkX2ZsYWcA7AEIcmVnaWRfZnAA7QEKcmVnaWRfZ2dhcwDuAQhyZWdpZF9ocADvAQhyZWdpZF9pcwDwAQhyZWdpZF9vZgDxAQlyZWdpZF9vbmUA8gEIcmVnaWRfcGMA8wEJcmVnaWRfcmV0APQBCnJlZ2lkX3JldGwA9QEIcmVnaWRfc3AA9gEJcmVnaWRfc3BwAPcBDnJlZ2lkX3dyaXRhYmxlAPgBCnJlZ2lkX3plcm8A+QEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA4gELcmVnaWRfdG9fdTgA4wESYW5kX25ld190eXBlc2NyaXB0AEMSZGl2X25ld190eXBlc2NyaXB0AEMRZXFfbmV3X3R5cGVzY3JpcHQAQxJleHBfbmV3X3R5cGVzY3JpcHQAQxFndF9uZXdfdHlwZXNjcmlwdABDEWx0X25ld190eXBlc2NyaXB0AEMTbWxvZ19uZXdfdHlwZXNjcmlwdABDE21yb29fbmV3X3R5cGVzY3JpcHQAQxJtb2RfbmV3X3R5cGVzY3JpcHQAQxJtdWxfbmV3X3R5cGVzY3JpcHQAQxFvcl9uZXdfdHlwZXNjcmlwdABDEnNsbF9uZXdfdHlwZXNjcmlwdABDEnNybF9uZXdfdHlwZXNjcmlwdABDEnN1Yl9uZXdfdHlwZXNjcmlwdABDEnhvcl9uZXdfdHlwZXNjcmlwdABDEm1jcF9uZXdfdHlwZXNjcmlwdABDE3Njd3FfbmV3X3R5cGVzY3JpcHQAQxJzcndfbmV3X3R5cGVzY3JpcHQAQxJzd3dfbmV3X3R5cGVzY3JpcHQAQxF0cl9uZXdfdHlwZXNjcmlwdABDE2VjazFfbmV3X3R5cGVzY3JpcHQAQxNlY3IxX25ld190eXBlc2NyaXB0AEMTazI1Nl9uZXdfdHlwZXNjcmlwdABDE3MyNTZfbmV3X3R5cGVzY3JpcHQAQxJiYWxfbmV3X3R5cGVzY3JpcHQAQxJqbmVfbmV3X3R5cGVzY3JpcHQAQxNhbmRpX25ld190eXBlc2NyaXB0AEQTZGl2aV9uZXdfdHlwZXNjcmlwdABEE2V4cGlfbmV3X3R5cGVzY3JpcHQARBNtb2RpX25ld190eXBlc2NyaXB0AEQTbXVsaV9uZXdfdHlwZXNjcmlwdABEEm9yaV9uZXdfdHlwZXNjcmlwdABEE3NsbGlfbmV3X3R5cGVzY3JpcHQARBNzcmxpX25ld190eXBlc2NyaXB0AEQTc3ViaV9uZXdfdHlwZXNjcmlwdABEE3hvcmlfbmV3X3R5cGVzY3JpcHQARBNqbmVpX25ld190eXBlc2NyaXB0AEQRbGJfbmV3X3R5cGVzY3JpcHQARBFsd19uZXdfdHlwZXNjcmlwdABEEXNiX25ld190eXBlc2NyaXB0AEQRc3dfbmV3X3R5cGVzY3JpcHQARBNtY3BpX25ld190eXBlc2NyaXB0AEQTam56Zl9uZXdfdHlwZXNjcmlwdABEE2puemJfbmV3X3R5cGVzY3JpcHQARBFqaV9uZXdfdHlwZXNjcmlwdAAmE2Nmc2lfbmV3X3R5cGVzY3JpcHQAJhNwc2hsX25ld190eXBlc2NyaXB0ACYTcHNoaF9uZXdfdHlwZXNjcmlwdAAmE3BvcGxfbmV3X3R5cGVzY3JpcHQAJhNwb3BoX25ld190eXBlc2NyaXB0ACYSbm90X25ld190eXBlc2NyaXB0ABoTcmV0ZF9uZXdfdHlwZXNjcmlwdAAaE21vdmVfbmV3X3R5cGVzY3JpcHQAGhJtY2xfbmV3X3R5cGVzY3JpcHQAGhNidXJuX25ld190eXBlc2NyaXB0ABoTY3Jvb19uZXdfdHlwZXNjcmlwdAAaE2NzaXpfbmV3X3R5cGVzY3JpcHQAGhNtaW50X25ld190eXBlc2NyaXB0ABoTdGltZV9uZXdfdHlwZXNjcmlwdAAaE2JzaXpfbmV3X3R5cGVzY3JpcHQAGhJyZXRfbmV3X3R5cGVzY3JpcHQAXRNiaGVpX25ld190eXBlc2NyaXB0AF0RY2JfbmV3X3R5cGVzY3JpcHQAXRNydnJ0X25ld190eXBlc2NyaXB0AF0TZmxhZ19uZXdfdHlwZXNjcmlwdABdEmptcF9uZXdfdHlwZXNjcmlwdABdEmNmZV9uZXdfdHlwZXNjcmlwdABdEmNmc19uZXdfdHlwZXNjcmlwdABdE21sZHZfbmV3X3R5cGVzY3JpcHQAORJtZXFfbmV3X3R5cGVzY3JpcHQAORJjY3BfbmV3X3R5cGVzY3JpcHQAORJsb2dfbmV3X3R5cGVzY3JpcHQAORNsb2dkX25ld190eXBlc2NyaXB0ADkTc3J3cV9uZXdfdHlwZXNjcmlwdAA5E3N3d3FfbmV3X3R5cGVzY3JpcHQAORJ0cm9fbmV3X3R5cGVzY3JpcHQAORNlZDE5X25ld190eXBlc2NyaXB0ADkSc21vX25ld190eXBlc2NyaXB0ADkSbGRjX25ld190eXBlc2NyaXB0ADkTam5lZl9uZXdfdHlwZXNjcmlwdAA5E3dkbWRfbmV3X3R5cGVzY3JpcHQAORN3cW1kX25ld190eXBlc2NyaXB0ADkTd2RhbV9uZXdfdHlwZXNjcmlwdAA5E3dxYW1fbmV3X3R5cGVzY3JpcHQAORN3ZG1tX25ld190eXBlc2NyaXB0ADkTd3FtbV9uZXdfdHlwZXNjcmlwdAA5E2VjYWxfbmV3X3R5cGVzY3JpcHQAORNjYWxsX25ld190eXBlc2NyaXB0ADkTZWNvcF9uZXdfdHlwZXNjcmlwdAA5E2VwYXJfbmV3X3R5cGVzY3JpcHQAOQZyZXRfcmEAJQdiaGVpX3JhACUFY2JfcmEAJQdydnJ0X3JhACUHZmxhZ19yYQAlBmptcF9yYQAlCGppX2ltbTI0AAwKY2ZzaV9pbW0yNAAMBmNmZV9yYQAlBmNmc19yYQAlCnBzaGxfaW1tMjQADApwc2hoX2ltbTI0AAwKcG9wbF9pbW0yNAAMCnBvcGhfaW1tMjQADBNtb3ZpX25ld190eXBlc2NyaXB0ABATbWNsaV9uZXdfdHlwZXNjcmlwdAAQE2puemlfbmV3X3R5cGVzY3JpcHQAEBNqbXBmX25ld190eXBlc2NyaXB0ABATX193YmdfbWF0aGFyZ3NfZnJlZQAUH19fd2JnX3NldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMAUx5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9saHMAUx9fX3diZ19nZXRfbWF0aGFyZ3NfaW5kaXJlY3RfcmhzAFEeX193YmdfZ2V0X211bGFyZ3NfaW5kaXJlY3RfbGhzAFEPX193YmdfZXhwaV9mcmVlAB0PX193YmdfYmhlaV9mcmVlAB0PX193Ymdfd2RtbF9mcmVlAB0PX193YmdfcHNobF9mcmVlAB0OX193YmdfbG9nX2ZyZWUAHQ5fX3diZ19jY3BfZnJlZQAdD19fd2JnX2VjazFfZnJlZQAdD19fd2JnX2VjcjFfZnJlZQAdDl9fd2JnX3Ntb19mcmVlAB0OX193Ymdfb3JpX2ZyZWUAHQ5fX3diZ190cm9fZnJlZQAdDl9fd2JnX21lcV9mcmVlAB0OX193YmdfY2ZzX2ZyZWUAHQ5fX3diZ19kaXZfZnJlZQAdDV9fd2JnX2x0X2ZyZWUAHQ9fX3diZ19iaHNoX2ZyZWUAHQ1fX3diZ19zYl9mcmVlAB0PX193Ymdfd2RtZF9mcmVlAB0NX193YmdfdHJfZnJlZQAdDl9fd2JnX3hvcl9mcmVlAB0PX193Ymdfam5lYl9mcmVlAB0PX193Ymdfam5lZl9mcmVlAB0PX193YmdfY3Npel9mcmVlAB0PX193YmdfY3Jvb19mcmVlAB0PX193YmdfZGl2aV9mcmVlAB0NX193YmdfZ21fZnJlZQAdD19fd2JnX21vZGlfZnJlZQAdD19fd2JnX3hvcmlfZnJlZQAdDV9fd2JnX2NiX2ZyZWUAHQ9fX3diZ193ZGNtX2ZyZWUAHQ5fX3diZ19qbXBfZnJlZQAdD19fd2JnX3dxYW1fZnJlZQAdDl9fd2JnX2xkY19mcmVlAB0PX193YmdfZWQxOV9mcmVlAB0NX193Ymdfc3dfZnJlZQAdD19fd2JnX3RpbWVfZnJlZQAdD19fd2JnX2Vjb3BfZnJlZQAdD19fd2JnX3Njd3FfZnJlZQAdD19fd2JnX3dxbW1fZnJlZQAdD19fd2JnX3dkYW1fZnJlZQAdDV9fd2JnX2xiX2ZyZWUAHQ1fX3diZ19qaV9mcmVlAB0PX193YmdfazI1Nl9mcmVlAB0PX193YmdfYW5kaV9mcmVlAB0PX193Ymdfam56aV9mcmVlAB0PX193Ymdfc3J3cV9mcmVlAB0OX193Ymdfbm90X2ZyZWUAHQ5fX3diZ19jZmVfZnJlZQAdD19fd2JnX2xvZ2RfZnJlZQAdDl9fd2JnX3Nyd19mcmVlAB0PX193YmdfcnZydF9mcmVlAB0PX193YmdfcHNoaF9mcmVlAB0OX193Ymdfc3JsX2ZyZWUAHQ5fX3diZ19tdWxfZnJlZQAdD19fd2JnX2ZsYWdfZnJlZQAdD19fd2JnX21jcGlfZnJlZQAdDl9fd2JnX21vZF9mcmVlAB0PX193YmdfbW92aV9mcmVlAB0OX193YmdfcmV0X2ZyZWUAHQ9fX3diZ19tcm9vX2ZyZWUAHQ9fX3diZ193cWR2X2ZyZWUAHQ1fX3diZ19sd19mcmVlAB0PX193Ymdfd3FtZF9mcmVlAB0OX193Ymdfc3d3X2ZyZWUAHQ5fX3diZ19ndGZfZnJlZQAdD19fd2JnX3BvcGhfZnJlZQAdDV9fd2JnX29yX2ZyZWUAHQ9fX3diZ19tb3ZlX2ZyZWUAHQ9fX3diZ193ZGR2X2ZyZWUAHQ9fX3diZ19yZXRkX2ZyZWUAHQ5fX3diZ19iYWxfZnJlZQAdD19fd2JnX2FkZGlfZnJlZQAdDl9fd2JnX2FuZF9mcmVlAB0PX193YmdfbWNsaV9mcmVlAB0PX193Ymdfd3FtbF9mcmVlAB0PX193Ymdfc2xsaV9mcmVlAB0PX193Ymdfd2RvcF9mcmVlAB0OX193Ymdfc2xsX2ZyZWUAHQ9fX3diZ19lY2FsX2ZyZWUAHQ9fX3diZ193cWNtX2ZyZWUAHQ9fX3diZ19zd3dxX2ZyZWUAHQ9fX3diZ19tbGR2X2ZyZWUAHQ1fX3diZ19ndF9mcmVlAB0NX193YmdfZXFfZnJlZQAdDl9fd2JnX2puZV9mcmVlAB0PX193Ymdfam5laV9mcmVlAB0PX193Ymdfam1wZl9mcmVlAB0OX193YmdfZXhwX2ZyZWUAHQ9fX3diZ19zMjU2X2ZyZWUAHQ5fX3diZ19zdWJfZnJlZQAdDl9fd2JnX21jcF9mcmVlAB0PX193YmdfZXBhcl9mcmVlAB0PX193YmdfY2ZlaV9mcmVlAB0PX193YmdfY2ZzaV9mcmVlAB0PX193Ymdfam56Zl9mcmVlAB0PX193YmdfbWludF9mcmVlAB0PX193YmdfYnNpel9mcmVlAB0PX193YmdfYnVybl9mcmVlAB0PX193Ymdfd2RtbV9mcmVlAB0PX193Ymdfam1wYl9mcmVlAB0PX193Ymdfc3JsaV9mcmVlAB0PX193Ymdfc3ViaV9mcmVlAB0PX193Ymdfam56Yl9mcmVlAB0PX193YmdfbXVsaV9mcmVlAB0PX193Ymdfd3FvcF9mcmVlAB0PX193YmdfcG9wbF9mcmVlAB0OX193YmdfbWNsX2ZyZWUAHQ9fX3diZ19jYWxsX2ZyZWUAHQ9fX3diZ19tbG9nX2ZyZWUAHQ9fX3diZ19ibGRkX2ZyZWUAHQ9fX3diZ19hbG9jX2ZyZWUAHRN3cWR2X25ld190eXBlc2NyaXB0ANABE3dxbWxfbmV3X3R5cGVzY3JpcHQA0AETd2RtbF9uZXdfdHlwZXNjcmlwdADQARN3cW9wX25ld190eXBlc2NyaXB0ANABE3dkb3BfbmV3X3R5cGVzY3JpcHQA0AETd3FjbV9uZXdfdHlwZXNjcmlwdADQARN3ZGR2X25ld190eXBlc2NyaXB0ANABDndxY21fZnJvbV9hcmdzAEAKd3Fkdl9pbW0wNgA7CndxbWxfaW1tMDYAOwp3ZG1sX2ltbTA2ADsKd3FvcF9pbW0wNgA7Cndkb3BfaW1tMDYAOwp3cWNtX2ltbTA2ADsKd2Rkdl9pbW0wNgA7CndkY21faW1tMDYAOwpqbmVmX2ltbTA2ADsJbGRjX2ltbTA2ADsOd3Fkdl9mcm9tX2FyZ3MAzwEOd3FtbF9mcm9tX2FyZ3MAQQ53cW9wX2Zyb21fYXJncwBABWdtX3JhADoFZ3RfcmMAHgVndF9yYgAXBWd0X3JhADoFbGJfcmIAFwVsYl9yYQA6BWx0X3JjAB4FbHRfcmIAFwVsdF9yYQA6CGx3X2ltbTEyAAoFbHdfcmIAFwVsd19yYQA6BW9yX3JjAB4Fb3JfcmIAFwVvcl9yYQA6CHNiX2ltbTEyAAoFc2JfcmIAFwVzYl9yYQA6CHN3X2ltbTEyAAoFc3dfcmIAFwVzd19yYQA6BXRyX3JjAB4FdHJfcmIAFwV0cl9yYQA6BWVxX3JjAB4FZXFfcmIAFwVlcV9yYQA6BmFuZF9yYwAeBmFuZF9yYgAXBmFuZF9yYQA6BmJhbF9yYwAeBmJhbF9yYgAXBmJhbF9yYQA6BmNjcF9yYwAeBmNjcF9yYgAXBmNjcF9yYQA6BmRpdl9yYwAeBmRpdl9yYgAXBmRpdl9yYQA6BmV4cF9yYwAeBmV4cF9yYgAXBmV4cF9yYQA6CGxiX2ltbTEyAAoGZ3RmX3JiABcGZ3RmX3JhADoGam5lX3JjAB4Gam5lX3JiABcGam5lX3JhADoGbGRjX3JjAB4GbGRjX3JiABcGbGRjX3JhADoGbG9nX3JkADsGbG9nX3JjAB4GbG9nX3JiABcGbG9nX3JhADoGbWNsX3JiABcGbWNsX3JhADoGbWNwX3JjAB4GbWNwX3JiABcGbWNwX3JhADoGbWVxX3JkADsGbWVxX3JjAB4GbWVxX3JiABcGbWVxX3JhADoGbW9kX3JjAB4GbW9kX3JiABcGbW9kX3JhADoGbXVsX3JjAB4GbXVsX3JiABcGbXVsX3JhADoGbm90X3JiABcGbm90X3JhADoJb3JpX2ltbTEyAAoGb3JpX3JiABcGb3JpX3JhADoGc2xsX3JjAB4Gc2xsX3JiABcGc2xsX3JhADoGc21vX3JkADsGc21vX3JjAB4Gc21vX3JiABcGc21vX3JhADoGc3JsX3JjAB4Gc3JsX3JiABcGc3JsX3JhADoGc3J3X3JjAB4Gc3J3X3JiABcGc3J3X3JhADoGc3ViX3JjAB4Gc3ViX3JiABcGc3ViX3JhADoGc3d3X3JjAB4Gc3d3X3JiABcGc3d3X3JhADoGdHJvX3JkADsGdHJvX3JjAB4GdHJvX3JiABcGdHJvX3JhADoGeG9yX3JjAB4GeG9yX3JiABcGeG9yX3JhADoJZ3RmX2ltbTEyAAoHYWRkaV9yYgAXB2FkZGlfcmEAOgphbmRpX2ltbTEyAAoHYW5kaV9yYgAXB2FuZGlfcmEAOgdiaHNoX3JiABcHYmhzaF9yYQA6BmNjcF9yZAA7B2JsZGRfcmMAHgdibGRkX3JiABcHYmxkZF9yYQA6B2JzaXpfcmIAFwdic2l6X3JhADoHYnVybl9yYgAXB2J1cm5fcmEAOgdjYWxsX3JkADsHY2FsbF9yYwAeB2NhbGxfcmIAFwdjYWxsX3JhADoHY3Jvb19yYgAXB2Nyb29fcmEAOgdjc2l6X3JiABcHY3Npel9yYQA6CmRpdmlfaW1tMTIACgdkaXZpX3JiABcHZGl2aV9yYQA6B2VjYWxfcmQAOwdlY2FsX3JjAB4HZWNhbF9yYgAXB2VjYWxfcmEAOgdlY2sxX3JjAB4HZWNrMV9yYgAXB2VjazFfcmEAOgdlY29wX3JkADsHZWNvcF9yYwAeB2Vjb3BfcmIAFwdlY29wX3JhADoHZWNyMV9yYwAeB2VjcjFfcmIAFwdlY3IxX3JhADoHZWQxOV9yZAA7B2VkMTlfcmMAHgdlZDE5X3JiABcHZWQxOV9yYQA6B2VwYXJfcmQAOwdlcGFyX3JjAB4HZXBhcl9yYgAXB2VwYXJfcmEAOgpleHBpX2ltbTEyAAoHZXhwaV9yYgAXB2V4cGlfcmEAOgpqbXBiX2ltbTE4AA8Ham1wYl9yYQA6CmptcGZfaW1tMTgADwdqbXBmX3JhADoHam5lYl9yYwAeB2puZWJfcmIAFwdqbmViX3JhADoHam5lZl9yYwAeB2puZWZfcmIAFwdqbmVmX3JhADoKam5laV9pbW0xMgAKB2puZWlfcmIAFwdqbmVpX3JhADoKam56Yl9pbW0xMgAKB2puemJfcmIAFwdqbnpiX3JhADoKam56Zl9pbW0xMgAKB2puemZfcmIAFwdqbnpmX3JhADoKam56aV9pbW0xOAAPB2puemlfcmEAOgdrMjU2X3JjAB4HazI1Nl9yYgAXB2syNTZfcmEAOgdsb2dkX3JkADsHbG9nZF9yYwAeB2xvZ2RfcmIAFwdsb2dkX3JhADoKbWNsaV9pbW0xOAAPB21jbGlfcmEAOgptY3BpX2ltbTEyAAoHbWNwaV9yYgAXB21jcGlfcmEAOgdtaW50X3JiABcHbWludF9yYQA6B21sZHZfcmQAOwdtbGR2X3JjAB4HbWxkdl9yYgAXB21sZHZfcmEAOgdtbG9nX3JjAB4HbWxvZ19yYgAXB21sb2dfcmEAOgptb2RpX2ltbTEyAAoHbW9kaV9yYgAXB21vZGlfcmEAOgdtb3ZlX3JiABcHbW92ZV9yYQA6Cm1vdmlfaW1tMTgADwdtb3ZpX3JhADoHbXJvb19yYwAeB21yb29fcmIAFwdtcm9vX3JhADoKbXVsaV9pbW0xMgAKB211bGlfcmIAFwdtdWxpX3JhADoHcmV0ZF9yYgAXB3JldGRfcmEAOgdzMjU2X3JjAB4HczI1Nl9yYgAXB3MyNTZfcmEAOgdzY3dxX3JjAB4Hc2N3cV9yYgAXB3Njd3FfcmEAOgpzbGxpX2ltbTEyAAoHc2xsaV9yYgAXB3NsbGlfcmEAOgpzcmxpX2ltbTEyAAoHc3JsaV9yYgAXB3NybGlfcmEAOgdzcndxX3JkADsHc3J3cV9yYwAeB3Nyd3FfcmIAFwdzcndxX3JhADoKc3ViaV9pbW0xMgAKB3N1YmlfcmIAFwdzdWJpX3JhADoHc3d3cV9yZAA7B3N3d3FfcmMAHgdzd3dxX3JiABcHc3d3cV9yYQA6B3RpbWVfcmIAFwd0aW1lX3JhADoHd2RhbV9yZAA7B3dkYW1fcmMAHgd3ZGFtX3JiABcHd2RhbV9yYQA6B3dkY21fcmMAHgd3ZGNtX3JiABcHd2RjbV9yYQA6B3dkZHZfcmMAHgd3ZGR2X3JiABcHd2Rkdl9yYQA6B3dkbWRfcmQAOwd3ZG1kX3JjAB4Hd2RtZF9yYgAXB3dkbWRfcmEAOgd3ZG1sX3JjAB4Hd2RtbF9yYgAXB3dkbWxfcmEAOgd3ZG1tX3JkADsHd2RtbV9yYwAeB3dkbW1fcmIAFwd3ZG1tX3Jh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QQh2QYD+A3EgAUGA/gNxQQh0ckEIdnILTwECfyAAENcBIABBCGsiASABKAIAQQFqIgI2AgACQCACBEAgACgCAEF/Rg0BIAAvAAQgAEEGai0AAEEQdHIQ2gEgARBjEGcPCwALEN0BAAtVAQF/IAAQIiEAQQRBEBDZASIBRQRAAAsgAUKBgICAEDcCACABIABBEHRBgID8B3EgAEEIdkGA/gNxIABBgP4DcUEIdHJBCHZyrUIghjcCCCABQQhqC04BAX8gAUUEQCAAEBsaDwsgABDXASAAQQhrIgEgASgCAEEBayICNgIAAkAgAg0AIABBBGsiACAAKAIAQQFrIgA2AgAgAA0AIAFBEBAjCwsQACAAIAEgAiADQd4AEIICCxAAIAAgASACIANB3wAQggILEAAgACABIAIgA0HgABCCAgsQACAAIAEgAiADQeEAEIICCxAAIAAgASACIANB4gAQgwILEAAgACABIAIgA0HjABCDAgtOAQF/IAFFBEAgABAfGg8LIAAQ1wEgAEEIayIBIAEoAgBBAWsiAjYCAAJAIAINACAAQQRrIgAgACgCAEEBayIANgIAIAANACABQRAQIwsLTgEBfyABRQRAIAAQIRoPCyAAENcBIABBCGsiASABKAIAQQFrIgI2AgACQCACDQAgAEEEayIAIAAoAgBBAWsiADYCACAADQAgAUEQECMLC04BAX8gAUUEQCAAECIaDwsgABDXASAAQQhrIgEgASgCAEEBayICNgIAAkAgAg0AIABBBGsiACAAKAIAQQFrIgA2AgAgAA0AIAFBEBAjCwsPACAAIAFBgICAyAEQhAILDAAgACABQcsAEIUCCwwAIAAgAUHMABCFAgsMACAAIAFBzQAQhQILDAAgACABQc4AEIUCCwwAIAAgAUHPABCFAgsMACAAIAFB0AAQhQILDwAgACABQYCAgOgGEIQCC1MBAX8gABAfIQQgARAfIQEgAhAfIQIgAxAfIQNBBEEQENkBIgBFBEAACyAAQoGAgIAQNwIAIAAgBCABIAIgAxAkrUL///8Hg0IghjcCCCAAQQhqC0UBAX8jAEEQayIBJAAgAUEEaiAAECAgASgCBCIALwAAIABBAmotAABBEHRyENoBIAEoAgggASgCDBDSARBnIAFBEGokAAtLAQF/IwBBEGsiASQAIAFBBGogABAgIAEoAgQi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AUKBgICAEDcCACABIACtQv///weDQiCGNwIIIAFBCGoLMAEBf0EEQRAQ2QEiAUUEQAALIAEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCzABAX9BBEEQENkBIgFFBEAACyABIAA6AAwgAUEANgIIIAFCgYCAgBA3AgAgAUEIagsoACABKAIARQRAIAFBfzYCACAAIAE2AgQgACABQQRqNgIADwsQ3QEACyQAIAAQ1wEgACgCAARAEN0BAAsgAEEANgIAIAAgAUEARzoABAsoACADEBshAyAAEM0BIAEQzQEgAhDNASADENUBQQh0QeQAchDKARBmCygAIAMQGyEDIAAQzQEgARDNASACEM0BIAMQ1QFBCHRB5QByEMoBEGYLIAAgAEEBayIAQQZNBEAgAEEBag8LQeCCwABBGRDhAQALKQEBf0EEQRAQ2QEiAEUEQAALIABCADcCCCAAQoGAgIAQNwIAIABBCGoLIgAgAhAEIQIgABDNASABEM0BIAIQT0EIdEHKAHIQygEQZgsPACAAIAEgAiADQRIQ/AELDwAgACABIAIgA0EYEPwBCw8AIAAgASACIANBHBD8AQsPACAAIAEgAiADQR0Q/AELDwAgACABIAIgA0EhEP0BCw8AIAAgASACIANBIhD8AQsPACAAIAEgAiADQSMQ/AELDwAgACABIAIgA0EoEPwBCw8AIAAgASACIANBKhD8AQsPACAAIAEgAiADQSwQ/AELDwAgACABIAIgA0EvEPwBCw8AIAAgASACIANBOBD8AQsQACAAIAEgAiADQdMAEP0BCxAAIAAgASACIANB1AAQ/QELEAAgACABIAIgA0HeABD9AQsQACAAIAEgAiADQd8AEP0BCxAAIAAgASACIANB4AAQ/QELEAAgACABIAIgA0HhABD9AQsQACAAIAEgAiADQeIAEP0BCxAAIAAgASACIANB4wAQ/QELEAAgACABIAIgA0HkABD9AQsQACAAIAEgAiADQeUAEP0BCxAAIAAgASACIANB5gAQ/AELEAAgACABIAIgA0HnABD8AQsQACAAIAEgAiADQegAEPwBCxAAIAAgASACIANB6QAQ/AELEAAgACABIAIgA0HqABD8AQsQACAAIAEgAiADQesAEPwBCxAAIAAgASACIANB7AAQ/AELEAAgACABIAIgA0HuABD8AQsQACAAIAEgAiADQe8AEPwBCxAAIAAgASACIANB8AAQ/AELHgAgARBsIQEgABDNASABEMsBQQh0QcwAchDKARBmCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECQLDQAgACABIAJBARD+AQsNACAAIAEgAkECEP4BCw0AIAAgASACQQMQ/gELDQAgACABIAJBBBD+AQsNACAAIAEgAkEFEP4BCw0AIAAgASACQQYQ/gELDQAgACABIAJBBxD+AQsNACAAIAEgAkEIEP4BCw0AIAAgASACQQkQ/gELDQAgACABIAJBCxD+AQsNACAAIAEgAkENEP4BCw0AIAAgASACQQ4Q/gELDQAgACABIAJBDxD+AQsNACAAIAEgAkEQEP4BCw0AIAAgASACQREQ/gELDQAgACABIAJBFxD+AQsNACAAIAEgAkEmEP4BCw0AIAAgASACQScQ/gELDQAgACABIAJBKRD+AQsNACAAIAEgAkErEP4BCw0AIAAgASACQS0Q/gELDQAgACABIAJBLhD+AQsNACAAIAEgAkEwEP4BCw0AIAAgASACQTEQ/gELDQAgACABIAJBNRD+AQsNACAAIAEgAkE3EP4BCw0AIAAgASACQTkQ/wELDQAgACABIAJBOhD/AQsNACAAIAEgAkE7EP8BCw0AIAAgASACQTwQ/wELDQAgACABIAJBPRD/AQsNACAAIAEgAkE+EP8BCw0AIAAgASACQT8Q/wELDgAgACABIAJBwAAQ/wELDgAgACABIAJBwQAQ/wELDgAgACABIAJBwgAQ/wELDgAgACABIAJBwwAQ/wELDgAgACABIAJBxAAQ/wELDgAgACABIAJBxQAQ/wELDgAgACABIAJBxgAQ/wELDgAgACABIAJBxwAQ/wELDgAgACABIAJByAAQ/wELDgAgACABIAJByQAQ/wELDgAgACABIAJBygAQ/wELDgAgACABIAJB0QAQ/wELDgAgACABIAJB0gAQ/wELFwEBfyAAQf8BcUE/TQR/IAAQZwVBAAsLGwAgABDXASAAKAIAQX9GBEAQ3QEACyAALQAECwkAIABBExCAAgsJACAAQRUQgAILCQAgAEEaEIACCwkAIABBIBCAAgsJACAAQSUQgAILCQAgAEE0EIACCwkAIABBNhCAAgsKACAAQdgAEIACCwoAIABB2QAQgAILGwEBf0EBQQQQ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", imports);
|
16921
17021
|
}
|
16922
17022
|
__name(wasm, "wasm");
|
16923
17023
|
async function initWasm2() {
|
16924
|
-
return await __wbg_init(wasm());
|
17024
|
+
return await __wbg_init({ module_or_path: wasm() });
|
16925
17025
|
}
|
16926
17026
|
__name(initWasm2, "initWasm");
|
16927
17027
|
initWasm2();
|
@@ -17889,9 +17989,9 @@
|
|
17889
17989
|
var __name2 = /* @__PURE__ */ __name((target, value) => __defProp2(target, "name", { value, configurable: true }), "__name");
|
17890
17990
|
function getBuiltinVersions() {
|
17891
17991
|
return {
|
17892
|
-
FUEL_CORE: "0.
|
17893
|
-
FORC: "0.
|
17894
|
-
FUELS: "0.100.
|
17992
|
+
FUEL_CORE: "0.43.1",
|
17993
|
+
FORC: "0.68.1",
|
17994
|
+
FUELS: "0.100.5"
|
17895
17995
|
};
|
17896
17996
|
}
|
17897
17997
|
__name(getBuiltinVersions, "getBuiltinVersions");
|
@@ -18044,6 +18144,8 @@ This unreleased fuel-core build may include features and updates not yet support
|
|
18044
18144
|
ErrorCode2["FUNDS_TOO_LOW"] = "funds-too-low";
|
18045
18145
|
ErrorCode2["MAX_OUTPUTS_EXCEEDED"] = "max-outputs-exceeded";
|
18046
18146
|
ErrorCode2["ASSET_BURN_DETECTED"] = "asset-burn-detected";
|
18147
|
+
ErrorCode2["CHANGE_OUTPUT_COLLISION"] = "change-output-collision";
|
18148
|
+
ErrorCode2["DUPLICATE_CHANGE_OUTPUT_ACCOUNT"] = "duplicate-change-output-account";
|
18047
18149
|
ErrorCode2["INVALID_RECEIPT_TYPE"] = "invalid-receipt-type";
|
18048
18150
|
ErrorCode2["INVALID_WORD_LIST"] = "invalid-word-list";
|
18049
18151
|
ErrorCode2["INVALID_MNEMONIC"] = "invalid-mnemonic";
|
@@ -18053,9 +18155,12 @@ This unreleased fuel-core build may include features and updates not yet support
|
|
18053
18155
|
ErrorCode2["INVALID_PASSWORD"] = "invalid-password";
|
18054
18156
|
ErrorCode2["ACCOUNT_REQUIRED"] = "account-required";
|
18055
18157
|
ErrorCode2["UNLOCKED_WALLET_REQUIRED"] = "unlocked-wallet-required";
|
18158
|
+
ErrorCode2["NO_COINS_TO_CONSOLIDATE"] = "no-coins-to-consolidate";
|
18159
|
+
ErrorCode2["COINS_ASSET_ID_MISMATCH"] = "coins-asset-id-mismatch";
|
18056
18160
|
ErrorCode2["ASSET_NOT_FOUND"] = "asset-not-found";
|
18057
18161
|
ErrorCode2["NUMBER_TOO_BIG"] = "number-too-big";
|
18058
18162
|
ErrorCode2["ERROR_BUILDING_BLOCK_EXPLORER_URL"] = "error-building-block-explorer-url";
|
18163
|
+
ErrorCode2["RPC_CONSISTENCY"] = "rpc-consistency";
|
18059
18164
|
ErrorCode2["VITEPRESS_PLUGIN_ERROR"] = "vitepress-plugin-error";
|
18060
18165
|
ErrorCode2["SCRIPT_REVERTED"] = "script-reverted";
|
18061
18166
|
ErrorCode2["SCRIPT_RETURN_INVALID_TYPE"] = "script-return-invalid-type";
|
@@ -27014,6 +27119,83 @@ spurious results.`);
|
|
27014
27119
|
var lib_default2 = gql;
|
27015
27120
|
|
27016
27121
|
// src/providers/__generated__/operations.ts
|
27122
|
+
var InputCoinFragmentDoc = lib_default2`
|
27123
|
+
fragment InputCoinFragment on InputCoin {
|
27124
|
+
type: __typename
|
27125
|
+
utxoId
|
27126
|
+
owner
|
27127
|
+
amount
|
27128
|
+
assetId
|
27129
|
+
txPointer
|
27130
|
+
coinWitnessIndex: witnessIndex
|
27131
|
+
predicateGasUsed
|
27132
|
+
predicate
|
27133
|
+
predicateData
|
27134
|
+
}
|
27135
|
+
`;
|
27136
|
+
var InputMessageFragmentDoc = lib_default2`
|
27137
|
+
fragment InputMessageFragment on InputMessage {
|
27138
|
+
type: __typename
|
27139
|
+
sender
|
27140
|
+
recipient
|
27141
|
+
amount
|
27142
|
+
nonce
|
27143
|
+
messageWitnessIndex: witnessIndex
|
27144
|
+
predicateGasUsed
|
27145
|
+
data
|
27146
|
+
predicate
|
27147
|
+
predicateData
|
27148
|
+
}
|
27149
|
+
`;
|
27150
|
+
var InputContractFragmentDoc = lib_default2`
|
27151
|
+
fragment InputContractFragment on InputContract {
|
27152
|
+
type: __typename
|
27153
|
+
utxoId
|
27154
|
+
balanceRoot
|
27155
|
+
stateRoot
|
27156
|
+
txPointer
|
27157
|
+
contractId
|
27158
|
+
}
|
27159
|
+
`;
|
27160
|
+
var OutputCoinFragmentDoc = lib_default2`
|
27161
|
+
fragment OutputCoinFragment on CoinOutput {
|
27162
|
+
type: __typename
|
27163
|
+
to
|
27164
|
+
amount
|
27165
|
+
assetId
|
27166
|
+
}
|
27167
|
+
`;
|
27168
|
+
var OutputContractFragmentDoc = lib_default2`
|
27169
|
+
fragment OutputContractFragment on ContractOutput {
|
27170
|
+
type: __typename
|
27171
|
+
inputIndex
|
27172
|
+
balanceRoot
|
27173
|
+
stateRoot
|
27174
|
+
}
|
27175
|
+
`;
|
27176
|
+
var OutputChangeFragmentDoc = lib_default2`
|
27177
|
+
fragment OutputChangeFragment on ChangeOutput {
|
27178
|
+
type: __typename
|
27179
|
+
to
|
27180
|
+
amount
|
27181
|
+
assetId
|
27182
|
+
}
|
27183
|
+
`;
|
27184
|
+
var OutputVariableFragmentDoc = lib_default2`
|
27185
|
+
fragment OutputVariableFragment on VariableOutput {
|
27186
|
+
type: __typename
|
27187
|
+
to
|
27188
|
+
amount
|
27189
|
+
assetId
|
27190
|
+
}
|
27191
|
+
`;
|
27192
|
+
var OutputContractCreatedFragmentDoc = lib_default2`
|
27193
|
+
fragment OutputContractCreatedFragment on ContractCreated {
|
27194
|
+
type: __typename
|
27195
|
+
contract
|
27196
|
+
stateRoot
|
27197
|
+
}
|
27198
|
+
`;
|
27017
27199
|
var SubmittedStatusFragmentDoc = lib_default2`
|
27018
27200
|
fragment SubmittedStatusFragment on SubmittedStatus {
|
27019
27201
|
type: __typename
|
@@ -27142,6 +27324,87 @@ spurious results.`);
|
|
27142
27324
|
reason
|
27143
27325
|
}
|
27144
27326
|
`;
|
27327
|
+
var PreconfirmationSuccessStatusFragmentDoc = lib_default2`
|
27328
|
+
fragment PreconfirmationSuccessStatusFragment on PreconfirmationSuccessStatus {
|
27329
|
+
type: __typename
|
27330
|
+
totalGas
|
27331
|
+
totalFee
|
27332
|
+
resolvedOutputs {
|
27333
|
+
utxoId
|
27334
|
+
output {
|
27335
|
+
type: __typename
|
27336
|
+
... on CoinOutput {
|
27337
|
+
to
|
27338
|
+
amount
|
27339
|
+
assetId
|
27340
|
+
}
|
27341
|
+
... on ContractOutput {
|
27342
|
+
inputIndex
|
27343
|
+
balanceRoot
|
27344
|
+
stateRoot
|
27345
|
+
}
|
27346
|
+
... on ChangeOutput {
|
27347
|
+
to
|
27348
|
+
amount
|
27349
|
+
assetId
|
27350
|
+
}
|
27351
|
+
... on VariableOutput {
|
27352
|
+
to
|
27353
|
+
amount
|
27354
|
+
assetId
|
27355
|
+
}
|
27356
|
+
... on ContractCreated {
|
27357
|
+
contract
|
27358
|
+
stateRoot
|
27359
|
+
}
|
27360
|
+
}
|
27361
|
+
}
|
27362
|
+
preconfirmationReceipts: receipts {
|
27363
|
+
...receiptFragment
|
27364
|
+
}
|
27365
|
+
}
|
27366
|
+
${ReceiptFragmentDoc}`;
|
27367
|
+
var PreconfirmationFailureStatusFragmentDoc = lib_default2`
|
27368
|
+
fragment PreconfirmationFailureStatusFragment on PreconfirmationFailureStatus {
|
27369
|
+
type: __typename
|
27370
|
+
reason
|
27371
|
+
totalGas
|
27372
|
+
totalFee
|
27373
|
+
resolvedOutputs {
|
27374
|
+
utxoId
|
27375
|
+
output {
|
27376
|
+
type: __typename
|
27377
|
+
... on CoinOutput {
|
27378
|
+
to
|
27379
|
+
amount
|
27380
|
+
assetId
|
27381
|
+
}
|
27382
|
+
... on ContractOutput {
|
27383
|
+
inputIndex
|
27384
|
+
balanceRoot
|
27385
|
+
stateRoot
|
27386
|
+
}
|
27387
|
+
... on ChangeOutput {
|
27388
|
+
to
|
27389
|
+
amount
|
27390
|
+
assetId
|
27391
|
+
}
|
27392
|
+
... on VariableOutput {
|
27393
|
+
to
|
27394
|
+
amount
|
27395
|
+
assetId
|
27396
|
+
}
|
27397
|
+
... on ContractCreated {
|
27398
|
+
contract
|
27399
|
+
stateRoot
|
27400
|
+
}
|
27401
|
+
}
|
27402
|
+
}
|
27403
|
+
preconfirmationReceipts: receipts {
|
27404
|
+
...receiptFragment
|
27405
|
+
}
|
27406
|
+
}
|
27407
|
+
${ReceiptFragmentDoc}`;
|
27145
27408
|
var TransactionStatusSubscriptionFragmentDoc = lib_default2`
|
27146
27409
|
fragment transactionStatusSubscriptionFragment on TransactionStatus {
|
27147
27410
|
... on SubmittedStatus {
|
@@ -27162,12 +27425,20 @@ spurious results.`);
|
|
27162
27425
|
... on SqueezedOutStatus {
|
27163
27426
|
...SqueezedOutStatusFragment
|
27164
27427
|
}
|
27428
|
+
... on PreconfirmationSuccessStatus {
|
27429
|
+
...PreconfirmationSuccessStatusFragment
|
27430
|
+
}
|
27431
|
+
... on PreconfirmationFailureStatus {
|
27432
|
+
...PreconfirmationFailureStatusFragment
|
27433
|
+
}
|
27165
27434
|
}
|
27166
27435
|
${SubmittedStatusFragmentDoc}
|
27167
27436
|
${SuccessStatusWithBlockIdFragmentDoc}
|
27168
27437
|
${MalleableTransactionFieldsFragmentDoc}
|
27169
27438
|
${FailureStatusWithBlockIdFragmentDoc}
|
27170
|
-
${SqueezedOutStatusFragmentDoc}
|
27439
|
+
${SqueezedOutStatusFragmentDoc}
|
27440
|
+
${PreconfirmationSuccessStatusFragmentDoc}
|
27441
|
+
${PreconfirmationFailureStatusFragmentDoc}`;
|
27171
27442
|
var TransactionStatusFragmentDoc = lib_default2`
|
27172
27443
|
fragment transactionStatusFragment on TransactionStatus {
|
27173
27444
|
... on SubmittedStatus {
|
@@ -27219,6 +27490,23 @@ ${SqueezedOutStatusFragmentDoc}`;
|
|
27219
27490
|
}
|
27220
27491
|
}
|
27221
27492
|
${InputEstimatePredicatesFragmentDoc}`;
|
27493
|
+
var DryRunFailureAssembleTxFragmentDoc = lib_default2`
|
27494
|
+
fragment dryRunFailureAssembleTxFragment on DryRunFailureStatus {
|
27495
|
+
type: __typename
|
27496
|
+
reason
|
27497
|
+
receipts {
|
27498
|
+
...receiptFragment
|
27499
|
+
}
|
27500
|
+
}
|
27501
|
+
${ReceiptFragmentDoc}`;
|
27502
|
+
var DryRunSuccessAssembleTxFragmentDoc = lib_default2`
|
27503
|
+
fragment dryRunSuccessAssembleTxFragment on DryRunSuccessStatus {
|
27504
|
+
type: __typename
|
27505
|
+
receipts {
|
27506
|
+
...receiptFragment
|
27507
|
+
}
|
27508
|
+
}
|
27509
|
+
${ReceiptFragmentDoc}`;
|
27222
27510
|
var DryRunFailureStatusFragmentDoc = lib_default2`
|
27223
27511
|
fragment dryRunFailureStatusFragment on DryRunFailureStatus {
|
27224
27512
|
type: __typename
|
@@ -27479,6 +27767,11 @@ ${GasCostsFragmentDoc}`;
|
|
27479
27767
|
consensusParameters {
|
27480
27768
|
...consensusParametersFragment
|
27481
27769
|
}
|
27770
|
+
latestBlock {
|
27771
|
+
header {
|
27772
|
+
consensusParametersVersion
|
27773
|
+
}
|
27774
|
+
}
|
27482
27775
|
}
|
27483
27776
|
${ConsensusParametersFragmentDoc}`;
|
27484
27777
|
var ContractBalanceFragmentDoc = lib_default2`
|
@@ -27575,13 +27868,21 @@ ${NodeInfoFragmentDoc}`;
|
|
27575
27868
|
... on SqueezedOutStatus {
|
27576
27869
|
...SqueezedOutStatusFragment
|
27577
27870
|
}
|
27871
|
+
... on PreconfirmationSuccessStatus {
|
27872
|
+
...PreconfirmationSuccessStatusFragment
|
27873
|
+
}
|
27874
|
+
... on PreconfirmationFailureStatus {
|
27875
|
+
...PreconfirmationFailureStatusFragment
|
27876
|
+
}
|
27578
27877
|
}
|
27579
27878
|
}
|
27580
27879
|
}
|
27581
27880
|
${SubmittedStatusFragmentDoc}
|
27582
27881
|
${SuccessStatusWithBlockIdFragmentDoc}
|
27583
27882
|
${FailureStatusWithBlockIdFragmentDoc}
|
27584
|
-
${SqueezedOutStatusFragmentDoc}
|
27883
|
+
${SqueezedOutStatusFragmentDoc}
|
27884
|
+
${PreconfirmationSuccessStatusFragmentDoc}
|
27885
|
+
${PreconfirmationFailureStatusFragmentDoc}`;
|
27585
27886
|
var GetTransactionsDocument = lib_default2`
|
27586
27887
|
query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
|
27587
27888
|
transactions(after: $after, before: $before, first: $first, last: $last) {
|
@@ -27872,8 +28173,79 @@ ${GetMessageFragmentDoc}`;
|
|
27872
28173
|
}
|
27873
28174
|
}
|
27874
28175
|
`;
|
28176
|
+
var AssembleTxDocument = lib_default2`
|
28177
|
+
query assembleTx($tx: HexString!, $blockHorizon: U32!, $requiredBalances: [RequiredBalance!]!, $feeAddressIndex: U16!, $excludeInput: ExcludeInput, $estimatePredicates: Boolean, $reserveGas: U64) {
|
28178
|
+
assembleTx(
|
28179
|
+
tx: $tx
|
28180
|
+
blockHorizon: $blockHorizon
|
28181
|
+
requiredBalances: $requiredBalances
|
28182
|
+
feeAddressIndex: $feeAddressIndex
|
28183
|
+
excludeInput: $excludeInput
|
28184
|
+
estimatePredicates: $estimatePredicates
|
28185
|
+
reserveGas: $reserveGas
|
28186
|
+
) {
|
28187
|
+
transaction {
|
28188
|
+
id
|
28189
|
+
inputs {
|
28190
|
+
... on InputCoin {
|
28191
|
+
...InputCoinFragment
|
28192
|
+
}
|
28193
|
+
... on InputContract {
|
28194
|
+
...InputContractFragment
|
28195
|
+
}
|
28196
|
+
... on InputMessage {
|
28197
|
+
...InputMessageFragment
|
28198
|
+
}
|
28199
|
+
}
|
28200
|
+
outputs {
|
28201
|
+
... on CoinOutput {
|
28202
|
+
...OutputCoinFragment
|
28203
|
+
}
|
28204
|
+
... on ContractOutput {
|
28205
|
+
...OutputContractFragment
|
28206
|
+
}
|
28207
|
+
... on ChangeOutput {
|
28208
|
+
...OutputChangeFragment
|
28209
|
+
}
|
28210
|
+
... on VariableOutput {
|
28211
|
+
...OutputVariableFragment
|
28212
|
+
}
|
28213
|
+
... on ContractCreated {
|
28214
|
+
...OutputContractCreatedFragment
|
28215
|
+
}
|
28216
|
+
}
|
28217
|
+
policies {
|
28218
|
+
tip
|
28219
|
+
witnessLimit
|
28220
|
+
maturity
|
28221
|
+
maxFee
|
28222
|
+
}
|
28223
|
+
witnesses
|
28224
|
+
scriptGasLimit
|
28225
|
+
}
|
28226
|
+
status {
|
28227
|
+
... on DryRunFailureStatus {
|
28228
|
+
...dryRunFailureAssembleTxFragment
|
28229
|
+
}
|
28230
|
+
... on DryRunSuccessStatus {
|
28231
|
+
...dryRunSuccessAssembleTxFragment
|
28232
|
+
}
|
28233
|
+
}
|
28234
|
+
gasPrice
|
28235
|
+
}
|
28236
|
+
}
|
28237
|
+
${InputCoinFragmentDoc}
|
28238
|
+
${InputContractFragmentDoc}
|
28239
|
+
${InputMessageFragmentDoc}
|
28240
|
+
${OutputCoinFragmentDoc}
|
28241
|
+
${OutputContractFragmentDoc}
|
28242
|
+
${OutputChangeFragmentDoc}
|
28243
|
+
${OutputVariableFragmentDoc}
|
28244
|
+
${OutputContractCreatedFragmentDoc}
|
28245
|
+
${DryRunFailureAssembleTxFragmentDoc}
|
28246
|
+
${DryRunSuccessAssembleTxFragmentDoc}`;
|
27875
28247
|
var DryRunDocument = lib_default2`
|
27876
|
-
|
28248
|
+
query dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean, $gasPrice: U64) {
|
27877
28249
|
dryRun(
|
27878
28250
|
txs: $encodedTransactions
|
27879
28251
|
utxoValidation: $utxoValidation
|
@@ -27930,15 +28302,22 @@ ${GetMessageFragmentDoc}`;
|
|
27930
28302
|
}
|
27931
28303
|
`;
|
27932
28304
|
var SubmitAndAwaitStatusDocument = lib_default2`
|
27933
|
-
subscription submitAndAwaitStatus($encodedTransaction: HexString
|
27934
|
-
submitAndAwaitStatus(
|
28305
|
+
subscription submitAndAwaitStatus($encodedTransaction: HexString!, $estimatePredicates: Boolean, $includePreConfirmation: Boolean) {
|
28306
|
+
submitAndAwaitStatus(
|
28307
|
+
tx: $encodedTransaction
|
28308
|
+
estimatePredicates: $estimatePredicates
|
28309
|
+
includePreconfirmation: $includePreConfirmation
|
28310
|
+
) {
|
27935
28311
|
...transactionStatusSubscriptionFragment
|
27936
28312
|
}
|
27937
28313
|
}
|
27938
28314
|
${TransactionStatusSubscriptionFragmentDoc}`;
|
27939
28315
|
var StatusChangeDocument = lib_default2`
|
27940
|
-
subscription statusChange($transactionId: TransactionId
|
27941
|
-
statusChange(
|
28316
|
+
subscription statusChange($transactionId: TransactionId!, $includePreConfirmation: Boolean) {
|
28317
|
+
statusChange(
|
28318
|
+
id: $transactionId
|
28319
|
+
includePreconfirmation: $includePreConfirmation
|
28320
|
+
) {
|
27942
28321
|
...transactionStatusSubscriptionFragment
|
27943
28322
|
}
|
27944
28323
|
}
|
@@ -28041,6 +28420,9 @@ ${GetMessageFragmentDoc}`;
|
|
28041
28420
|
getAssetDetails(variables, options) {
|
28042
28421
|
return requester(GetAssetDetailsDocument, variables, options);
|
28043
28422
|
},
|
28423
|
+
assembleTx(variables, options) {
|
28424
|
+
return requester(AssembleTxDocument, variables, options);
|
28425
|
+
},
|
28044
28426
|
dryRun(variables, options) {
|
28045
28427
|
return requester(DryRunDocument, variables, options);
|
28046
28428
|
},
|
@@ -28069,9 +28451,67 @@ ${GetMessageFragmentDoc}`;
|
|
28069
28451
|
}
|
28070
28452
|
__name(getSdk, "getSdk");
|
28071
28453
|
|
28454
|
+
// src/providers/assemble-tx-helpers.ts
|
28455
|
+
var resolveAccountForAssembleTxParams = /* @__PURE__ */ __name((account) => {
|
28456
|
+
const assembleTxAccount = {};
|
28457
|
+
const accountIsPredicate = "bytes" in account;
|
28458
|
+
if (accountIsPredicate) {
|
28459
|
+
assembleTxAccount.predicate = {
|
28460
|
+
predicate: hexlify(account.bytes),
|
28461
|
+
predicateAddress: account.address.toB256(),
|
28462
|
+
predicateData: hexlify(account.getPredicateData())
|
28463
|
+
};
|
28464
|
+
} else {
|
28465
|
+
assembleTxAccount.address = account.address.toB256();
|
28466
|
+
}
|
28467
|
+
return assembleTxAccount;
|
28468
|
+
}, "resolveAccountForAssembleTxParams");
|
28469
|
+
var setAndValidateGasAndFeeForAssembledTx = /* @__PURE__ */ __name(async (params) => {
|
28470
|
+
const { gasPrice, transactionRequest, setGasLimit, setMaxFee, provider } = params;
|
28471
|
+
const gasLimitSpecified = isDefined(setGasLimit);
|
28472
|
+
const maxFeeSpecified = isDefined(setMaxFee);
|
28473
|
+
const isScriptTx = transactionRequest.type === TransactionType.Script;
|
28474
|
+
if (gasLimitSpecified && isScriptTx) {
|
28475
|
+
const requiredGasLimit = transactionRequest.gasLimit;
|
28476
|
+
if (bn(setGasLimit).lt(bn(requiredGasLimit))) {
|
28477
|
+
throw new FuelError(
|
28478
|
+
ErrorCode.GAS_LIMIT_TOO_LOW,
|
28479
|
+
`Gas limit '${setGasLimit}' is lower than the required: '${requiredGasLimit}'.`
|
28480
|
+
);
|
28481
|
+
}
|
28482
|
+
transactionRequest.gasLimit = bn(setGasLimit);
|
28483
|
+
}
|
28484
|
+
if (maxFeeSpecified) {
|
28485
|
+
const requiredMaxFee = transactionRequest.maxFee;
|
28486
|
+
if (bn(setMaxFee).lt(requiredMaxFee)) {
|
28487
|
+
throw new FuelError(
|
28488
|
+
ErrorCode.MAX_FEE_TOO_LOW,
|
28489
|
+
`Max fee '${setMaxFee}' is lower than the required: '${requiredMaxFee}'.`
|
28490
|
+
);
|
28491
|
+
}
|
28492
|
+
transactionRequest.maxFee = bn(setMaxFee);
|
28493
|
+
}
|
28494
|
+
if (gasLimitSpecified && !maxFeeSpecified) {
|
28495
|
+
const { maxFee: feeForGasPrice } = await provider.estimateTxGasAndFee({
|
28496
|
+
transactionRequest,
|
28497
|
+
gasPrice
|
28498
|
+
});
|
28499
|
+
transactionRequest.maxFee = feeForGasPrice;
|
28500
|
+
}
|
28501
|
+
return transactionRequest;
|
28502
|
+
}, "setAndValidateGasAndFeeForAssembledTx");
|
28503
|
+
|
28072
28504
|
// src/providers/utils/handle-gql-error-message.ts
|
28505
|
+
var gqlErrorMessage = {
|
28506
|
+
RPC_CONSISTENCY: /The required fuel block height is higher than the current block height. Required: \d+, Current: \d+/,
|
28507
|
+
NOT_ENOUGH_COINS_MAX_COINS: /the target cannot be met due to no coins available or exceeding the \d+ coin limit./,
|
28508
|
+
ASSET_NOT_FOUND: /resource was not found in table/,
|
28509
|
+
MULTIPLE_CHANGE_POLICIES: /The asset ([a-fA-F0-9]{64}) has multiple change policies/,
|
28510
|
+
DUPLICATE_CHANGE_OUTPUT_ACCOUNT: /required balances contain duplicate \(asset, account\) pair/,
|
28511
|
+
INSUFFICIENT_FEE_AMOUNT: /InsufficientFeeAmount { expected: (\d+), provided: (\d+) }/
|
28512
|
+
};
|
28073
28513
|
var mapGqlErrorMessage = /* @__PURE__ */ __name((error2) => {
|
28074
|
-
if (
|
28514
|
+
if (gqlErrorMessage.NOT_ENOUGH_COINS_MAX_COINS.test(error2.message)) {
|
28075
28515
|
return new FuelError(
|
28076
28516
|
ErrorCode.INSUFFICIENT_FUNDS_OR_MAX_COINS,
|
28077
28517
|
`Insufficient funds or too many small value coins. Consider combining UTXOs.`,
|
@@ -28079,7 +28519,25 @@ ${GetMessageFragmentDoc}`;
|
|
28079
28519
|
error2
|
28080
28520
|
);
|
28081
28521
|
}
|
28082
|
-
if (
|
28522
|
+
if (gqlErrorMessage.MULTIPLE_CHANGE_POLICIES.test(error2.message)) {
|
28523
|
+
const match = error2.message.match(/asset ([a-fA-F0-9]{64})/);
|
28524
|
+
const assetId = match?.[1] || "";
|
28525
|
+
return new FuelError(
|
28526
|
+
ErrorCode.CHANGE_OUTPUT_COLLISION,
|
28527
|
+
`OutputChange address for asset 0x${assetId} differs between transaction request and assembleTx parameters.`,
|
28528
|
+
{},
|
28529
|
+
error2
|
28530
|
+
);
|
28531
|
+
}
|
28532
|
+
if (gqlErrorMessage.DUPLICATE_CHANGE_OUTPUT_ACCOUNT.test(error2.message)) {
|
28533
|
+
return new FuelError(
|
28534
|
+
ErrorCode.DUPLICATE_CHANGE_OUTPUT_ACCOUNT,
|
28535
|
+
`The parameter 'accountCoinQuantities' of assembleTx contains duplicate entries for the same assetId with different 'changeOutputAccount'.`,
|
28536
|
+
{},
|
28537
|
+
error2
|
28538
|
+
);
|
28539
|
+
}
|
28540
|
+
if (gqlErrorMessage.ASSET_NOT_FOUND.test(error2.message)) {
|
28083
28541
|
return new FuelError(
|
28084
28542
|
ErrorCode.ASSET_NOT_FOUND,
|
28085
28543
|
`Asset not found for given asset id.`,
|
@@ -28087,6 +28545,13 @@ ${GetMessageFragmentDoc}`;
|
|
28087
28545
|
error2
|
28088
28546
|
);
|
28089
28547
|
}
|
28548
|
+
if (gqlErrorMessage.RPC_CONSISTENCY.test(error2.message)) {
|
28549
|
+
return new FuelError(ErrorCode.RPC_CONSISTENCY, error2.message, {}, error2);
|
28550
|
+
}
|
28551
|
+
if (gqlErrorMessage.INSUFFICIENT_FEE_AMOUNT.test(error2.message)) {
|
28552
|
+
const match = error2.message.match(gqlErrorMessage.INSUFFICIENT_FEE_AMOUNT);
|
28553
|
+
return new FuelError(ErrorCode.FUNDS_TOO_LOW, match?.[0] || error2.message, {}, error2);
|
28554
|
+
}
|
28090
28555
|
return new FuelError(ErrorCode.INVALID_REQUEST, error2.message, {}, error2);
|
28091
28556
|
}, "mapGqlErrorMessage");
|
28092
28557
|
var mapGqlErrorWithIncompatibleNodeVersion = /* @__PURE__ */ __name((error2, incompatibleNodeVersionMessage) => {
|
@@ -28119,8 +28584,9 @@ ${incompatibleNodeVersionMessage}`,
|
|
28119
28584
|
|
28120
28585
|
// src/providers/fuel-graphql-subscriber.ts
|
28121
28586
|
var FuelGraphqlSubscriber = class _FuelGraphqlSubscriber {
|
28122
|
-
constructor(stream) {
|
28587
|
+
constructor(stream, onEvent) {
|
28123
28588
|
this.stream = stream;
|
28589
|
+
this.onEvent = onEvent;
|
28124
28590
|
}
|
28125
28591
|
static {
|
28126
28592
|
__name(this, "FuelGraphqlSubscriber");
|
@@ -28128,12 +28594,13 @@ ${incompatibleNodeVersionMessage}`,
|
|
28128
28594
|
static incompatibleNodeVersionMessage = false;
|
28129
28595
|
static textDecoder = new TextDecoder();
|
28130
28596
|
static async create(options) {
|
28131
|
-
const { url, query, variables, fetchFn } = options;
|
28597
|
+
const { url, query, variables, fetchFn, operationName, onEvent } = options;
|
28132
28598
|
const response = await fetchFn(`${url}-sub`, {
|
28133
28599
|
method: "POST",
|
28134
28600
|
body: JSON.stringify({
|
28135
28601
|
query: print(query),
|
28136
|
-
variables
|
28602
|
+
variables,
|
28603
|
+
operationName
|
28137
28604
|
}),
|
28138
28605
|
headers: {
|
28139
28606
|
"Content-Type": "application/json",
|
@@ -28142,39 +28609,71 @@ ${incompatibleNodeVersionMessage}`,
|
|
28142
28609
|
});
|
28143
28610
|
const [errorReader, resultReader] = response.body.tee().map((stream) => stream.getReader());
|
28144
28611
|
await new _FuelGraphqlSubscriber(errorReader).next();
|
28145
|
-
return new _FuelGraphqlSubscriber(resultReader);
|
28612
|
+
return new _FuelGraphqlSubscriber(resultReader, onEvent);
|
28146
28613
|
}
|
28147
|
-
|
28148
|
-
|
28149
|
-
|
28614
|
+
/**
|
28615
|
+
* This method will take a stream reader and parse the event from the stream.
|
28616
|
+
*
|
28617
|
+
* @param reader - The reader of the SSE stream
|
28618
|
+
* @param parsingLeftover - The leftover string from parsing the previous event
|
28619
|
+
* @returns The event parsed as a full GraphQL response, whether the stream is done and the leftover string after parsing
|
28620
|
+
*/
|
28621
|
+
static async readEvent(reader, parsingLeftover = "") {
|
28622
|
+
let text = parsingLeftover;
|
28623
|
+
const regex = /data:.*\n\n/g;
|
28150
28624
|
while (true) {
|
28151
|
-
if (this.events.length > 0) {
|
28152
|
-
const { data, errors: errors2 } = this.events.shift();
|
28153
|
-
assertGqlResponseHasNoErrors(errors2, _FuelGraphqlSubscriber.incompatibleNodeVersionMessage);
|
28154
|
-
return { value: data, done: false };
|
28155
|
-
}
|
28156
|
-
const { value, done } = await this.stream.read();
|
28157
|
-
if (done) {
|
28158
|
-
return { value, done };
|
28159
|
-
}
|
28160
|
-
const decoded = _FuelGraphqlSubscriber.textDecoder.decode(value).replace(":keep-alive-text\n\n", "");
|
28161
|
-
if (decoded === "") {
|
28162
|
-
continue;
|
28163
|
-
}
|
28164
|
-
const text = `${this.parsingLeftover}${decoded}`;
|
28165
|
-
const regex = /data:.*\n\n/g;
|
28166
28625
|
const matches = [...text.matchAll(regex)].flatMap((match) => match);
|
28167
|
-
matches.
|
28626
|
+
if (matches.length > 0) {
|
28168
28627
|
try {
|
28169
|
-
|
28628
|
+
const event = JSON.parse(matches[0].replace(/^data:/, ""));
|
28629
|
+
return {
|
28630
|
+
event,
|
28631
|
+
done: false,
|
28632
|
+
parsingLeftover: text.replace(matches[0], "")
|
28633
|
+
};
|
28170
28634
|
} catch (e) {
|
28171
28635
|
throw new FuelError(
|
28172
28636
|
ErrorCode.STREAM_PARSING_ERROR,
|
28173
28637
|
`Error while parsing stream data response: ${text}`
|
28174
28638
|
);
|
28175
28639
|
}
|
28176
|
-
}
|
28177
|
-
|
28640
|
+
}
|
28641
|
+
const { value, done } = await reader.read();
|
28642
|
+
if (done) {
|
28643
|
+
return { event: void 0, done, parsingLeftover: "" };
|
28644
|
+
}
|
28645
|
+
const decoded = _FuelGraphqlSubscriber.textDecoder.decode(value).replace(":keep-alive-text\n\n", "");
|
28646
|
+
text += decoded;
|
28647
|
+
}
|
28648
|
+
}
|
28649
|
+
events = [];
|
28650
|
+
parsingLeftover = "";
|
28651
|
+
/**
|
28652
|
+
* Gets automatically called when iterating in a `for-await-of` loop.
|
28653
|
+
* It can also be called manually.
|
28654
|
+
*
|
28655
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next
|
28656
|
+
*/
|
28657
|
+
async next() {
|
28658
|
+
while (true) {
|
28659
|
+
const nextEvent = this.events.shift();
|
28660
|
+
if (nextEvent) {
|
28661
|
+
this.onEvent?.(nextEvent);
|
28662
|
+
assertGqlResponseHasNoErrors(
|
28663
|
+
nextEvent.errors,
|
28664
|
+
_FuelGraphqlSubscriber.incompatibleNodeVersionMessage
|
28665
|
+
);
|
28666
|
+
return { value: nextEvent.data, done: false };
|
28667
|
+
}
|
28668
|
+
const { event, done, parsingLeftover } = await _FuelGraphqlSubscriber.readEvent(
|
28669
|
+
this.stream,
|
28670
|
+
this.parsingLeftover
|
28671
|
+
);
|
28672
|
+
this.parsingLeftover = parsingLeftover;
|
28673
|
+
if (done) {
|
28674
|
+
return { value: void 0, done: true };
|
28675
|
+
}
|
28676
|
+
this.events.push(event);
|
28178
28677
|
}
|
28179
28678
|
}
|
28180
28679
|
/**
|
@@ -28220,7 +28719,7 @@ ${incompatibleNodeVersionMessage}`,
|
|
28220
28719
|
case InputType.Contract: {
|
28221
28720
|
return {
|
28222
28721
|
type: InputType.Contract,
|
28223
|
-
txID: ZeroBytes32,
|
28722
|
+
txID: hexlify(value.txID || ZeroBytes32),
|
28224
28723
|
outputIndex: 0,
|
28225
28724
|
balanceRoot: ZeroBytes32,
|
28226
28725
|
stateRoot: ZeroBytes32,
|
@@ -28291,9 +28790,9 @@ ${incompatibleNodeVersionMessage}`,
|
|
28291
28790
|
case OutputType.Variable: {
|
28292
28791
|
return {
|
28293
28792
|
type: OutputType.Variable,
|
28294
|
-
to: ZeroBytes32,
|
28295
|
-
amount: bn(
|
28296
|
-
assetId: ZeroBytes32
|
28793
|
+
to: hexlify(value.to || ZeroBytes32),
|
28794
|
+
amount: bn(value.amount),
|
28795
|
+
assetId: hexlify(value.assetId || ZeroBytes32)
|
28297
28796
|
};
|
28298
28797
|
}
|
28299
28798
|
case OutputType.ContractCreated: {
|
@@ -28340,6 +28839,7 @@ ${incompatibleNodeVersionMessage}`,
|
|
28340
28839
|
"BlobIdAlreadyUploaded",
|
28341
28840
|
"BlobNotFound",
|
28342
28841
|
"BytecodeAlreadyUploaded",
|
28842
|
+
"CanNotGetGasPriceInPredicate",
|
28343
28843
|
"ContractIdAlreadyDeployed",
|
28344
28844
|
"ContractInstructionNotAllowed",
|
28345
28845
|
"ContractMaxSize",
|
@@ -28363,6 +28863,7 @@ ${incompatibleNodeVersionMessage}`,
|
|
28363
28863
|
"InvalidImmediateValue",
|
28364
28864
|
"InvalidInstruction",
|
28365
28865
|
"InvalidMetadataIdentifier",
|
28866
|
+
"InvalidUpgradePurposeType",
|
28366
28867
|
"MalformedCallStructure",
|
28367
28868
|
"MaxStaticContractsReached",
|
28368
28869
|
"MemoryGrowthOverlap",
|
@@ -28379,8 +28880,10 @@ ${incompatibleNodeVersionMessage}`,
|
|
28379
28880
|
"PolicyIsNotSet",
|
28380
28881
|
"PolicyNotFound",
|
28381
28882
|
"PredicateReturnedNonOne",
|
28883
|
+
"ProofInUploadNotFound",
|
28382
28884
|
"ReservedRegisterNotWritable",
|
28383
28885
|
"Revert",
|
28886
|
+
"StorageSlotsNotFound",
|
28384
28887
|
"ThePartIsNotSequentiallyConnected",
|
28385
28888
|
"TooManyReceipts",
|
28386
28889
|
"TooManySlots",
|
@@ -28399,7 +28902,7 @@ ${incompatibleNodeVersionMessage}`,
|
|
28399
28902
|
|
28400
28903
|
// src/providers/utils/serialization.ts
|
28401
28904
|
var deserializeChain = /* @__PURE__ */ __name((chain) => {
|
28402
|
-
const { name, daHeight, consensusParameters } = chain;
|
28905
|
+
const { name, daHeight, consensusParameters, latestBlock } = chain;
|
28403
28906
|
const {
|
28404
28907
|
contractParams,
|
28405
28908
|
feeParams,
|
@@ -28450,11 +28953,12 @@ ${incompatibleNodeVersionMessage}`,
|
|
28450
28953
|
maxScriptDataLength: bn(scriptParams.maxScriptDataLength)
|
28451
28954
|
},
|
28452
28955
|
gasCosts
|
28453
|
-
}
|
28956
|
+
},
|
28957
|
+
latestBlock
|
28454
28958
|
};
|
28455
28959
|
}, "deserializeChain");
|
28456
28960
|
var serializeChain = /* @__PURE__ */ __name((chain) => {
|
28457
|
-
const { name, baseChainHeight, consensusParameters } = chain;
|
28961
|
+
const { name, baseChainHeight, consensusParameters, latestBlock } = chain;
|
28458
28962
|
const {
|
28459
28963
|
contractParameters,
|
28460
28964
|
feeParameters,
|
@@ -28505,7 +29009,8 @@ ${incompatibleNodeVersionMessage}`,
|
|
28505
29009
|
maxScriptDataLength: scriptParameters.maxScriptDataLength.toString()
|
28506
29010
|
},
|
28507
29011
|
gasCosts
|
28508
|
-
}
|
29012
|
+
},
|
29013
|
+
latestBlock
|
28509
29014
|
};
|
28510
29015
|
}, "serializeChain");
|
28511
29016
|
var deserializeNodeInfo = /* @__PURE__ */ __name((nodeInfo) => {
|
@@ -28734,10 +29239,145 @@ ${incompatibleNodeVersionMessage}`,
|
|
28734
29239
|
throw new FuelError(ErrorCode.INVALID_RECEIPT_TYPE, `Invalid receipt type: ${receiptType}.`);
|
28735
29240
|
}
|
28736
29241
|
}, "deserializeReceipt");
|
28737
|
-
|
28738
|
-
|
28739
|
-
|
28740
|
-
|
29242
|
+
var deserializeInput = /* @__PURE__ */ __name((input) => {
|
29243
|
+
let parsedInput;
|
29244
|
+
switch (input.type) {
|
29245
|
+
case "InputCoin":
|
29246
|
+
parsedInput = {
|
29247
|
+
type: InputType.Coin,
|
29248
|
+
id: input.utxoId,
|
29249
|
+
amount: bn(input.amount),
|
29250
|
+
assetId: input.assetId,
|
29251
|
+
owner: input.owner,
|
29252
|
+
txPointer: `0x${input.txPointer}`,
|
29253
|
+
witnessIndex: Number(input.coinWitnessIndex),
|
29254
|
+
predicate: input.predicate,
|
29255
|
+
predicateData: input.predicateData,
|
29256
|
+
predicateGasUsed: bn(input.predicateGasUsed)
|
29257
|
+
};
|
29258
|
+
break;
|
29259
|
+
case "InputMessage":
|
29260
|
+
parsedInput = {
|
29261
|
+
type: InputType.Message,
|
29262
|
+
nonce: input.nonce,
|
29263
|
+
amount: bn(input.amount),
|
29264
|
+
recipient: input.recipient,
|
29265
|
+
sender: input.sender,
|
29266
|
+
data: input.data,
|
29267
|
+
witnessIndex: Number(input.messageWitnessIndex),
|
29268
|
+
predicate: input.predicate,
|
29269
|
+
predicateData: input.predicateData,
|
29270
|
+
predicateGasUsed: bn(input.predicateGasUsed)
|
29271
|
+
};
|
29272
|
+
break;
|
29273
|
+
case "InputContract":
|
29274
|
+
parsedInput = {
|
29275
|
+
type: InputType.Contract,
|
29276
|
+
contractId: input.contractId,
|
29277
|
+
txPointer: `0x${input.txPointer}`,
|
29278
|
+
txID: hexlify(arrayify(input.utxoId).slice(0, 32))
|
29279
|
+
};
|
29280
|
+
break;
|
29281
|
+
default:
|
29282
|
+
assertUnreachable(input);
|
29283
|
+
}
|
29284
|
+
return parsedInput;
|
29285
|
+
}, "deserializeInput");
|
29286
|
+
var deserializeOutput = /* @__PURE__ */ __name((output) => {
|
29287
|
+
let parsedOutput;
|
29288
|
+
switch (output.type) {
|
29289
|
+
case "CoinOutput":
|
29290
|
+
parsedOutput = {
|
29291
|
+
type: OutputType.Coin,
|
29292
|
+
amount: bn(output.amount),
|
29293
|
+
assetId: output.assetId,
|
29294
|
+
to: output.to
|
29295
|
+
};
|
29296
|
+
break;
|
29297
|
+
case "ContractOutput":
|
29298
|
+
parsedOutput = {
|
29299
|
+
type: OutputType.Contract,
|
29300
|
+
inputIndex: Number(output.inputIndex)
|
29301
|
+
};
|
29302
|
+
break;
|
29303
|
+
case "ChangeOutput":
|
29304
|
+
parsedOutput = {
|
29305
|
+
type: OutputType.Change,
|
29306
|
+
assetId: output.assetId,
|
29307
|
+
to: output.to
|
29308
|
+
};
|
29309
|
+
break;
|
29310
|
+
case "ContractCreated":
|
29311
|
+
parsedOutput = {
|
29312
|
+
type: OutputType.ContractCreated,
|
29313
|
+
stateRoot: output.stateRoot,
|
29314
|
+
contractId: output.contract
|
29315
|
+
};
|
29316
|
+
break;
|
29317
|
+
case "VariableOutput":
|
29318
|
+
parsedOutput = {
|
29319
|
+
type: OutputType.Variable,
|
29320
|
+
amount: bn(output.amount),
|
29321
|
+
assetId: output.assetId,
|
29322
|
+
to: output.to
|
29323
|
+
};
|
29324
|
+
break;
|
29325
|
+
default:
|
29326
|
+
assertUnreachable(output);
|
29327
|
+
}
|
29328
|
+
return parsedOutput;
|
29329
|
+
}, "deserializeOutput");
|
29330
|
+
var deserializeProcessedTxOutput = /* @__PURE__ */ __name((output) => {
|
29331
|
+
let parsedOutput;
|
29332
|
+
switch (output.type) {
|
29333
|
+
case "CoinOutput":
|
29334
|
+
parsedOutput = {
|
29335
|
+
type: OutputType.Coin,
|
29336
|
+
amount: bn(output.amount),
|
29337
|
+
assetId: output.assetId,
|
29338
|
+
to: output.to
|
29339
|
+
};
|
29340
|
+
break;
|
29341
|
+
case "ContractOutput":
|
29342
|
+
parsedOutput = {
|
29343
|
+
type: OutputType.Contract,
|
29344
|
+
inputIndex: Number(output.inputIndex),
|
29345
|
+
balanceRoot: output.balanceRoot,
|
29346
|
+
stateRoot: output.stateRoot
|
29347
|
+
};
|
29348
|
+
break;
|
29349
|
+
case "ChangeOutput":
|
29350
|
+
parsedOutput = {
|
29351
|
+
type: OutputType.Change,
|
29352
|
+
assetId: output.assetId,
|
29353
|
+
to: output.to,
|
29354
|
+
amount: bn(output.amount)
|
29355
|
+
};
|
29356
|
+
break;
|
29357
|
+
case "ContractCreated":
|
29358
|
+
parsedOutput = {
|
29359
|
+
type: OutputType.ContractCreated,
|
29360
|
+
stateRoot: output.stateRoot,
|
29361
|
+
contractId: output.contract
|
29362
|
+
};
|
29363
|
+
break;
|
29364
|
+
case "VariableOutput":
|
29365
|
+
parsedOutput = {
|
29366
|
+
type: OutputType.Variable,
|
29367
|
+
amount: bn(output.amount),
|
29368
|
+
assetId: output.assetId,
|
29369
|
+
to: output.to
|
29370
|
+
};
|
29371
|
+
break;
|
29372
|
+
default:
|
29373
|
+
assertUnreachable(output);
|
29374
|
+
}
|
29375
|
+
return parsedOutput;
|
29376
|
+
}, "deserializeProcessedTxOutput");
|
29377
|
+
|
29378
|
+
// src/providers/utils/receipts.ts
|
29379
|
+
var doesReceiptHaveMissingOutputVariables = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType.Revert && receipt.val.toString("hex") === FAILED_TRANSFER_TO_ADDRESS_SIGNAL, "doesReceiptHaveMissingOutputVariables");
|
29380
|
+
var doesReceiptHaveMissingContractId = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType.Panic && receipt.contractId !== "0x0000000000000000000000000000000000000000000000000000000000000000", "doesReceiptHaveMissingContractId");
|
28741
29381
|
var getReceiptsWithMissingData = /* @__PURE__ */ __name((receipts) => receipts.reduce(
|
28742
29382
|
(memo, receipt) => {
|
28743
29383
|
if (doesReceiptHaveMissingOutputVariables(receipt)) {
|
@@ -29076,6 +29716,21 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
29076
29716
|
return assembleRevertError(receipts, logs, metadata);
|
29077
29717
|
}, "extractTxError");
|
29078
29718
|
|
29719
|
+
// src/providers/utils/merge-quantities.ts
|
29720
|
+
var mergeQuantities = /* @__PURE__ */ __name((...coinQuantities) => {
|
29721
|
+
const resultMap = {};
|
29722
|
+
function addToMap({ amount, assetId }) {
|
29723
|
+
if (resultMap[assetId]) {
|
29724
|
+
resultMap[assetId] = resultMap[assetId].add(amount);
|
29725
|
+
} else {
|
29726
|
+
resultMap[assetId] = amount;
|
29727
|
+
}
|
29728
|
+
}
|
29729
|
+
__name(addToMap, "addToMap");
|
29730
|
+
coinQuantities.forEach((arr) => arr.forEach(addToMap));
|
29731
|
+
return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
|
29732
|
+
}, "mergeQuantities");
|
29733
|
+
|
29079
29734
|
// src/providers/transaction-request/errors.ts
|
29080
29735
|
var ChangeOutputCollisionError = class extends Error {
|
29081
29736
|
static {
|
@@ -29211,8 +29866,6 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
29211
29866
|
/** List of witnesses */
|
29212
29867
|
witnesses = [];
|
29213
29868
|
/**
|
29214
|
-
* @hidden
|
29215
|
-
*
|
29216
29869
|
* The current status of the transaction
|
29217
29870
|
*/
|
29218
29871
|
flag = { state: void 0, transactionId: void 0, summary: void 0 };
|
@@ -29229,7 +29882,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
29229
29882
|
witnessLimit,
|
29230
29883
|
inputs,
|
29231
29884
|
outputs,
|
29232
|
-
witnesses
|
29885
|
+
witnesses,
|
29886
|
+
flag
|
29233
29887
|
} = {}) {
|
29234
29888
|
this.tip = tip ? bn(tip) : void 0;
|
29235
29889
|
this.maturity = maturity && maturity > 0 ? maturity : void 0;
|
@@ -29239,6 +29893,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
29239
29893
|
this.inputs = inputs ?? [];
|
29240
29894
|
this.outputs = outputs ?? [];
|
29241
29895
|
this.witnesses = witnesses ?? [];
|
29896
|
+
this.flag = flag ?? { state: void 0, transactionId: void 0, summary: void 0 };
|
29242
29897
|
}
|
29243
29898
|
static getPolicyMeta(req) {
|
29244
29899
|
let policyTypes = 0;
|
@@ -30027,6 +30682,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
30027
30682
|
* @param account - The account to fund the transaction.
|
30028
30683
|
* @param params - The parameters for the transaction cost.
|
30029
30684
|
* @returns The current instance of the `ScriptTransactionRequest` funded.
|
30685
|
+
*
|
30686
|
+
* @deprecated Use `provider.assembleTx` instead.
|
30687
|
+
* Check the migration guide https://docs.fuel.network/guide/assembling-transactions/migration-guide.html for more information.
|
30030
30688
|
*/
|
30031
30689
|
async estimateAndFund(account, { signatureCallback, quantities = [] } = {}) {
|
30032
30690
|
const txCost = await account.getTransactionCost(this, { signatureCallback, quantities });
|
@@ -30110,6 +30768,21 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
30110
30768
|
}
|
30111
30769
|
return this.outputs.length - 1;
|
30112
30770
|
}
|
30771
|
+
/**
|
30772
|
+
* Adds a variable output to the transaction request.
|
30773
|
+
*
|
30774
|
+
* @param to - The recipient address as a BytesLike object. Defaults to ZeroBytes32 if not provided.
|
30775
|
+
* @param amount - The amount to be transferred as a BigNumberish object. Defaults to 0 if not provided.
|
30776
|
+
* @param assetId - The asset ID as a BytesLike object. Defaults to ZeroBytes32 if not provided.
|
30777
|
+
*/
|
30778
|
+
addVariableOutput(to, amount, assetId) {
|
30779
|
+
this.pushOutput({
|
30780
|
+
type: OutputType.Variable,
|
30781
|
+
to,
|
30782
|
+
amount,
|
30783
|
+
assetId
|
30784
|
+
});
|
30785
|
+
}
|
30113
30786
|
/**
|
30114
30787
|
* Calculates the maximum gas for the transaction.
|
30115
30788
|
*
|
@@ -30780,6 +31453,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
30780
31453
|
TransactionStatus2["success"] = "success";
|
30781
31454
|
TransactionStatus2["squeezedout"] = "squeezedout";
|
30782
31455
|
TransactionStatus2["failure"] = "failure";
|
31456
|
+
TransactionStatus2["preconfirmationSuccess"] = "preconfirmationSuccess";
|
31457
|
+
TransactionStatus2["preconfirmationFailure"] = "preconfirmationFailure";
|
30783
31458
|
return TransactionStatus2;
|
30784
31459
|
})(TransactionStatus || {});
|
30785
31460
|
var OperationName = /* @__PURE__ */ ((OperationName2) => {
|
@@ -31246,6 +31921,10 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31246
31921
|
return "submitted" /* submitted */;
|
31247
31922
|
case "SqueezedOutStatus":
|
31248
31923
|
return "squeezedout" /* squeezedout */;
|
31924
|
+
case "PreconfirmationSuccessStatus":
|
31925
|
+
return "preconfirmationSuccess" /* preconfirmationSuccess */;
|
31926
|
+
case "PreconfirmationFailureStatus":
|
31927
|
+
return "preconfirmationFailure" /* preconfirmationFailure */;
|
31249
31928
|
default:
|
31250
31929
|
throw new FuelError(
|
31251
31930
|
ErrorCode.INVALID_TRANSACTION_STATUS,
|
@@ -31253,15 +31932,30 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31253
31932
|
);
|
31254
31933
|
}
|
31255
31934
|
}, "getTransactionStatusName");
|
31935
|
+
var extractResolvedOutputs = /* @__PURE__ */ __name((serializedOutputs) => {
|
31936
|
+
const resolvedOutputs = [];
|
31937
|
+
serializedOutputs?.forEach(
|
31938
|
+
({ utxoId, output }) => resolvedOutputs.push({
|
31939
|
+
utxoId,
|
31940
|
+
output: deserializeProcessedTxOutput(output)
|
31941
|
+
})
|
31942
|
+
);
|
31943
|
+
return resolvedOutputs;
|
31944
|
+
}, "extractResolvedOutputs");
|
31256
31945
|
var processGraphqlStatus = /* @__PURE__ */ __name((gqlTransactionStatus) => {
|
31257
31946
|
let time;
|
31258
31947
|
let blockId;
|
31259
31948
|
let status;
|
31260
31949
|
let totalFee;
|
31261
31950
|
let totalGas;
|
31951
|
+
let receipts;
|
31952
|
+
let resolvedOutputs = [];
|
31953
|
+
let errorReason;
|
31262
31954
|
let isStatusFailure = false;
|
31263
31955
|
let isStatusSuccess = false;
|
31264
31956
|
let isStatusPending = false;
|
31957
|
+
let isStatusPreConfirmationSuccess = false;
|
31958
|
+
let isStatusPreConfirmationFailure = false;
|
31265
31959
|
if (gqlTransactionStatus?.type) {
|
31266
31960
|
status = getTransactionStatusName(gqlTransactionStatus.type);
|
31267
31961
|
switch (gqlTransactionStatus.type) {
|
@@ -31269,6 +31963,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31269
31963
|
time = gqlTransactionStatus.time;
|
31270
31964
|
blockId = gqlTransactionStatus.block?.id;
|
31271
31965
|
isStatusSuccess = true;
|
31966
|
+
receipts = gqlTransactionStatus.receipts?.map(deserializeReceipt);
|
31272
31967
|
totalFee = bn(gqlTransactionStatus.totalFee);
|
31273
31968
|
totalGas = bn(gqlTransactionStatus.totalGas);
|
31274
31969
|
break;
|
@@ -31277,12 +31972,28 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31277
31972
|
blockId = gqlTransactionStatus.block?.id;
|
31278
31973
|
isStatusFailure = true;
|
31279
31974
|
totalFee = bn(gqlTransactionStatus.totalFee);
|
31975
|
+
receipts = gqlTransactionStatus.receipts?.map(deserializeReceipt);
|
31280
31976
|
totalGas = bn(gqlTransactionStatus.totalGas);
|
31281
31977
|
break;
|
31282
31978
|
case "SubmittedStatus":
|
31283
31979
|
time = gqlTransactionStatus.time;
|
31284
31980
|
isStatusPending = true;
|
31285
31981
|
break;
|
31982
|
+
case "PreconfirmationSuccessStatus":
|
31983
|
+
isStatusPreConfirmationSuccess = true;
|
31984
|
+
totalFee = bn(gqlTransactionStatus.totalFee);
|
31985
|
+
totalGas = bn(gqlTransactionStatus.totalGas);
|
31986
|
+
receipts = gqlTransactionStatus.preconfirmationReceipts?.map(deserializeReceipt);
|
31987
|
+
resolvedOutputs = extractResolvedOutputs(gqlTransactionStatus.resolvedOutputs);
|
31988
|
+
break;
|
31989
|
+
case "PreconfirmationFailureStatus":
|
31990
|
+
isStatusPreConfirmationFailure = true;
|
31991
|
+
totalFee = bn(gqlTransactionStatus.totalFee);
|
31992
|
+
totalGas = bn(gqlTransactionStatus.totalGas);
|
31993
|
+
receipts = gqlTransactionStatus.preconfirmationReceipts?.map(deserializeReceipt);
|
31994
|
+
resolvedOutputs = extractResolvedOutputs(gqlTransactionStatus.resolvedOutputs);
|
31995
|
+
errorReason = gqlTransactionStatus.reason;
|
31996
|
+
break;
|
31286
31997
|
default:
|
31287
31998
|
}
|
31288
31999
|
}
|
@@ -31292,9 +32003,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31292
32003
|
status,
|
31293
32004
|
totalFee,
|
31294
32005
|
totalGas,
|
32006
|
+
receipts,
|
31295
32007
|
isStatusFailure,
|
31296
32008
|
isStatusSuccess,
|
31297
|
-
isStatusPending
|
32009
|
+
isStatusPending,
|
32010
|
+
isStatusPreConfirmationSuccess,
|
32011
|
+
isStatusPreConfirmationFailure,
|
32012
|
+
resolvedOutputs,
|
32013
|
+
errorReason
|
31298
32014
|
};
|
31299
32015
|
return processedGraphqlStatus;
|
31300
32016
|
}, "processGraphqlStatus");
|
@@ -31379,6 +32095,81 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31379
32095
|
return transactionSummary;
|
31380
32096
|
}
|
31381
32097
|
__name(assembleTransactionSummary, "assembleTransactionSummary");
|
32098
|
+
function assemblePreConfirmationTransactionSummary(params) {
|
32099
|
+
const { id, gqlTransactionStatus, transactionRequest, baseAssetId, maxInputs, abiMap } = params;
|
32100
|
+
let type3;
|
32101
|
+
let operations;
|
32102
|
+
let gasUsed;
|
32103
|
+
let tip;
|
32104
|
+
let transaction;
|
32105
|
+
let mintedAssets;
|
32106
|
+
let burnedAssets;
|
32107
|
+
const {
|
32108
|
+
isStatusFailure,
|
32109
|
+
isStatusSuccess,
|
32110
|
+
isStatusPending,
|
32111
|
+
status,
|
32112
|
+
receipts,
|
32113
|
+
resolvedOutputs,
|
32114
|
+
errorReason,
|
32115
|
+
totalFee,
|
32116
|
+
isStatusPreConfirmationFailure,
|
32117
|
+
isStatusPreConfirmationSuccess
|
32118
|
+
} = processGraphqlStatus(gqlTransactionStatus);
|
32119
|
+
if (receipts) {
|
32120
|
+
gasUsed = getGasUsedFromReceipts(receipts);
|
32121
|
+
mintedAssets = extractMintedAssetsFromReceipts(receipts);
|
32122
|
+
burnedAssets = extractBurnedAssetsFromReceipts(receipts);
|
32123
|
+
}
|
32124
|
+
if (transactionRequest) {
|
32125
|
+
transaction = transactionRequest.toTransaction();
|
32126
|
+
type3 = getTransactionTypeName(transaction.type);
|
32127
|
+
tip = bn(transaction.policies?.find((policy) => policy.type === PolicyType.Tip)?.data);
|
32128
|
+
if (receipts) {
|
32129
|
+
const rawPayload = hexlify(new TransactionCoder().encode(transaction));
|
32130
|
+
operations = getOperations({
|
32131
|
+
transactionType: transaction.type,
|
32132
|
+
inputs: transaction.inputs || [],
|
32133
|
+
outputs: transaction.outputs || [],
|
32134
|
+
receipts,
|
32135
|
+
rawPayload,
|
32136
|
+
abiMap,
|
32137
|
+
maxInputs,
|
32138
|
+
baseAssetId
|
32139
|
+
});
|
32140
|
+
}
|
32141
|
+
}
|
32142
|
+
const transactionSummary = {
|
32143
|
+
id,
|
32144
|
+
fee: totalFee,
|
32145
|
+
type: type3,
|
32146
|
+
status,
|
32147
|
+
receipts,
|
32148
|
+
gasUsed,
|
32149
|
+
tip,
|
32150
|
+
isStatusPreConfirmationFailure,
|
32151
|
+
isStatusPreConfirmationSuccess,
|
32152
|
+
isStatusFailure,
|
32153
|
+
isStatusSuccess,
|
32154
|
+
isStatusPending,
|
32155
|
+
...transaction && {
|
32156
|
+
isTypeMint: isTypeMint(transaction.type),
|
32157
|
+
isTypeCreate: isTypeCreate(transaction.type),
|
32158
|
+
isTypeScript: isTypeScript(transaction.type),
|
32159
|
+
isTypeUpgrade: isTypeUpgrade(transaction.type),
|
32160
|
+
isTypeUpload: isTypeUpload(transaction.type),
|
32161
|
+
isTypeBlob: isTypeBlob(transaction.type)
|
32162
|
+
},
|
32163
|
+
mintedAssets,
|
32164
|
+
burnedAssets,
|
32165
|
+
resolvedOutputs,
|
32166
|
+
errorReason,
|
32167
|
+
transaction,
|
32168
|
+
operations
|
32169
|
+
};
|
32170
|
+
return transactionSummary;
|
32171
|
+
}
|
32172
|
+
__name(assemblePreConfirmationTransactionSummary, "assemblePreConfirmationTransactionSummary");
|
31382
32173
|
|
31383
32174
|
// src/providers/transaction-response/getAllDecodedLogs.ts
|
31384
32175
|
function getAllDecodedLogs(opts) {
|
@@ -31388,7 +32179,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31388
32179
|
const firstCallReceipt = receipts.find(
|
31389
32180
|
(r) => r.type === ReceiptType.Call && r.id === ZeroBytes32
|
31390
32181
|
);
|
31391
|
-
|
32182
|
+
if (firstCallReceipt) {
|
32183
|
+
mainContract = firstCallReceipt.to;
|
32184
|
+
}
|
31392
32185
|
}
|
31393
32186
|
return receipts.reduce(
|
31394
32187
|
({ logs, groupedLogs }, receipt) => {
|
@@ -31411,37 +32204,6 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31411
32204
|
__name(getAllDecodedLogs, "getAllDecodedLogs");
|
31412
32205
|
|
31413
32206
|
// src/providers/transaction-response/transaction-response.ts
|
31414
|
-
function mapGqlOutputsToTxOutputs(outputs) {
|
31415
|
-
return outputs.map((o) => {
|
31416
|
-
const obj = "amount" in o ? { ...o, amount: bn(o.amount) } : o;
|
31417
|
-
switch (obj.type) {
|
31418
|
-
case "CoinOutput":
|
31419
|
-
return { ...obj, type: OutputType.Coin };
|
31420
|
-
case "ContractOutput":
|
31421
|
-
return {
|
31422
|
-
...obj,
|
31423
|
-
type: OutputType.Contract,
|
31424
|
-
inputIndex: parseInt(obj.inputIndex, 10)
|
31425
|
-
};
|
31426
|
-
case "ChangeOutput":
|
31427
|
-
return {
|
31428
|
-
...obj,
|
31429
|
-
type: OutputType.Change
|
31430
|
-
};
|
31431
|
-
case "VariableOutput":
|
31432
|
-
return { ...obj, type: OutputType.Variable };
|
31433
|
-
case "ContractCreated":
|
31434
|
-
return {
|
31435
|
-
...obj,
|
31436
|
-
type: OutputType.ContractCreated,
|
31437
|
-
contractId: obj.contract
|
31438
|
-
};
|
31439
|
-
default:
|
31440
|
-
return assertUnreachable(obj);
|
31441
|
-
}
|
31442
|
-
});
|
31443
|
-
}
|
31444
|
-
__name(mapGqlOutputsToTxOutputs, "mapGqlOutputsToTxOutputs");
|
31445
32207
|
var TransactionResponse = class _TransactionResponse {
|
31446
32208
|
/**
|
31447
32209
|
* Constructor for `TransactionResponse`.
|
@@ -31451,11 +32213,16 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31451
32213
|
*/
|
31452
32214
|
constructor(tx, provider, chainId, abis, submitTxSubscription) {
|
31453
32215
|
this.submitTxSubscription = submitTxSubscription;
|
31454
|
-
|
32216
|
+
if (typeof tx === "string") {
|
32217
|
+
this.id = tx;
|
32218
|
+
} else {
|
32219
|
+
this.id = tx.getTransactionId(chainId);
|
32220
|
+
this.request = tx;
|
32221
|
+
}
|
31455
32222
|
this.provider = provider;
|
31456
32223
|
this.abis = abis;
|
31457
|
-
this.request = typeof tx === "string" ? void 0 : tx;
|
31458
32224
|
this.waitForResult = this.waitForResult.bind(this);
|
32225
|
+
this.waitForPreConfirmation = this.waitForPreConfirmation.bind(this);
|
31459
32226
|
}
|
31460
32227
|
static {
|
31461
32228
|
__name(this, "TransactionResponse");
|
@@ -31471,6 +32238,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31471
32238
|
request;
|
31472
32239
|
status;
|
31473
32240
|
abis;
|
32241
|
+
preConfirmationStatus;
|
32242
|
+
waitingForStreamData = false;
|
32243
|
+
statusResolvers = /* @__PURE__ */ new Map();
|
31474
32244
|
/**
|
31475
32245
|
* Async constructor for `TransactionResponse`. This method can be used to create
|
31476
32246
|
* an instance of `TransactionResponse` and wait for the transaction to be fetched
|
@@ -31502,29 +32272,38 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31502
32272
|
}
|
31503
32273
|
return input;
|
31504
32274
|
});
|
31505
|
-
tx.outputs =
|
31506
|
-
if (
|
32275
|
+
tx.outputs = status.transaction.outputs.map(deserializeProcessedTxOutput);
|
32276
|
+
if (status.transaction.receiptsRoot) {
|
31507
32277
|
tx.receiptsRoot = status.transaction.receiptsRoot;
|
31508
32278
|
}
|
31509
32279
|
}
|
31510
32280
|
}
|
31511
32281
|
async getTransaction() {
|
31512
32282
|
if (this.request) {
|
31513
|
-
const
|
31514
|
-
this.applyMalleableSubscriptionFields(
|
32283
|
+
const tx2 = this.request.toTransaction();
|
32284
|
+
this.applyMalleableSubscriptionFields(tx2);
|
31515
32285
|
return {
|
31516
|
-
tx,
|
32286
|
+
tx: tx2,
|
31517
32287
|
bytes: this.request.toTransactionBytes()
|
31518
32288
|
};
|
31519
32289
|
}
|
31520
32290
|
const gqlTransaction = this.gqlTransaction ?? await this.fetch();
|
32291
|
+
const { rawPayload } = gqlTransaction;
|
32292
|
+
const bytes = arrayify(rawPayload);
|
32293
|
+
const [tx] = new TransactionCoder().decode(bytes, 0);
|
31521
32294
|
return {
|
31522
|
-
tx
|
31523
|
-
bytes
|
32295
|
+
tx,
|
32296
|
+
bytes
|
31524
32297
|
};
|
31525
32298
|
}
|
32299
|
+
/**
|
32300
|
+
*
|
32301
|
+
* NOTE: This method is only called within `getTransactionSummary`, which is invoked after `getTransaction`.
|
32302
|
+
* Since `getTransaction` only resolves once the transaction has been processed,
|
32303
|
+
* the status at this point is guaranteed to be either `SuccessStatus` or `FailureStatus`.
|
32304
|
+
*/
|
31526
32305
|
getReceipts() {
|
31527
|
-
const status = this.
|
32306
|
+
const status = this.getTransactionStatus();
|
31528
32307
|
switch (status?.type) {
|
31529
32308
|
case "SuccessStatus":
|
31530
32309
|
case "FailureStatus":
|
@@ -31557,18 +32336,6 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31557
32336
|
this.gqlTransaction = response.transaction;
|
31558
32337
|
return response.transaction;
|
31559
32338
|
}
|
31560
|
-
/**
|
31561
|
-
* Decode the raw payload of the transaction.
|
31562
|
-
*
|
31563
|
-
* @param transactionWithReceipts - The transaction with receipts object.
|
31564
|
-
* @returns The decoded transaction.
|
31565
|
-
*/
|
31566
|
-
decodeTransaction(transactionWithReceipts) {
|
31567
|
-
return new TransactionCoder().decode(
|
31568
|
-
arrayify(transactionWithReceipts.rawPayload),
|
31569
|
-
0
|
31570
|
-
)?.[0];
|
31571
|
-
}
|
31572
32339
|
/**
|
31573
32340
|
* Retrieves the TransactionSummary. If the `gqlTransaction` is not set, it will
|
31574
32341
|
* fetch it from the provider
|
@@ -31579,7 +32346,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31579
32346
|
async getTransactionSummary(contractsAbiMap) {
|
31580
32347
|
const { tx: transaction, bytes: transactionBytes } = await this.getTransaction();
|
31581
32348
|
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = await this.provider.getGasConfig();
|
31582
|
-
const
|
32349
|
+
const transactionStatus = this.getTransactionStatus();
|
32350
|
+
const totalFee = getTotalFeeFromStatus(transactionStatus);
|
31583
32351
|
const gasPrice = totalFee ? bn(0) : await this.provider.getLatestGasPrice();
|
31584
32352
|
const maxInputs = (await this.provider.getChain()).consensusParameters.txParameters.maxInputs;
|
31585
32353
|
const baseAssetId = await this.provider.getBaseAssetId();
|
@@ -31588,7 +32356,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31588
32356
|
receipts: this.getReceipts(),
|
31589
32357
|
transaction,
|
31590
32358
|
transactionBytes,
|
31591
|
-
gqlTransactionStatus:
|
32359
|
+
gqlTransactionStatus: transactionStatus,
|
31592
32360
|
gasPerByte,
|
31593
32361
|
gasPriceFactor,
|
31594
32362
|
abiMap: contractsAbiMap,
|
@@ -31600,29 +32368,92 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31600
32368
|
});
|
31601
32369
|
return transactionSummary;
|
31602
32370
|
}
|
32371
|
+
async getPreConfirmationTransactionSummary(contractsAbiMap) {
|
32372
|
+
const baseAssetId = await this.provider.getBaseAssetId();
|
32373
|
+
const maxInputs = (await this.provider.getChain()).consensusParameters.txParameters.maxInputs;
|
32374
|
+
const transactionSummary = assemblePreConfirmationTransactionSummary({
|
32375
|
+
id: this.id,
|
32376
|
+
gqlTransactionStatus: this.preConfirmationStatus || this.status,
|
32377
|
+
baseAssetId,
|
32378
|
+
maxInputs,
|
32379
|
+
abiMap: contractsAbiMap,
|
32380
|
+
transactionRequest: this.request
|
32381
|
+
});
|
32382
|
+
return transactionSummary;
|
32383
|
+
}
|
32384
|
+
resolveStatus(type3) {
|
32385
|
+
const resolvers = this.statusResolvers.get(type3) || [];
|
32386
|
+
resolvers.forEach((resolve) => resolve());
|
32387
|
+
this.statusResolvers.delete(type3);
|
32388
|
+
}
|
32389
|
+
async waitForStatus(type3) {
|
32390
|
+
return new Promise((resolve, reject) => {
|
32391
|
+
const resolvers = this.statusResolvers.get(type3) || [];
|
32392
|
+
resolvers.push(() => {
|
32393
|
+
resolve();
|
32394
|
+
});
|
32395
|
+
this.statusResolvers.set(type3, resolvers);
|
32396
|
+
this.waitForStatusChange().catch(reject);
|
32397
|
+
});
|
32398
|
+
}
|
32399
|
+
/**
|
32400
|
+
* Waits for the status change of the transaction.
|
32401
|
+
* If the transaction is already in a final state, it will return immediately.
|
32402
|
+
* If the transaction is not in a final state, it will wait for the status change.
|
32403
|
+
* If we are already subscribed to the status change, it will return immediately.
|
32404
|
+
*/
|
31603
32405
|
async waitForStatusChange() {
|
31604
|
-
const
|
31605
|
-
if (
|
32406
|
+
const type3 = this.status?.type;
|
32407
|
+
if (type3 && (type3 === "FailureStatus" || type3 === "SuccessStatus")) {
|
32408
|
+
this.resolveStatus("preConfirmation");
|
32409
|
+
this.resolveStatus("confirmation");
|
32410
|
+
return;
|
32411
|
+
}
|
32412
|
+
if (this.waitingForStreamData) {
|
31606
32413
|
return;
|
31607
32414
|
}
|
32415
|
+
this.waitingForStreamData = true;
|
31608
32416
|
const subscription = this.submitTxSubscription ?? await this.provider.operations.statusChange({
|
31609
|
-
transactionId: this.id
|
32417
|
+
transactionId: this.id,
|
32418
|
+
includePreConfirmation: true
|
31610
32419
|
});
|
31611
32420
|
for await (const sub2 of subscription) {
|
31612
32421
|
const statusChange = "statusChange" in sub2 ? sub2.statusChange : sub2.submitAndAwaitStatus;
|
31613
32422
|
this.status = statusChange;
|
31614
32423
|
if (statusChange.type === "SqueezedOutStatus") {
|
31615
|
-
this.unsetResourceCache();
|
31616
32424
|
throw new FuelError(
|
31617
32425
|
ErrorCode.TRANSACTION_SQUEEZED_OUT,
|
31618
32426
|
`Transaction Squeezed Out with reason: ${statusChange.reason}`
|
31619
32427
|
);
|
31620
32428
|
}
|
31621
|
-
if (statusChange.type
|
32429
|
+
if (statusChange.type === "PreconfirmationSuccessStatus" || statusChange.type === "PreconfirmationFailureStatus") {
|
32430
|
+
this.preConfirmationStatus = statusChange;
|
32431
|
+
this.resolveStatus("preConfirmation");
|
32432
|
+
}
|
32433
|
+
if (statusChange.type === "SuccessStatus" || statusChange.type === "FailureStatus") {
|
32434
|
+
this.resolveStatus("confirmation");
|
32435
|
+
this.resolveStatus("preConfirmation");
|
32436
|
+
this.waitingForStreamData = false;
|
31622
32437
|
break;
|
31623
32438
|
}
|
31624
32439
|
}
|
31625
32440
|
}
|
32441
|
+
async waitForConfirmationStatuses() {
|
32442
|
+
try {
|
32443
|
+
await this.waitForStatus("confirmation");
|
32444
|
+
} catch (error2) {
|
32445
|
+
this.unsetResourceCache();
|
32446
|
+
throw error2;
|
32447
|
+
}
|
32448
|
+
}
|
32449
|
+
async waitForPreConfirmationStatuses() {
|
32450
|
+
try {
|
32451
|
+
await this.waitForStatus("preConfirmation");
|
32452
|
+
} catch (error2) {
|
32453
|
+
this.unsetResourceCache();
|
32454
|
+
throw error2;
|
32455
|
+
}
|
32456
|
+
}
|
31626
32457
|
/**
|
31627
32458
|
* Assembles the result of a transaction by retrieving the transaction summary,
|
31628
32459
|
* decoding logs (if available), and handling transaction failure.
|
@@ -31651,7 +32482,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31651
32482
|
transactionResult.groupedLogs = groupedLogs;
|
31652
32483
|
}
|
31653
32484
|
const { receipts } = transactionResult;
|
31654
|
-
const status = this.
|
32485
|
+
const status = this.getTransactionStatus();
|
31655
32486
|
if (status?.type === "FailureStatus") {
|
31656
32487
|
const { reason } = status;
|
31657
32488
|
throw extractTxError({
|
@@ -31663,16 +32494,46 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31663
32494
|
}
|
31664
32495
|
return transactionResult;
|
31665
32496
|
}
|
32497
|
+
async assemblePreConfirmationResult(contractsAbiMap) {
|
32498
|
+
const transactionSummary = await this.getPreConfirmationTransactionSummary(contractsAbiMap);
|
32499
|
+
const transactionResult = {
|
32500
|
+
...transactionSummary,
|
32501
|
+
logs: [],
|
32502
|
+
groupedLogs: {}
|
32503
|
+
};
|
32504
|
+
let { logs, groupedLogs } = { logs: [], groupedLogs: {} };
|
32505
|
+
if (this.abis && transactionSummary.receipts) {
|
32506
|
+
({ logs, groupedLogs } = getAllDecodedLogs({
|
32507
|
+
receipts: transactionSummary.receipts,
|
32508
|
+
mainAbi: this.abis.main,
|
32509
|
+
externalAbis: this.abis.otherContractsAbis
|
32510
|
+
}));
|
32511
|
+
transactionResult.logs = logs;
|
32512
|
+
transactionResult.groupedLogs = groupedLogs;
|
32513
|
+
}
|
32514
|
+
return transactionResult;
|
32515
|
+
}
|
31666
32516
|
/**
|
31667
32517
|
* Waits for transaction to complete and returns the result.
|
31668
32518
|
*
|
31669
32519
|
* @returns The completed transaction result
|
31670
32520
|
*/
|
31671
32521
|
async waitForResult(contractsAbiMap) {
|
31672
|
-
await this.
|
32522
|
+
await this.waitForConfirmationStatuses();
|
31673
32523
|
this.unsetResourceCache();
|
31674
32524
|
return this.assembleResult(contractsAbiMap);
|
31675
32525
|
}
|
32526
|
+
/**
|
32527
|
+
* Waits for the transaction's pre-confirmation and returns the result.
|
32528
|
+
*
|
32529
|
+
* @param contractsAbiMap - The contracts ABI map.
|
32530
|
+
* @returns The pre-confirmed transaction result
|
32531
|
+
*/
|
32532
|
+
async waitForPreConfirmation(contractsAbiMap) {
|
32533
|
+
await this.waitForPreConfirmationStatuses();
|
32534
|
+
this.unsetResourceCache();
|
32535
|
+
return this.assemblePreConfirmationResult(contractsAbiMap);
|
32536
|
+
}
|
31676
32537
|
/**
|
31677
32538
|
* Waits for transaction to complete and returns the result.
|
31678
32539
|
*
|
@@ -31684,6 +32545,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31684
32545
|
unsetResourceCache() {
|
31685
32546
|
this.provider.cache?.unset(this.id);
|
31686
32547
|
}
|
32548
|
+
getTransactionStatus() {
|
32549
|
+
return this.status ?? this.gqlTransaction?.status;
|
32550
|
+
}
|
31687
32551
|
};
|
31688
32552
|
|
31689
32553
|
// src/providers/transaction-response/getDecodedLogs.ts
|
@@ -31749,21 +32613,22 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31749
32613
|
}
|
31750
32614
|
__name(autoRetryFetch, "autoRetryFetch");
|
31751
32615
|
|
31752
|
-
// src/providers/utils/
|
31753
|
-
var
|
31754
|
-
const {
|
31755
|
-
|
31756
|
-
|
31757
|
-
if (
|
31758
|
-
|
31759
|
-
|
31760
|
-
|
31761
|
-
|
31762
|
-
|
31763
|
-
final.messages = [...final.messages, ...cached.messages.slice(0, maxInputs - total)];
|
32616
|
+
// src/providers/utils/parse-graphql-response.ts
|
32617
|
+
var parseGraphqlResponse = /* @__PURE__ */ __name(async (options) => {
|
32618
|
+
const { response, isSubscription } = options;
|
32619
|
+
let extensions;
|
32620
|
+
const responseClone = response.clone();
|
32621
|
+
if (isSubscription) {
|
32622
|
+
const reader = responseClone.body?.getReader();
|
32623
|
+
const { event } = await FuelGraphqlSubscriber.readEvent(reader);
|
32624
|
+
extensions = event?.extensions;
|
32625
|
+
} else {
|
32626
|
+
extensions = (await responseClone.json()).extensions;
|
31764
32627
|
}
|
31765
|
-
return
|
31766
|
-
|
32628
|
+
return {
|
32629
|
+
extensions
|
32630
|
+
};
|
32631
|
+
}, "parseGraphqlResponse");
|
31767
32632
|
|
31768
32633
|
// src/providers/utils/validate-pagination-args.ts
|
31769
32634
|
var validatePaginationArgs = /* @__PURE__ */ __name((params) => {
|
@@ -31808,22 +32673,48 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31808
32673
|
var BLOCKS_PAGE_SIZE_LIMIT = 5;
|
31809
32674
|
var DEFAULT_RESOURCE_CACHE_TTL = 2e4;
|
31810
32675
|
var GAS_USED_MODIFIER = 1.2;
|
32676
|
+
var WRITE_OPERATIONS = [
|
32677
|
+
"submit",
|
32678
|
+
"submitAndAwaitStatus",
|
32679
|
+
"produceBlocks"
|
32680
|
+
];
|
31811
32681
|
var Provider = class _Provider {
|
31812
32682
|
static {
|
31813
32683
|
__name(this, "Provider");
|
31814
32684
|
}
|
31815
32685
|
operations;
|
31816
32686
|
cache;
|
31817
|
-
/**
|
31818
|
-
|
32687
|
+
/**
|
32688
|
+
* @hidden
|
32689
|
+
* @param url - If provided, clears cache only for given url
|
32690
|
+
*/
|
32691
|
+
static clearChainAndNodeCaches(url) {
|
32692
|
+
if (url) {
|
32693
|
+
delete _Provider.inflightFetchChainAndNodeInfoRequests[url];
|
32694
|
+
delete _Provider.chainInfoCache[url];
|
32695
|
+
delete _Provider.nodeInfoCache[url];
|
32696
|
+
delete _Provider.currentBlockHeightCache[url];
|
32697
|
+
return;
|
32698
|
+
}
|
31819
32699
|
_Provider.inflightFetchChainAndNodeInfoRequests = {};
|
31820
32700
|
_Provider.nodeInfoCache = {};
|
31821
32701
|
_Provider.chainInfoCache = {};
|
32702
|
+
_Provider.currentBlockHeightCache = {};
|
31822
32703
|
}
|
31823
32704
|
/** @hidden */
|
31824
32705
|
url;
|
31825
32706
|
/** @hidden */
|
31826
32707
|
urlWithoutAuth;
|
32708
|
+
/**
|
32709
|
+
* Governs whether to include the required block height in the request body
|
32710
|
+
* for block-sensitive operations like when submitting a transaction.
|
32711
|
+
*
|
32712
|
+
* This ensures that the operation is executed at the correct block height,
|
32713
|
+
* regardless of which node in the network the request is routed to.
|
32714
|
+
*
|
32715
|
+
* `true` by default.
|
32716
|
+
*/
|
32717
|
+
static ENABLE_RPC_CONSISTENCY = true;
|
31827
32718
|
/** @hidden */
|
31828
32719
|
static inflightFetchChainAndNodeInfoRequests = {};
|
31829
32720
|
/** @hidden */
|
@@ -31831,6 +32722,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31831
32722
|
/** @hidden */
|
31832
32723
|
static nodeInfoCache = {};
|
31833
32724
|
/** @hidden */
|
32725
|
+
static currentBlockHeightCache = {};
|
32726
|
+
/** @hidden */
|
31834
32727
|
static incompatibleNodeVersionMessage = "";
|
31835
32728
|
/** @hidden */
|
31836
32729
|
consensusParametersTimestamp;
|
@@ -31842,6 +32735,18 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31842
32735
|
headers: void 0,
|
31843
32736
|
cache: void 0
|
31844
32737
|
};
|
32738
|
+
static extractOperationName(body) {
|
32739
|
+
return body?.toString().match(/"operationName":"(.+)"/)?.[1];
|
32740
|
+
}
|
32741
|
+
static isWriteOperation(body) {
|
32742
|
+
return WRITE_OPERATIONS.includes(this.extractOperationName(body));
|
32743
|
+
}
|
32744
|
+
static normalizeUrl(url) {
|
32745
|
+
return url.replace(/-sub$/, "");
|
32746
|
+
}
|
32747
|
+
static hasWriteOperationHappened(url) {
|
32748
|
+
return isDefined(_Provider.currentBlockHeightCache[this.normalizeUrl(url)]);
|
32749
|
+
}
|
31845
32750
|
/**
|
31846
32751
|
* @hidden
|
31847
32752
|
*/
|
@@ -31859,9 +32764,57 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31859
32764
|
if (options.requestMiddleware) {
|
31860
32765
|
fullRequest = await options.requestMiddleware(fullRequest);
|
31861
32766
|
}
|
31862
|
-
|
32767
|
+
if (_Provider.ENABLE_RPC_CONSISTENCY && _Provider.hasWriteOperationHappened(url)) {
|
32768
|
+
_Provider.applyBlockHeight(fullRequest, url);
|
32769
|
+
}
|
32770
|
+
return _Provider.fetchAndProcessBlockHeight(url, fullRequest, options);
|
31863
32771
|
}, retryOptions);
|
31864
32772
|
}
|
32773
|
+
static applyBlockHeight(request2, url) {
|
32774
|
+
const normalizedUrl = this.normalizeUrl(url);
|
32775
|
+
const currentBlockHeight = _Provider.currentBlockHeightCache[normalizedUrl] ?? 0;
|
32776
|
+
request2.body = request2.body?.toString().replace(/}$/, `,"extensions":{"required_fuel_block_height":${currentBlockHeight}}}`);
|
32777
|
+
}
|
32778
|
+
static async fetchAndProcessBlockHeight(url, request2, options) {
|
32779
|
+
const fetchFn = /* @__PURE__ */ __name(() => options.fetch ? options.fetch(url, request2, options) : fetch(url, request2), "fetchFn");
|
32780
|
+
const isWriteOperation = _Provider.isWriteOperation(request2.body);
|
32781
|
+
if (isWriteOperation && !_Provider.hasWriteOperationHappened(url)) {
|
32782
|
+
_Provider.currentBlockHeightCache[_Provider.normalizeUrl(url)] = 0;
|
32783
|
+
}
|
32784
|
+
let response = await fetchFn();
|
32785
|
+
if (!_Provider.ENABLE_RPC_CONSISTENCY) {
|
32786
|
+
return response;
|
32787
|
+
}
|
32788
|
+
const retryOptions = {
|
32789
|
+
maxRetries: 5,
|
32790
|
+
baseDelay: 500
|
32791
|
+
};
|
32792
|
+
for (let retriesLeft = retryOptions.maxRetries; retriesLeft > 0; --retriesLeft) {
|
32793
|
+
const { extensions } = await parseGraphqlResponse({
|
32794
|
+
response,
|
32795
|
+
isSubscription: url.endsWith("-sub")
|
32796
|
+
});
|
32797
|
+
_Provider.setCurrentBlockHeight(url, extensions?.current_fuel_block_height);
|
32798
|
+
if (!extensions?.fuel_block_height_precondition_failed) {
|
32799
|
+
break;
|
32800
|
+
}
|
32801
|
+
const retryAttempt = retryOptions.maxRetries - retriesLeft + 1;
|
32802
|
+
const sleepTime = getWaitDelay(retryOptions, retryAttempt);
|
32803
|
+
await sleep(sleepTime);
|
32804
|
+
response = await fetchFn();
|
32805
|
+
}
|
32806
|
+
return response;
|
32807
|
+
}
|
32808
|
+
static setCurrentBlockHeight(url, height) {
|
32809
|
+
const writeOperationHappened = _Provider.hasWriteOperationHappened(url);
|
32810
|
+
if (!isDefined(height) || !writeOperationHappened) {
|
32811
|
+
return;
|
32812
|
+
}
|
32813
|
+
const normalizedUrl = _Provider.normalizeUrl(url);
|
32814
|
+
if (height > _Provider.currentBlockHeightCache[normalizedUrl]) {
|
32815
|
+
_Provider.currentBlockHeightCache[normalizedUrl] = height;
|
32816
|
+
}
|
32817
|
+
}
|
31865
32818
|
/**
|
31866
32819
|
* Constructor to initialize a Provider.
|
31867
32820
|
*
|
@@ -31947,6 +32900,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
31947
32900
|
* Returns some helpful parameters related to gas fees.
|
31948
32901
|
*/
|
31949
32902
|
async getGasConfig() {
|
32903
|
+
await this.init();
|
31950
32904
|
const {
|
31951
32905
|
txParameters: { maxGasPerTx },
|
31952
32906
|
predicateParameters: { maxGasPerPredicate },
|
@@ -32071,7 +33025,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32071
33025
|
url: this.urlWithoutAuth,
|
32072
33026
|
query,
|
32073
33027
|
fetchFn: /* @__PURE__ */ __name((url, requestInit) => fetchFn(url, requestInit, this.options), "fetchFn"),
|
32074
|
-
variables: vars
|
33028
|
+
variables: vars,
|
33029
|
+
operationName: opDefinition.name.value,
|
33030
|
+
onEvent: /* @__PURE__ */ __name((event) => {
|
33031
|
+
_Provider.setCurrentBlockHeight(
|
33032
|
+
this.urlWithoutAuth,
|
33033
|
+
event.extensions?.current_fuel_block_height
|
33034
|
+
);
|
33035
|
+
}, "onEvent")
|
32075
33036
|
});
|
32076
33037
|
}
|
32077
33038
|
return gqlClient.request(query, vars);
|
@@ -32229,7 +33190,11 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32229
33190
|
* @param sendTransactionParams - The provider send transaction parameters (optional).
|
32230
33191
|
* @returns A promise that resolves to the transaction response object.
|
32231
33192
|
*/
|
32232
|
-
async sendTransaction(transactionRequestLike, {
|
33193
|
+
async sendTransaction(transactionRequestLike, {
|
33194
|
+
enableAssetBurn,
|
33195
|
+
estimateTxDependencies = true,
|
33196
|
+
includePreConfirmation: _includePreConfirmation = true
|
33197
|
+
} = {}) {
|
32233
33198
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
32234
33199
|
validateTransactionForAssetBurn(
|
32235
33200
|
await this.getBaseAssetId(),
|
@@ -32245,7 +33210,10 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32245
33210
|
if (isTransactionTypeScript(transactionRequest)) {
|
32246
33211
|
abis = transactionRequest.abis;
|
32247
33212
|
}
|
32248
|
-
const subscription = await this.operations.submitAndAwaitStatus({
|
33213
|
+
const subscription = await this.operations.submitAndAwaitStatus({
|
33214
|
+
encodedTransaction,
|
33215
|
+
includePreConfirmation: true
|
33216
|
+
});
|
32249
33217
|
this.#cacheInputs(
|
32250
33218
|
transactionRequest.inputs,
|
32251
33219
|
transactionRequest.getTransactionId(await this.getChainId())
|
@@ -32497,7 +33465,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32497
33465
|
}
|
32498
33466
|
const chainInfo = _Provider.chainInfoCache[this.urlWithoutAuth];
|
32499
33467
|
const {
|
32500
|
-
|
33468
|
+
latestBlock: {
|
33469
|
+
header: { consensusParametersVersion: previous }
|
33470
|
+
}
|
32501
33471
|
} = chainInfo;
|
32502
33472
|
const {
|
32503
33473
|
chain: {
|
@@ -32597,6 +33567,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32597
33567
|
* @param transactionCostParams - The transaction cost parameters (optional).
|
32598
33568
|
*
|
32599
33569
|
* @returns A promise that resolves to the transaction cost object.
|
33570
|
+
*
|
33571
|
+
* @deprecated Use provider.assembleTx instead
|
33572
|
+
* Check the migration guide https://docs.fuel.network/guide/assembling-transactions/migration-guide.html for more information.
|
32600
33573
|
*/
|
32601
33574
|
async getTransactionCost(transactionRequestLike, { signatureCallback, gasPrice: gasPriceParam } = {}) {
|
32602
33575
|
const txRequestClone = clone_default(transactionRequestify(transactionRequestLike));
|
@@ -32639,7 +33612,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32639
33612
|
}
|
32640
33613
|
({ rawReceipts, receipts, missingContractIds, outputVariables, dryRunStatus } = await this.estimateTxDependencies(txRequestClone, { gasPrice }));
|
32641
33614
|
if (dryRunStatus && "reason" in dryRunStatus) {
|
32642
|
-
throw this.extractDryRunError(txRequestClone, receipts, dryRunStatus);
|
33615
|
+
throw this.extractDryRunError(txRequestClone, receipts, dryRunStatus.reason);
|
32643
33616
|
}
|
32644
33617
|
const { maxGasPerTx } = await this.getGasConfig();
|
32645
33618
|
const pristineGasUsed = getGasUsedFromReceipts(receipts);
|
@@ -32672,6 +33645,102 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32672
33645
|
transactionSummary
|
32673
33646
|
};
|
32674
33647
|
}
|
33648
|
+
/**
|
33649
|
+
* Assembles a transaction by completely estimating and funding it.
|
33650
|
+
*
|
33651
|
+
* @param params - Parameters used to assemble the transaction.
|
33652
|
+
*
|
33653
|
+
* @returns The assembled transaction request, estimated gas price, and receipts
|
33654
|
+
*/
|
33655
|
+
async assembleTx(params) {
|
33656
|
+
const {
|
33657
|
+
request: request2,
|
33658
|
+
reserveGas,
|
33659
|
+
resourcesIdsToIgnore,
|
33660
|
+
feePayerAccount,
|
33661
|
+
blockHorizon = 10,
|
33662
|
+
estimatePredicates = true,
|
33663
|
+
accountCoinQuantities = []
|
33664
|
+
} = params;
|
33665
|
+
const allAddresses = /* @__PURE__ */ new Set();
|
33666
|
+
const baseAssetId = await this.getBaseAssetId();
|
33667
|
+
let feePayerIndex = -1;
|
33668
|
+
let baseAssetChange;
|
33669
|
+
const requiredBalances = accountCoinQuantities.map((quantity, index) => {
|
33670
|
+
const { amount, assetId, account = feePayerAccount, changeOutputAccount } = quantity;
|
33671
|
+
const changeAccountAddress = changeOutputAccount ? changeOutputAccount.address.toB256() : account.address.toB256();
|
33672
|
+
allAddresses.add(account.address.toB256());
|
33673
|
+
const changePolicy = {
|
33674
|
+
change: changeAccountAddress
|
33675
|
+
};
|
33676
|
+
if (assetId === baseAssetId) {
|
33677
|
+
baseAssetChange = changePolicy.change;
|
33678
|
+
}
|
33679
|
+
if (account.address.equals(feePayerAccount.address)) {
|
33680
|
+
feePayerIndex = index;
|
33681
|
+
}
|
33682
|
+
const requiredBalance = {
|
33683
|
+
account: resolveAccountForAssembleTxParams(account),
|
33684
|
+
amount: bn(amount).toString(10),
|
33685
|
+
assetId,
|
33686
|
+
changePolicy
|
33687
|
+
};
|
33688
|
+
return requiredBalance;
|
33689
|
+
});
|
33690
|
+
if (feePayerIndex === -1) {
|
33691
|
+
allAddresses.add(feePayerAccount.address.toB256());
|
33692
|
+
const newLength = requiredBalances.push({
|
33693
|
+
account: resolveAccountForAssembleTxParams(feePayerAccount),
|
33694
|
+
amount: bn(0).toString(10),
|
33695
|
+
// Since the correct fee amount cannot be determined yet, we can use 0
|
33696
|
+
assetId: baseAssetId,
|
33697
|
+
changePolicy: {
|
33698
|
+
change: baseAssetChange || feePayerAccount.address.toB256()
|
33699
|
+
}
|
33700
|
+
});
|
33701
|
+
feePayerIndex = newLength - 1;
|
33702
|
+
}
|
33703
|
+
const excludeInput = await this.adjustResourcesToIgnoreForAddresses(
|
33704
|
+
Array.from(allAddresses),
|
33705
|
+
resourcesIdsToIgnore
|
33706
|
+
);
|
33707
|
+
const {
|
33708
|
+
assembleTx: { status, transaction: gqlTransaction, gasPrice }
|
33709
|
+
} = await this.operations.assembleTx({
|
33710
|
+
tx: hexlify(request2.toTransactionBytes()),
|
33711
|
+
blockHorizon: String(blockHorizon),
|
33712
|
+
feeAddressIndex: String(feePayerIndex),
|
33713
|
+
requiredBalances,
|
33714
|
+
estimatePredicates,
|
33715
|
+
excludeInput,
|
33716
|
+
reserveGas: reserveGas ? reserveGas.toString(10) : void 0
|
33717
|
+
});
|
33718
|
+
if (status.type === "DryRunFailureStatus") {
|
33719
|
+
const parsedReceipts = status.receipts.map(deserializeReceipt);
|
33720
|
+
throw this.extractDryRunError(request2, parsedReceipts, status.reason);
|
33721
|
+
}
|
33722
|
+
request2.witnesses = gqlTransaction.witnesses || request2.witnesses;
|
33723
|
+
request2.inputs = gqlTransaction.inputs?.map(deserializeInput) || request2.inputs;
|
33724
|
+
request2.outputs = gqlTransaction.outputs?.map(deserializeOutput) || request2.outputs;
|
33725
|
+
if (gqlTransaction.policies?.maxFee) {
|
33726
|
+
request2.maxFee = bn(gqlTransaction.policies.maxFee);
|
33727
|
+
}
|
33728
|
+
if (gqlTransaction.scriptGasLimit) {
|
33729
|
+
request2.gasLimit = bn(gqlTransaction.scriptGasLimit);
|
33730
|
+
}
|
33731
|
+
const rawReceipts = status.receipts;
|
33732
|
+
const chainId = await this.getChainId();
|
33733
|
+
request2.updateState(chainId, "funded", {
|
33734
|
+
gasPrice: gasPrice.toString(),
|
33735
|
+
receipts: rawReceipts
|
33736
|
+
});
|
33737
|
+
return {
|
33738
|
+
assembledRequest: request2,
|
33739
|
+
gasPrice: bn(gasPrice),
|
33740
|
+
receipts: status.receipts.map(deserializeReceipt),
|
33741
|
+
rawReceipts
|
33742
|
+
};
|
33743
|
+
}
|
32675
33744
|
/**
|
32676
33745
|
* Returns coins for the given owner.
|
32677
33746
|
*
|
@@ -32710,30 +33779,15 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32710
33779
|
*
|
32711
33780
|
* @param owner - The address to get resources for.
|
32712
33781
|
* @param quantities - The coin quantities to get.
|
32713
|
-
* @param
|
33782
|
+
* @param resourcesIdsToIgnore - IDs of excluded resources from the selection (optional).
|
32714
33783
|
* @returns A promise that resolves to the resources.
|
32715
33784
|
*/
|
32716
|
-
async getResourcesToSpend(owner, quantities,
|
33785
|
+
async getResourcesToSpend(owner, quantities, resourcesIdsToIgnore) {
|
32717
33786
|
const ownerAddress = new Address(owner);
|
32718
|
-
|
32719
|
-
|
32720
|
-
|
32721
|
-
|
32722
|
-
if (this.cache) {
|
32723
|
-
const cached = this.cache.getActiveData(ownerAddress.toB256());
|
32724
|
-
if (cached.utxos.length || cached.messages.length) {
|
32725
|
-
const {
|
32726
|
-
consensusParameters: {
|
32727
|
-
txParameters: { maxInputs }
|
32728
|
-
}
|
32729
|
-
} = await this.getChain();
|
32730
|
-
idsToExclude = adjustResourcesToExclude({
|
32731
|
-
userInput: idsToExclude,
|
32732
|
-
cached,
|
32733
|
-
maxInputs: maxInputs.toNumber()
|
32734
|
-
});
|
32735
|
-
}
|
32736
|
-
}
|
33787
|
+
const excludedIds = await this.adjustResourcesToIgnoreForAddresses(
|
33788
|
+
[ownerAddress.b256Address],
|
33789
|
+
resourcesIdsToIgnore
|
33790
|
+
);
|
32737
33791
|
const coinsQuery = {
|
32738
33792
|
owner: ownerAddress.toB256(),
|
32739
33793
|
queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({
|
@@ -32741,7 +33795,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
32741
33795
|
amount: (amount.eqn(0) ? bn(1) : amount).toString(10),
|
32742
33796
|
max: maxPerAsset ? maxPerAsset.toString(10) : void 0
|
32743
33797
|
})),
|
32744
|
-
excludedIds
|
33798
|
+
excludedIds
|
32745
33799
|
};
|
32746
33800
|
const result = await this.operations.getCoinsToSpend(coinsQuery);
|
32747
33801
|
const coins = result.coinsToSpend.flat().map((coin) => {
|
@@ -33308,11 +34362,10 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33308
34362
|
/**
|
33309
34363
|
* @hidden
|
33310
34364
|
*/
|
33311
|
-
extractDryRunError(transactionRequest, receipts,
|
33312
|
-
const status = dryRunStatus;
|
34365
|
+
extractDryRunError(transactionRequest, receipts, reason) {
|
33313
34366
|
let logs = [];
|
33314
34367
|
let groupedLogs = {};
|
33315
|
-
if (transactionRequest.abis) {
|
34368
|
+
if (transactionRequest.type === TransactionType.Script && transactionRequest.abis) {
|
33316
34369
|
({ logs, groupedLogs } = getAllDecodedLogs({
|
33317
34370
|
receipts,
|
33318
34371
|
mainAbi: transactionRequest.abis.main,
|
@@ -33323,7 +34376,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33323
34376
|
logs,
|
33324
34377
|
groupedLogs,
|
33325
34378
|
receipts,
|
33326
|
-
statusReason:
|
34379
|
+
statusReason: reason
|
33327
34380
|
});
|
33328
34381
|
}
|
33329
34382
|
/**
|
@@ -33350,6 +34403,45 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33350
34403
|
}
|
33351
34404
|
return transactionRequest;
|
33352
34405
|
}
|
34406
|
+
/**
|
34407
|
+
* @hidden
|
34408
|
+
*
|
34409
|
+
* This helper adjusts the resources to be excluded for a given set of addresses.
|
34410
|
+
* Supporting multiple addresses is important because of the `assembleTx` method,
|
34411
|
+
* which may be invoked with different addresses. It handles both messages and UTXOs,
|
34412
|
+
* ensuring the total number of inputs does not exceed the maximum allowed by the chain's
|
34413
|
+
* consensus parameters. The resources specified in the `resourcesIdsToIgnore` parameter have priority
|
34414
|
+
* over those retrieved from the cache.
|
34415
|
+
*/
|
34416
|
+
async adjustResourcesToIgnoreForAddresses(addresses, resourcesIdsToIgnore) {
|
34417
|
+
const final = {
|
34418
|
+
messages: resourcesIdsToIgnore?.messages?.map((nonce) => hexlify(nonce)) || [],
|
34419
|
+
utxos: resourcesIdsToIgnore?.utxos?.map((id) => hexlify(id)) || []
|
34420
|
+
};
|
34421
|
+
if (this.cache) {
|
34422
|
+
const cache2 = this.cache;
|
34423
|
+
const allCached = addresses.map((address) => cache2.getActiveData(address));
|
34424
|
+
const {
|
34425
|
+
consensusParameters: {
|
34426
|
+
txParameters: { maxInputs: maxInputsBn }
|
34427
|
+
}
|
34428
|
+
} = await this.getChain();
|
34429
|
+
const maxInputs = maxInputsBn.toNumber();
|
34430
|
+
for (let i = 0; i < allCached.length; i++) {
|
34431
|
+
let total = final.utxos.length + final.messages.length;
|
34432
|
+
if (total >= maxInputs) {
|
34433
|
+
break;
|
34434
|
+
}
|
34435
|
+
final.utxos = [...final.utxos, ...allCached[i].utxos.slice(0, maxInputs - total)];
|
34436
|
+
total = final.utxos.length + final.messages.length;
|
34437
|
+
if (total >= maxInputs) {
|
34438
|
+
break;
|
34439
|
+
}
|
34440
|
+
final.messages = [...final.messages, ...allCached[i].messages.slice(0, maxInputs - total)];
|
34441
|
+
}
|
34442
|
+
}
|
34443
|
+
return final;
|
34444
|
+
}
|
33353
34445
|
};
|
33354
34446
|
|
33355
34447
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
@@ -33516,20 +34608,29 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33516
34608
|
});
|
33517
34609
|
}, "assembleTransactionSummaryFromJson");
|
33518
34610
|
|
33519
|
-
// src/providers/utils/
|
33520
|
-
var
|
33521
|
-
const
|
33522
|
-
|
33523
|
-
|
33524
|
-
|
33525
|
-
|
33526
|
-
|
33527
|
-
|
33528
|
-
|
33529
|
-
|
33530
|
-
|
33531
|
-
|
33532
|
-
|
34611
|
+
// src/providers/utils/transaction-response-serialization.ts
|
34612
|
+
var deserializeTransactionResponseJson = /* @__PURE__ */ __name((json) => {
|
34613
|
+
const {
|
34614
|
+
id,
|
34615
|
+
abis,
|
34616
|
+
status,
|
34617
|
+
providerUrl,
|
34618
|
+
requestJson,
|
34619
|
+
providerCache,
|
34620
|
+
gqlTransaction,
|
34621
|
+
preConfirmationStatus
|
34622
|
+
} = json;
|
34623
|
+
const provider = new Provider(providerUrl, { cache: providerCache });
|
34624
|
+
const { chainId } = providerCache.chain.consensusParameters;
|
34625
|
+
const response = new TransactionResponse(id, provider, Number(chainId), abis);
|
34626
|
+
if (requestJson) {
|
34627
|
+
response.request = transactionRequestify(JSON.parse(requestJson));
|
34628
|
+
}
|
34629
|
+
response.status = status;
|
34630
|
+
response.gqlTransaction = gqlTransaction;
|
34631
|
+
response.preConfirmationStatus = preConfirmationStatus;
|
34632
|
+
return response;
|
34633
|
+
}, "deserializeTransactionResponseJson");
|
33533
34634
|
|
33534
34635
|
// src/types.ts
|
33535
34636
|
var AbstractAccount = class {
|
@@ -33575,6 +34676,18 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33575
34676
|
return { script, scriptData };
|
33576
34677
|
}, "assembleTransferToContractScript");
|
33577
34678
|
|
34679
|
+
// src/utils/split-coins-into-batches.ts
|
34680
|
+
var splitCoinsIntoBatches = /* @__PURE__ */ __name((coins, maxBatchLength) => {
|
34681
|
+
const batchesNum = Math.ceil(coins.length / maxBatchLength);
|
34682
|
+
const batches = [];
|
34683
|
+
for (let i = 0; i < batchesNum; i += 1) {
|
34684
|
+
const batchStart = i * maxBatchLength;
|
34685
|
+
const batchEnd = (i + 1) * maxBatchLength;
|
34686
|
+
batches.push(coins.slice(batchStart, batchEnd));
|
34687
|
+
}
|
34688
|
+
return batches;
|
34689
|
+
}, "splitCoinsIntoBatches");
|
34690
|
+
|
33578
34691
|
// src/account.ts
|
33579
34692
|
var MAX_FUNDING_ATTEMPTS = 5;
|
33580
34693
|
var Account = class extends AbstractAccount {
|
@@ -33641,11 +34754,11 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33641
34754
|
* Retrieves resources satisfying the spend query for the account.
|
33642
34755
|
*
|
33643
34756
|
* @param quantities - Quantities of resources to be obtained.
|
33644
|
-
* @param
|
34757
|
+
* @param resourcesIdsToIgnore - IDs of resources to be excluded from the query (optional).
|
33645
34758
|
* @returns A promise that resolves to an array of Resources.
|
33646
34759
|
*/
|
33647
|
-
async getResourcesToSpend(quantities,
|
33648
|
-
return this.provider.getResourcesToSpend(this.address, quantities,
|
34760
|
+
async getResourcesToSpend(quantities, resourcesIdsToIgnore) {
|
34761
|
+
return this.provider.getResourcesToSpend(this.address, quantities, resourcesIdsToIgnore);
|
33649
34762
|
}
|
33650
34763
|
/**
|
33651
34764
|
* Retrieves coins owned by the account.
|
@@ -33690,6 +34803,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33690
34803
|
* @param request - The transaction request to fund.
|
33691
34804
|
* @param params - The estimated transaction parameters.
|
33692
34805
|
* @returns A promise that resolves to the funded transaction request.
|
34806
|
+
*
|
34807
|
+
* @deprecated Use provider.assembleTx instead
|
34808
|
+
* Check the migration guide https://docs.fuel.network/guide/assembling-transactions/migration-guide.html for more information.
|
33693
34809
|
*/
|
33694
34810
|
async fund(request2, params) {
|
33695
34811
|
const {
|
@@ -33812,7 +34928,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33812
34928
|
amount,
|
33813
34929
|
assetId: assetId || await this.provider.getBaseAssetId()
|
33814
34930
|
});
|
33815
|
-
|
34931
|
+
const { gasPrice, transactionRequest } = await this.assembleTx(request2);
|
34932
|
+
request2 = await setAndValidateGasAndFeeForAssembledTx({
|
34933
|
+
gasPrice,
|
34934
|
+
provider: this.provider,
|
34935
|
+
transactionRequest,
|
34936
|
+
setGasLimit: txParams?.gasLimit,
|
34937
|
+
setMaxFee: txParams?.maxFee
|
34938
|
+
});
|
33816
34939
|
return request2;
|
33817
34940
|
}
|
33818
34941
|
/**
|
@@ -33838,7 +34961,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33838
34961
|
async batchTransfer(transferParams, txParams = {}) {
|
33839
34962
|
let request2 = new ScriptTransactionRequest(txParams);
|
33840
34963
|
request2 = this.addBatchTransfer(request2, transferParams);
|
33841
|
-
|
34964
|
+
const { gasPrice, transactionRequest } = await this.assembleTx(request2);
|
34965
|
+
request2 = await setAndValidateGasAndFeeForAssembledTx({
|
34966
|
+
gasPrice,
|
34967
|
+
provider: this.provider,
|
34968
|
+
transactionRequest,
|
34969
|
+
setGasLimit: txParams?.gasLimit,
|
34970
|
+
setMaxFee: txParams?.maxFee
|
34971
|
+
});
|
33842
34972
|
return this.sendTransaction(request2, { estimateTxDependencies: false });
|
33843
34973
|
}
|
33844
34974
|
/**
|
@@ -33910,7 +35040,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33910
35040
|
const { script, scriptData } = await assembleTransferToContractScript(transferParams);
|
33911
35041
|
request2.script = script;
|
33912
35042
|
request2.scriptData = scriptData;
|
33913
|
-
|
35043
|
+
const { gasPrice, transactionRequest } = await this.assembleTx(request2, quantities);
|
35044
|
+
request2 = await setAndValidateGasAndFeeForAssembledTx({
|
35045
|
+
gasPrice,
|
35046
|
+
provider: this.provider,
|
35047
|
+
transactionRequest,
|
35048
|
+
setGasLimit: txParams?.gasLimit,
|
35049
|
+
setMaxFee: txParams?.maxFee
|
35050
|
+
});
|
33914
35051
|
return this.sendTransaction(request2);
|
33915
35052
|
}
|
33916
35053
|
/**
|
@@ -33938,16 +35075,144 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33938
35075
|
const baseAssetId = await this.provider.getBaseAssetId();
|
33939
35076
|
let request2 = new ScriptTransactionRequest(params);
|
33940
35077
|
const quantities = [{ amount: bn(amount), assetId: baseAssetId }];
|
33941
|
-
const
|
33942
|
-
request2 =
|
33943
|
-
|
33944
|
-
|
33945
|
-
|
33946
|
-
txParams
|
35078
|
+
const { gasPrice, transactionRequest } = await this.assembleTx(request2, quantities);
|
35079
|
+
request2 = await setAndValidateGasAndFeeForAssembledTx({
|
35080
|
+
gasPrice,
|
35081
|
+
provider: this.provider,
|
35082
|
+
transactionRequest,
|
35083
|
+
setGasLimit: txParams?.gasLimit,
|
35084
|
+
setMaxFee: txParams?.maxFee
|
33947
35085
|
});
|
33948
|
-
await this.fund(request2, txCost);
|
33949
35086
|
return this.sendTransaction(request2);
|
33950
35087
|
}
|
35088
|
+
/**
|
35089
|
+
* Consolidates base asset UTXOs into fewer, larger ones.
|
35090
|
+
*
|
35091
|
+
* Retrieves a limited number of base asset coins (as defined by `Provider.RESOURCES_PAGE_SIZE_LIMIT`),
|
35092
|
+
* assembles consolidation transactions, and submits them to the network.
|
35093
|
+
*
|
35094
|
+
* Note: This method currently supports only the base asset.
|
35095
|
+
*
|
35096
|
+
* @param params - The parameters for coin consolidation, including the asset ID, mode, and output number.
|
35097
|
+
* @returns A promise that resolves to the response of the submitted transactions.
|
35098
|
+
* @throws Will throw an error if the asset is not a base asset as non-base asset consolidation is not implemented.
|
35099
|
+
*/
|
35100
|
+
async consolidateCoins(params) {
|
35101
|
+
const { assetId } = params;
|
35102
|
+
const { coins } = await this.getCoins(assetId);
|
35103
|
+
const baseAssetId = await this.provider.getBaseAssetId();
|
35104
|
+
const isBaseAsset = baseAssetId === assetId;
|
35105
|
+
let submitAll;
|
35106
|
+
const consolidationParams = {
|
35107
|
+
coins,
|
35108
|
+
mode: params.mode,
|
35109
|
+
outputNum: params.outputNum
|
35110
|
+
};
|
35111
|
+
if (isBaseAsset) {
|
35112
|
+
({ submitAll } = await this.assembleBaseAssetConsolidationTxs(consolidationParams));
|
35113
|
+
} else {
|
35114
|
+
throw new FuelError(
|
35115
|
+
ErrorCode.UNSUPPORTED_FEATURE,
|
35116
|
+
"Consolidation for non-base assets is not supported yet."
|
35117
|
+
);
|
35118
|
+
}
|
35119
|
+
return submitAll();
|
35120
|
+
}
|
35121
|
+
/**
|
35122
|
+
* Assembles transactions for consolidating base asset coins into fewer UTXOs.
|
35123
|
+
*
|
35124
|
+
* This method splits the provided coins into batches and creates transaction requests
|
35125
|
+
* to consolidate them. It calculates the necessary fee and sets up the transactions
|
35126
|
+
* to be submitted either in parallel (default) or sequentially.
|
35127
|
+
*
|
35128
|
+
* @param params - The parameters for assembling base asset consolidation transactions.
|
35129
|
+
*
|
35130
|
+
* @returns An object containing the assembled transactions, the total fee cost, and a callback to submit all transactions.
|
35131
|
+
*/
|
35132
|
+
async assembleBaseAssetConsolidationTxs(params) {
|
35133
|
+
const { coins, mode = "parallel", outputNum = 1 } = params;
|
35134
|
+
const baseAssetId = await this.provider.getBaseAssetId();
|
35135
|
+
this.validateConsolidationTxsCoins(coins, baseAssetId);
|
35136
|
+
const chainInfo = await this.provider.getChain();
|
35137
|
+
const maxInputsNumber = chainInfo.consensusParameters.txParameters.maxInputs.toNumber();
|
35138
|
+
let totalFeeCost = bn(0);
|
35139
|
+
const txs = [];
|
35140
|
+
const coinsBatches = splitCoinsIntoBatches(coins, maxInputsNumber);
|
35141
|
+
const gasPrice = await this.provider.estimateGasPrice(10);
|
35142
|
+
const consolidateMoreThanOneCoin = outputNum > 1;
|
35143
|
+
coinsBatches.filter((batch) => batch.length > 1).forEach((coinBatch) => {
|
35144
|
+
const request2 = new ScriptTransactionRequest({
|
35145
|
+
script: "0x"
|
35146
|
+
});
|
35147
|
+
request2.addResources(coinBatch);
|
35148
|
+
if (consolidateMoreThanOneCoin) {
|
35149
|
+
Array.from({ length: outputNum - 1 }).forEach(() => {
|
35150
|
+
request2.addCoinOutput(this.address, 0, baseAssetId);
|
35151
|
+
});
|
35152
|
+
}
|
35153
|
+
const minGas = request2.calculateMinGas(chainInfo);
|
35154
|
+
const fee = calculateGasFee({
|
35155
|
+
gasPrice,
|
35156
|
+
gas: minGas,
|
35157
|
+
priceFactor: chainInfo.consensusParameters.feeParameters.gasPriceFactor,
|
35158
|
+
tip: request2.tip
|
35159
|
+
});
|
35160
|
+
request2.maxFee = fee;
|
35161
|
+
if (consolidateMoreThanOneCoin) {
|
35162
|
+
const total = request2.inputs.filter(isRequestInputCoin).reduce((acc, input) => acc.add(input.amount), bn(0));
|
35163
|
+
const amountPerNewUtxo = total.div(outputNum + 1);
|
35164
|
+
request2.outputs.forEach((output) => {
|
35165
|
+
if (output.type === OutputType.Coin) {
|
35166
|
+
output.amount = amountPerNewUtxo;
|
35167
|
+
}
|
35168
|
+
});
|
35169
|
+
}
|
35170
|
+
totalFeeCost = totalFeeCost.add(fee);
|
35171
|
+
txs.push(request2);
|
35172
|
+
});
|
35173
|
+
const submitAll = this.prepareSubmitAll({ txs, mode });
|
35174
|
+
return { txs, totalFeeCost, submitAll };
|
35175
|
+
}
|
35176
|
+
/**
|
35177
|
+
* Prepares a function to submit all transactions either sequentially or in parallel.
|
35178
|
+
*
|
35179
|
+
* @param params - The parameters for preparing the submitAll callback.
|
35180
|
+
*
|
35181
|
+
* @returns A callback that, when called, submits all transactions and returns their results and any errors encountered.
|
35182
|
+
*/
|
35183
|
+
prepareSubmitAll = /* @__PURE__ */ __name((params) => {
|
35184
|
+
const { txs, mode = "sequential" } = params;
|
35185
|
+
return async () => {
|
35186
|
+
const txResponses = [];
|
35187
|
+
const errors2 = [];
|
35188
|
+
if (mode === "sequential") {
|
35189
|
+
for (const tx of txs) {
|
35190
|
+
try {
|
35191
|
+
const submit = await this.sendTransaction(tx);
|
35192
|
+
const response = await submit.waitForResult();
|
35193
|
+
txResponses.push(response);
|
35194
|
+
} catch (error2) {
|
35195
|
+
errors2.push(error2);
|
35196
|
+
}
|
35197
|
+
}
|
35198
|
+
} else {
|
35199
|
+
const results = await Promise.allSettled(
|
35200
|
+
txs.map(async (tx) => {
|
35201
|
+
const submit = await this.sendTransaction(tx);
|
35202
|
+
return submit.waitForResult();
|
35203
|
+
})
|
35204
|
+
);
|
35205
|
+
results.forEach((result) => {
|
35206
|
+
if (result.status === "fulfilled") {
|
35207
|
+
txResponses.push(result.value);
|
35208
|
+
} else {
|
35209
|
+
errors2.push(result.reason);
|
35210
|
+
}
|
35211
|
+
});
|
35212
|
+
}
|
35213
|
+
return { txResponses, errors: errors2 };
|
35214
|
+
};
|
35215
|
+
}, "prepareSubmitAll");
|
33951
35216
|
/**
|
33952
35217
|
* Returns a transaction cost to enable user
|
33953
35218
|
* to set gasLimit and also reserve balance amounts
|
@@ -33957,6 +35222,9 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
33957
35222
|
* @param transactionCostParams - The transaction cost parameters (optional).
|
33958
35223
|
*
|
33959
35224
|
* @returns A promise that resolves to the transaction cost object.
|
35225
|
+
*
|
35226
|
+
* @deprecated Use provider.assembleTx instead
|
35227
|
+
* Check the migration guide https://docs.fuel.network/guide/assembling-transactions/migration-guide.html for more information.
|
33960
35228
|
*/
|
33961
35229
|
async getTransactionCost(transactionRequestLike, { signatureCallback, quantities = [], gasPrice } = {}) {
|
33962
35230
|
const txRequestClone = clone_default(transactionRequestify(transactionRequestLike));
|
@@ -34057,7 +35325,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
34057
35325
|
transactionRequest,
|
34058
35326
|
params
|
34059
35327
|
);
|
34060
|
-
return typeof transaction === "string" ? this.provider.getTransactionResponse(transaction) : transaction;
|
35328
|
+
return typeof transaction === "string" ? this.provider.getTransactionResponse(transaction) : deserializeTransactionResponseJson(transaction);
|
34061
35329
|
}
|
34062
35330
|
if (estimateTxDependencies) {
|
34063
35331
|
await this.provider.estimateTxDependencies(transactionRequest);
|
@@ -34118,6 +35386,18 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
34118
35386
|
} : void 0;
|
34119
35387
|
}
|
34120
35388
|
/** @hidden * */
|
35389
|
+
async assembleTx(transactionRequest, quantities = []) {
|
35390
|
+
const outputQuantities = transactionRequest.outputs.filter((o) => o.type === OutputType.Coin).map(({ amount, assetId }) => ({ assetId: String(assetId), amount: bn(amount) }));
|
35391
|
+
transactionRequest.gasLimit = bn(0);
|
35392
|
+
transactionRequest.maxFee = bn(0);
|
35393
|
+
const { assembledRequest, gasPrice } = await this.provider.assembleTx({
|
35394
|
+
request: transactionRequest,
|
35395
|
+
accountCoinQuantities: mergeQuantities(outputQuantities, quantities),
|
35396
|
+
feePayerAccount: this
|
35397
|
+
});
|
35398
|
+
return { transactionRequest: assembledRequest, gasPrice };
|
35399
|
+
}
|
35400
|
+
/** @hidden * */
|
34121
35401
|
validateTransferAmount(amount) {
|
34122
35402
|
if (bn(amount).lte(0)) {
|
34123
35403
|
throw new FuelError(
|
@@ -34165,6 +35445,18 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
34165
35445
|
}
|
34166
35446
|
return request2;
|
34167
35447
|
}
|
35448
|
+
/** @hidden * */
|
35449
|
+
validateConsolidationTxsCoins(coins, assetId) {
|
35450
|
+
if (coins.length <= 1) {
|
35451
|
+
throw new FuelError(ErrorCode.NO_COINS_TO_CONSOLIDATE, "No coins to consolidate.");
|
35452
|
+
}
|
35453
|
+
if (!coins.every((c) => c.assetId === assetId)) {
|
35454
|
+
throw new FuelError(
|
35455
|
+
ErrorCode.COINS_ASSET_ID_MISMATCH,
|
35456
|
+
"All coins to consolidate must be from the same asset id."
|
35457
|
+
);
|
35458
|
+
}
|
35459
|
+
}
|
34168
35460
|
};
|
34169
35461
|
|
34170
35462
|
// ../../node_modules/.pnpm/@noble+curves@1.8.1/node_modules/@noble/curves/esm/abstract/utils.js
|
@@ -39574,24 +40866,12 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
39574
40866
|
|
39575
40867
|
// src/utils/deployScriptOrPredicate.ts
|
39576
40868
|
async function fundBlobTx(deployer, blobTxRequest) {
|
39577
|
-
|
39578
|
-
|
39579
|
-
|
39580
|
-
|
39581
|
-
|
39582
|
-
|
39583
|
-
gasPrice,
|
39584
|
-
gas: minGas,
|
39585
|
-
priceFactor,
|
39586
|
-
tip: blobTxRequest.tip
|
39587
|
-
}).add(1);
|
39588
|
-
totalCost = totalCost.add(minFee);
|
39589
|
-
if (totalCost.gt(await deployer.getBalance())) {
|
39590
|
-
throw new FuelError(ErrorCode.FUNDS_TOO_LOW, "Insufficient balance to deploy predicate.");
|
39591
|
-
}
|
39592
|
-
const txCost = await deployer.getTransactionCost(blobTxRequest);
|
39593
|
-
blobTxRequest.maxFee = txCost.maxFee;
|
39594
|
-
return deployer.fund(blobTxRequest, txCost);
|
40869
|
+
const { assembledRequest } = await deployer.provider.assembleTx({
|
40870
|
+
request: blobTxRequest,
|
40871
|
+
feePayerAccount: deployer,
|
40872
|
+
accountCoinQuantities: []
|
40873
|
+
});
|
40874
|
+
return assembledRequest;
|
39595
40875
|
}
|
39596
40876
|
__name(fundBlobTx, "fundBlobTx");
|
39597
40877
|
function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
|
@@ -40187,6 +41467,11 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
40187
41467
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
40188
41468
|
return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
|
40189
41469
|
}
|
41470
|
+
/**
|
41471
|
+
* Retrieves the properly encoded predicate data.
|
41472
|
+
*
|
41473
|
+
* @returns A Uint8Array containing the encoded predicate data. If no predicate data is available, returns an empty Uint8Array.
|
41474
|
+
*/
|
40190
41475
|
getPredicateData() {
|
40191
41476
|
if (!this.predicateData.length) {
|
40192
41477
|
return new Uint8Array();
|
@@ -40241,14 +41526,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
40241
41526
|
* Retrieves resources satisfying the spend query for the account.
|
40242
41527
|
*
|
40243
41528
|
* @param quantities - IDs of coins to exclude.
|
40244
|
-
* @param
|
41529
|
+
* @param resourcesIdsToIgnore - IDs of resources to be excluded from the query.
|
40245
41530
|
* @returns A promise that resolves to an array of Resources.
|
40246
41531
|
*/
|
40247
|
-
async getResourcesToSpend(quantities,
|
41532
|
+
async getResourcesToSpend(quantities, resourcesIdsToIgnore) {
|
40248
41533
|
const resources = await this.provider.getResourcesToSpend(
|
40249
41534
|
this.address,
|
40250
41535
|
quantities,
|
40251
|
-
|
41536
|
+
resourcesIdsToIgnore
|
40252
41537
|
);
|
40253
41538
|
return resources.map((resource) => ({
|
40254
41539
|
...resource,
|