@witnet/solidity 3.0.4 → 3.0.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/LICENSE +2 -2
- package/build/contracts/Bech32.json +1 -1
- package/build/contracts/Clonable.json +1 -1
- package/build/contracts/Context.json +1 -1
- package/build/contracts/Create3.json +1 -1
- package/build/contracts/ERC165.json +1 -1
- package/build/contracts/Escrowable.json +1 -1
- package/build/contracts/IChainlinkAggregatorV3.json +1 -1
- package/build/contracts/IERC165.json +1 -1
- package/build/contracts/IERC20.json +1 -1
- package/build/contracts/IERC2362.json +1 -1
- package/build/contracts/IPythChainlinkAggregatorV3.json +1 -1
- package/build/contracts/IWitAppliance.json +1 -1
- package/build/contracts/IWitOracle.json +1 -1
- package/build/contracts/IWitOracleAppliance.json +1 -1
- package/build/contracts/IWitOracleConsumer.json +1 -1
- package/build/contracts/IWitOracleConsumerLegacy.json +1 -1
- package/build/contracts/IWitOracleLegacy.json +1 -1
- package/build/contracts/IWitOracleQueriable.json +1 -1
- package/build/contracts/IWitOracleQueriableConsumer.json +1 -1
- package/build/contracts/IWitOracleQueriableEvents.json +1 -1
- package/build/contracts/IWitOracleQueriableExperimental.json +1 -1
- package/build/contracts/IWitOracleQueriableTrustableReporter.json +1 -1
- package/build/contracts/IWitOracleQueriableTrustlessReporter.json +1 -1
- package/build/contracts/IWitOracleRadonRegistry.json +1 -1
- package/build/contracts/IWitOracleRadonRegistryEvents.json +1 -1
- package/build/contracts/IWitOracleRadonRegistryLegacy.json +1 -1
- package/build/contracts/IWitOracleRadonRequestFactory.json +1 -1
- package/build/contracts/IWitOracleRadonRequestModal.json +1 -1
- package/build/contracts/IWitOracleRadonRequestTemplate.json +1 -1
- package/build/contracts/IWitOracleRequest.json +1 -1
- package/build/contracts/IWitOracleRequestFactory.json +1 -1
- package/build/contracts/IWitOracleRequestFactoryEvents.json +1 -1
- package/build/contracts/IWitOracleRequestTemplate.json +1 -1
- package/build/contracts/IWitOracleTrustableAdmin.json +1 -1
- package/build/contracts/IWitOracleTrustless.json +1 -1
- package/build/contracts/IWitPriceFeeds.json +1 -1
- package/build/contracts/IWitPriceFeedsAdmin.json +1 -1
- package/build/contracts/IWitPriceFeedsConsumer.json +1 -1
- package/build/contracts/IWitPriceFeedsEvents.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacy.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacyAdmin.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacySolver.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacySolverFactory.json +1 -1
- package/build/contracts/IWitPriceFeedsTypes.json +1 -1
- package/build/contracts/IWitPyth.json +1 -1
- package/build/contracts/IWitPythChainlinkAggregator.json +1 -1
- package/build/contracts/IWitPythErrors.json +1 -1
- package/build/contracts/IWitPythEvents.json +1 -1
- package/build/contracts/IWitPythReporter.json +1 -1
- package/build/contracts/IWitRandomness.json +1 -1
- package/build/contracts/IWitRandomnessAdmin.json +1 -1
- package/build/contracts/IWitRandomnessAdminV2.json +1 -1
- package/build/contracts/IWitRandomnessConsumer.json +1 -1
- package/build/contracts/IWitRandomnessEvents.json +1 -1
- package/build/contracts/IWitRandomnessLegacy.json +1 -1
- package/build/contracts/IWitRandomnessTypes.json +1 -1
- package/build/contracts/Initializable.json +1 -1
- package/build/contracts/OVM_GasPriceOracle.json +1 -1
- package/build/contracts/Ownable.json +1 -1
- package/build/contracts/Ownable2Step.json +1 -1
- package/build/contracts/Payable.json +1 -1
- package/build/contracts/Proxiable.json +1 -1
- package/build/contracts/ReentrancyGuard.json +1 -1
- package/build/contracts/Secp256k1.json +1 -1
- package/build/contracts/Slices.json +1 -1
- package/build/contracts/TestBech32.json +1 -1
- package/build/contracts/TestSecp256k1.json +1 -1
- package/build/contracts/Upgradeable.json +1 -1
- package/build/contracts/UsingWitOracle.json +1 -1
- package/build/contracts/UsingWitPriceFeeds.json +1 -1
- package/build/contracts/UsingWitRandomness.json +1 -1
- package/build/contracts/WitOracle.json +2 -13
- package/build/contracts/WitOracleBasePushOnly.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyTrustable.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyTrustless.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyUpgradable.json +1 -1
- package/build/contracts/WitOracleBaseQueriable.json +1 -1
- package/build/contracts/WitOracleBaseQueriableTrustable.json +1 -1
- package/build/contracts/WitOracleBaseQueriableTrustless.json +1 -1
- package/build/contracts/WitOracleBaseQueriableUpgradable.json +1 -1
- package/build/contracts/WitOracleDataLib.json +2 -254
- package/build/contracts/WitOraclePushOnly.json +1 -1
- package/build/contracts/WitOracleRadonEncodingLib.json +2 -13
- package/build/contracts/WitOracleRadonRegistry.json +2 -13
- package/build/contracts/WitOracleRadonRegistryBase.json +1 -1
- package/build/contracts/WitOracleRadonRegistryBaseUpgradable.json +1 -1
- package/build/contracts/WitOracleRadonRegistryData.json +1 -1
- package/build/contracts/WitOracleRadonRegistryDefaultV21.json +1 -1
- package/build/contracts/WitOracleRadonRegistryUpgradableDefault.json +2 -17
- package/build/contracts/WitOracleRadonRegistryUpgradableNoSha256.json +1 -1
- package/build/contracts/WitOracleRadonRegistryUpgradableZkSync.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactory.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryBase.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryBaseUpgradable.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryModals.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryModalsDefault.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryTemplates.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryTemplatesDefault.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryUpgradableConfluxCore.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryUpgradableDefault.json +2 -13
- package/build/contracts/WitOracleResultStatusLib.json +2 -14
- package/build/contracts/WitOracleTrustableDefault.json +2 -259
- package/build/contracts/WitOracleTrustableExperimental.json +1 -1
- package/build/contracts/WitOracleTrustableObscuro.json +1 -1
- package/build/contracts/WitOracleTrustableOvm2.json +1 -1
- package/build/contracts/WitOracleTrustablePushOnly.json +1 -1
- package/build/contracts/WitOracleTrustableReef.json +1 -1
- package/build/contracts/WitOracleTrustableZkSync.json +1 -1
- package/build/contracts/WitOracleTrustlessDataLib.json +1 -1
- package/build/contracts/WitOracleTrustlessDefaultV22.json +1 -1
- package/build/contracts/WitOracleTrustlessUpgradableDefault.json +1 -1
- package/build/contracts/WitPriceFeeds.json +2 -13
- package/build/contracts/WitPriceFeedsDataLib.json +2 -14
- package/build/contracts/WitPriceFeedsLegacy.json +2 -8
- package/build/contracts/WitPriceFeedsLegacyDataLib.json +2 -84
- package/build/contracts/WitPriceFeedsLegacyUpgradable.json +1 -1
- package/build/contracts/WitPriceFeedsLegacyUpgradableBypass.json +2 -80
- package/build/contracts/WitPriceFeedsSolverBase.json +1 -1
- package/build/contracts/WitPriceFeedsV3.json +1 -1
- package/build/contracts/WitPriceFeedsV3Upgradable.json +2 -17
- package/build/contracts/WitPythChainlinkAggregator.json +1 -1
- package/build/contracts/WitRandomness.json +2 -13
- package/build/contracts/WitRandomnessLegacy.json +1 -1
- package/build/contracts/WitRandomnessV3.json +2 -13
- package/build/contracts/WitRngConsumer.json +1 -1
- package/build/contracts/Witnet.json +1 -1
- package/build/contracts/WitnetBuffer.json +1 -1
- package/build/contracts/WitnetCBOR.json +1 -1
- package/build/contracts/WitnetDeployer.json +2 -13
- package/build/contracts/WitnetDeployerConfluxCore.json +1 -1
- package/build/contracts/WitnetDeployerDeferred.json +1 -1
- package/build/contracts/WitnetDeployerMeter.json +1 -1
- package/build/contracts/WitnetProxy.json +2 -9
- package/build/contracts/WitnetUpgradableBase.json +1 -1
- package/{migrations → dist/migrations}/addresses.json +1 -25
- package/{migrations → dist/migrations}/constructorArgs.json +1 -6
- package/dist/migrations/settings/artifacts.d.ts +95 -0
- package/dist/migrations/settings/artifacts.d.ts.map +1 -0
- package/dist/migrations/settings/artifacts.js +80 -0
- package/dist/migrations/settings/networks.d.ts +593 -0
- package/dist/migrations/settings/networks.d.ts.map +1 -0
- package/dist/migrations/settings/networks.js +593 -0
- package/dist/src/bin/helpers.cjs +350 -0
- package/dist/src/bin/helpers.d.cts +76 -0
- package/dist/src/bin/helpers.d.cts.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +33 -0
- package/dist/src/lib/types.d.ts +99 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +18 -0
- package/dist/src/lib/utils.d.ts +22 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +267 -0
- package/dist/src/lib/wrappers/ContractWrapper.d.ts +47 -0
- package/dist/src/lib/wrappers/ContractWrapper.d.ts.map +1 -0
- package/dist/src/lib/wrappers/ContractWrapper.js +81 -0
- package/dist/src/lib/wrappers/WitAppliance.d.ts +7 -0
- package/dist/src/lib/wrappers/WitAppliance.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitAppliance.js +17 -0
- package/dist/src/lib/wrappers/WitArtifact.d.ts +6 -0
- package/dist/src/lib/wrappers/WitArtifact.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitArtifact.js +16 -0
- package/dist/src/lib/wrappers/WitOracle.d.ts +105 -0
- package/dist/src/lib/wrappers/WitOracle.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracle.js +217 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.d.ts +16 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.js +30 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts +102 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.js +140 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts +81 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.js +257 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.d.ts +91 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.js +356 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts +14 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.js +64 -0
- package/dist/src/lib/wrappers/WitRandomness.d.ts +55 -0
- package/dist/src/lib/wrappers/WitRandomness.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitRandomness.js +165 -0
- package/dist/src/lib/wrappers.d.ts +8 -0
- package/dist/src/lib/wrappers.d.ts.map +1 -0
- package/dist/src/lib/wrappers.js +8 -0
- package/package.json +78 -54
- package/scripts/clean.cjs +21 -0
- package/scripts/eth-create2.cjs +38 -0
- package/scripts/eth-create3.cjs +45 -0
- package/scripts/postinstall.cjs +9 -0
- package/scripts/prepare.cjs +27 -0
- package/scripts/vanity2gen.cjs +121 -0
- package/scripts/vanity3gen.cjs +84 -0
- package/scripts/verify-proxies.cjs +50 -0
- package/scripts/verify-truffle.cjs +69 -0
- package/scripts/verify.js +95 -0
- package/scripts/wof-acls.js +17 -0
- package/src/bin/bots/bridge.cjs +0 -0
- package/src/bin/bots/randomizer.cjs +290 -0
- package/src/bin/bots/reporter.cjs +0 -0
- package/src/bin/cli/accounts.cjs +47 -0
- package/src/bin/cli/assets.cjs +466 -0
- package/src/bin/cli/framework.cjs +100 -0
- package/src/bin/cli/gateway.cjs +26 -0
- package/src/bin/cli/networks.cjs +63 -0
- package/src/bin/cli/priceFeeds.cjs +170 -0
- package/src/bin/cli/queries.cjs +217 -0
- package/src/bin/cli/randomness.cjs +367 -0
- package/src/bin/cli/reports.cjs +272 -0
- package/src/bin/cli/wizard.cjs +352 -0
- package/src/bin/helpers.cjs +388 -0
- package/src/bin/index.cjs +407 -0
- package/settings/artifacts.js +0 -71
- package/settings/index.js +0 -49
- package/settings/networks.js +0 -593
- package/settings/solidity.js +0 -11
- package/settings/specs.js +0 -102
- package/src/index.js +0 -96
- package/src/utils.js +0 -305
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Witnet } from "@witnet/sdk";
|
|
2
|
+
import { type BlockTag, type JsonRpcSigner } from "ethers";
|
|
3
|
+
import type { WitOracleQuery, WitOracleQueryParams, WitOracleQueryResponse, WitOracleQueryStatus } from "../types.js";
|
|
4
|
+
import { WitArtifact } from "./WitArtifact.js";
|
|
5
|
+
import { WitOracleConsumer } from "./WitOracleConsumer.js";
|
|
6
|
+
import { WitOracleRadonRegistry } from "./WitOracleRadonRegistry.js";
|
|
7
|
+
import { WitOracleRadonRequestFactory, WitOracleRadonRequestModal, WitOracleRadonRequestTemplate } from "./WitOracleRadonRequestFactory.js";
|
|
8
|
+
import { WitPriceFeeds } from "./WitPriceFeeds.js";
|
|
9
|
+
import { WitPriceFeedsLegacy } from "./WitPriceFeedsLegacy.js";
|
|
10
|
+
import { WitRandomness } from "./WitRandomness.js";
|
|
11
|
+
/**
|
|
12
|
+
* Wrapper class for the Wit/Oracle contract as deployed in some specified EVM network.
|
|
13
|
+
* It provides wrappers to other main artifacts of the Wit/Oracle Framework, as well
|
|
14
|
+
* as factory methods for wrapping existing `WitOracleRadonRequestTemplate` and `WitOracleConsumer`
|
|
15
|
+
* compliant contracts, provably bound to the Wit/Oracle core contract.
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare class WitOracle extends WitArtifact {
|
|
19
|
+
constructor(signer: JsonRpcSigner, network: string);
|
|
20
|
+
/**
|
|
21
|
+
* Create a WitOracle attached to the Wit/Oracle main address on the connected EVM network.
|
|
22
|
+
* Fails if the EVM network served at the specified JSON ETH/RPC endpoint, is not currently bridged
|
|
23
|
+
* to the Witnet blockchain.
|
|
24
|
+
* @param url ETH/RPC endpoint URL.
|
|
25
|
+
* @param signer Specific signer address, other than default, to use for signing EVM transactions.
|
|
26
|
+
*/
|
|
27
|
+
static fromJsonRpcUrl(url: string, signerId?: number | string): Promise<WitOracle>;
|
|
28
|
+
estimateBaseFee(evmGasPrice: bigint): Promise<bigint>;
|
|
29
|
+
estimateBaseFeeWithCallback(evmGasPrice: bigint, evmCallbackGas: number): Promise<bigint>;
|
|
30
|
+
estimateExtraFee(evmGasPrice: bigint, evmWitPrice: bigint, queryParams: WitOracleQueryParams): Promise<bigint>;
|
|
31
|
+
filterWitOracleQueryEvents(options: {
|
|
32
|
+
fromBlock: BlockTag;
|
|
33
|
+
toBlock?: BlockTag;
|
|
34
|
+
where?: {
|
|
35
|
+
evmRequester?: string;
|
|
36
|
+
queryRadHash?: Witnet.Hash;
|
|
37
|
+
};
|
|
38
|
+
}): Promise<Array<{
|
|
39
|
+
evmBlockNumber: bigint;
|
|
40
|
+
evmRequester: string;
|
|
41
|
+
evmTransactionHash: string;
|
|
42
|
+
queryId: bigint;
|
|
43
|
+
queryRadHash: Witnet.Hash;
|
|
44
|
+
queryParams: WitOracleQueryParams;
|
|
45
|
+
}>>;
|
|
46
|
+
filterWitOracleReportEvents(options: {
|
|
47
|
+
fromBlock: BlockTag;
|
|
48
|
+
toBlock?: BlockTag;
|
|
49
|
+
where?: {
|
|
50
|
+
evmOrigin?: string;
|
|
51
|
+
evmConsumer?: string;
|
|
52
|
+
queryRadHash?: Witnet.Hash;
|
|
53
|
+
};
|
|
54
|
+
}): Promise<Array<{
|
|
55
|
+
evmBlockNumber: bigint;
|
|
56
|
+
evmOrigin: string;
|
|
57
|
+
evmConsumer: string;
|
|
58
|
+
evmReporter: string;
|
|
59
|
+
evmTransactionHash: string;
|
|
60
|
+
witDrTxHash: Witnet.Hash;
|
|
61
|
+
queryRadHash: Witnet.Hash;
|
|
62
|
+
queryParams: WitOracleQueryParams;
|
|
63
|
+
resultCborBytes: Witnet.HexString;
|
|
64
|
+
resultTimestamp: number;
|
|
65
|
+
}>>;
|
|
66
|
+
getEvmChainId(): Promise<number>;
|
|
67
|
+
getEvmChannel(): Promise<Witnet.HexString>;
|
|
68
|
+
getNextQueryId(): Promise<bigint>;
|
|
69
|
+
getQuery(queryId: bigint): Promise<WitOracleQuery>;
|
|
70
|
+
getQueryResponse(queryId: bigint): Promise<WitOracleQueryResponse>;
|
|
71
|
+
getQueryResultStatusDescription(queryId: bigint): Promise<string>;
|
|
72
|
+
getQueryStatuses(queryIds: bigint[]): Promise<Array<WitOracleQueryStatus>>;
|
|
73
|
+
getWitOracleConsumerAt(target: string): Promise<WitOracleConsumer>;
|
|
74
|
+
/**
|
|
75
|
+
* Wrapper class for the Wit/Oracle Radon Registry core contract as deployed in some supported EVM network.
|
|
76
|
+
* It allows formal verification of Radon Requests and Witnet-compliant data sources into such network,
|
|
77
|
+
* as to be securely referred on both Wit/Oracle queries pulled from within smart contracts,
|
|
78
|
+
* or Wit/Oracle query results pushed into smart contracts from offchain workflows.
|
|
79
|
+
*/
|
|
80
|
+
getWitOracleRadonRegistry(): Promise<WitOracleRadonRegistry>;
|
|
81
|
+
/**
|
|
82
|
+
* Wrapper class for the Wit/Oracle Request Factory core contract as deployed in some supported EVM network.
|
|
83
|
+
* It allows construction of `WitOracleRadonRequestTemplate` minimal-proxy contracts out of one ore more
|
|
84
|
+
* parameterized Radon Retievals (Witnet-compliant data sources). Template addresses are counter-factual to
|
|
85
|
+
* the set of data sources they are built on.
|
|
86
|
+
*/
|
|
87
|
+
getWitOracleRadonRequestFactory(): Promise<WitOracleRadonRequestFactory>;
|
|
88
|
+
/**
|
|
89
|
+
* Wrapper class for Wit/Oracle Radon Template artifacts as deployed in some supported EVM network.
|
|
90
|
+
* `IWitOracleRadonRequestTemplate` contracts enable smart contracts to formally verify Radon Requests
|
|
91
|
+
* built out out of a set of parameterized Witnet-compliant data sources, on the fly.
|
|
92
|
+
*/
|
|
93
|
+
getWitOracleRadonRequestTemplateAt(target: string): Promise<WitOracleRadonRequestTemplate>;
|
|
94
|
+
/**
|
|
95
|
+
* Wrapper class for Wit/Oracle Radon Modal artifacts as deployed in some supported EVM network.
|
|
96
|
+
* `IWitOracleRadonRequestModal` contracts enable smart contracts to formally verify Radon Requests
|
|
97
|
+
* built out out of a single Radon Retrieval and multiple data providers, all of them expected to
|
|
98
|
+
* provided exactly the same data.
|
|
99
|
+
*/
|
|
100
|
+
getWitOracleRadonRequestModalAt(target: string): Promise<WitOracleRadonRequestModal>;
|
|
101
|
+
getWitPriceFeedsAt(target: string): Promise<WitPriceFeeds>;
|
|
102
|
+
getWitPriceFeedsLegacyAt(target: string): Promise<WitPriceFeedsLegacy>;
|
|
103
|
+
getWitRandomnessAt(target: string): Promise<WitRandomness>;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=WitOracle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WitOracle.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitOracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { Contract, JsonRpcProvider, } from "ethers";
|
|
2
|
+
import { abiDecodeQueryStatus, abiEncodeWitOracleQueryParams, getEvmNetworkByChainId, } from "../utils.js";
|
|
3
|
+
import { WitArtifact } from "./WitArtifact.js";
|
|
4
|
+
import { WitOracleConsumer } from "./WitOracleConsumer.js";
|
|
5
|
+
import { WitOracleRadonRegistry } from "./WitOracleRadonRegistry.js";
|
|
6
|
+
import { WitOracleRadonRequestFactory, WitOracleRadonRequestModal, WitOracleRadonRequestTemplate, } from "./WitOracleRadonRequestFactory.js";
|
|
7
|
+
import { WitPriceFeeds } from "./WitPriceFeeds.js";
|
|
8
|
+
import { WitPriceFeedsLegacy } from "./WitPriceFeedsLegacy.js";
|
|
9
|
+
import { WitRandomness } from "./WitRandomness.js";
|
|
10
|
+
/**
|
|
11
|
+
* Wrapper class for the Wit/Oracle contract as deployed in some specified EVM network.
|
|
12
|
+
* It provides wrappers to other main artifacts of the Wit/Oracle Framework, as well
|
|
13
|
+
* as factory methods for wrapping existing `WitOracleRadonRequestTemplate` and `WitOracleConsumer`
|
|
14
|
+
* compliant contracts, provably bound to the Wit/Oracle core contract.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
export class WitOracle extends WitArtifact {
|
|
18
|
+
constructor(signer, network) {
|
|
19
|
+
super(signer, network, "WitOracle");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a WitOracle attached to the Wit/Oracle main address on the connected EVM network.
|
|
23
|
+
* Fails if the EVM network served at the specified JSON ETH/RPC endpoint, is not currently bridged
|
|
24
|
+
* to the Witnet blockchain.
|
|
25
|
+
* @param url ETH/RPC endpoint URL.
|
|
26
|
+
* @param signer Specific signer address, other than default, to use for signing EVM transactions.
|
|
27
|
+
*/
|
|
28
|
+
static async fromJsonRpcUrl(url, signerId) {
|
|
29
|
+
const provider = new JsonRpcProvider(url, undefined, {
|
|
30
|
+
pollingInterval: 5000,
|
|
31
|
+
});
|
|
32
|
+
const signer = await provider.getSigner(signerId);
|
|
33
|
+
const chainId = Number((await provider.getNetwork()).chainId);
|
|
34
|
+
const network = getEvmNetworkByChainId(chainId);
|
|
35
|
+
if (!network) {
|
|
36
|
+
throw new Error(`WitOracle: unsupported chain id: ${chainId}`);
|
|
37
|
+
}
|
|
38
|
+
return new WitOracle(signer, network);
|
|
39
|
+
}
|
|
40
|
+
async estimateBaseFee(evmGasPrice) {
|
|
41
|
+
return this.contract
|
|
42
|
+
.getFunction("estimateBaseFee(uint256)")
|
|
43
|
+
.staticCall(evmGasPrice);
|
|
44
|
+
}
|
|
45
|
+
async estimateBaseFeeWithCallback(evmGasPrice, evmCallbackGas) {
|
|
46
|
+
return this.contract
|
|
47
|
+
.getFunction("estimateBaseFeeWithCallback(uint256,uint24)")
|
|
48
|
+
.staticCall(evmGasPrice, evmCallbackGas);
|
|
49
|
+
}
|
|
50
|
+
async estimateExtraFee(evmGasPrice, evmWitPrice, queryParams) {
|
|
51
|
+
return this.contract
|
|
52
|
+
.getFunction("estimateExtraFee(uint256,uint256,(uint16,uint16,uint64)")
|
|
53
|
+
.staticCall(evmGasPrice, evmWitPrice, abiEncodeWitOracleQueryParams(queryParams));
|
|
54
|
+
}
|
|
55
|
+
async filterWitOracleQueryEvents(options) {
|
|
56
|
+
const witOracleQueryEvent = this.contract.filters["WitOracleQuery(address indexed,uint256,uint256,uint64,bytes32,(uint16,uint16,uint64))"](options?.where?.evmRequester);
|
|
57
|
+
return this.contract
|
|
58
|
+
.queryFilter(witOracleQueryEvent, options.fromBlock, options?.toBlock)
|
|
59
|
+
.then((logs) => logs.filter((log) => !log.removed &&
|
|
60
|
+
// && (!options?.where?.evmRequester || (log as EventLog).args?.requester === options.where.evmRequester)
|
|
61
|
+
(!options?.where?.queryRadHash ||
|
|
62
|
+
log.args?.radonHash.indexOf(options.where.queryRadHash) >= 0)))
|
|
63
|
+
.then((logs) => logs.map((log) => ({
|
|
64
|
+
evmBlockNumber: BigInt(log.blockNumber),
|
|
65
|
+
evmRequester: log.args?.evmRequester,
|
|
66
|
+
evmTransactionHash: log.transactionHash,
|
|
67
|
+
queryId: BigInt(log.args.queryId),
|
|
68
|
+
queryRadHash: log.args.radonHash,
|
|
69
|
+
queryParams: {
|
|
70
|
+
witnesses: log.args.radonParams[1],
|
|
71
|
+
unitaryReward: BigInt(log.args.radonParams[2]),
|
|
72
|
+
resultMaxSize: log.args.radonParams[0],
|
|
73
|
+
},
|
|
74
|
+
})));
|
|
75
|
+
}
|
|
76
|
+
async filterWitOracleReportEvents(options) {
|
|
77
|
+
const witOracleReportEvent = this.contract.filters.WitOracleReport(options?.where?.evmOrigin, options?.where?.evmConsumer);
|
|
78
|
+
return this.contract
|
|
79
|
+
.queryFilter(witOracleReportEvent, options.fromBlock, options?.toBlock)
|
|
80
|
+
.then((logs) => logs.filter((log) => !log.removed &&
|
|
81
|
+
(!options?.where?.queryRadHash ||
|
|
82
|
+
log.args?.queryRadHash.indexOf(options.where.queryRadHash) >= 0)))
|
|
83
|
+
.then((logs) => logs.map((log) => ({
|
|
84
|
+
evmBlockNumber: BigInt(log.blockNumber),
|
|
85
|
+
evmOrigin: log.args.evmOrigin,
|
|
86
|
+
evmConsumer: log.args.evmConsumer,
|
|
87
|
+
evmReporter: log.args.evmReporter,
|
|
88
|
+
evmTransactionHash: log.transactionHash,
|
|
89
|
+
witDrTxHash: log.args.witDrTxHash,
|
|
90
|
+
queryRadHash: log.args.queryRadHash,
|
|
91
|
+
queryParams: {
|
|
92
|
+
witnesses: log.args.queryParams[1],
|
|
93
|
+
unitaryReward: BigInt(log.args.queryParams[2]),
|
|
94
|
+
resultMaxSize: log.args.queryParams[0],
|
|
95
|
+
},
|
|
96
|
+
resultCborBytes: log.args.resultCborBytes,
|
|
97
|
+
resultTimestamp: Number(log.args.resultTimestamp),
|
|
98
|
+
})));
|
|
99
|
+
}
|
|
100
|
+
async getEvmChainId() {
|
|
101
|
+
return this.provider.getNetwork().then((network) => Number(network.chainId));
|
|
102
|
+
}
|
|
103
|
+
async getEvmChannel() {
|
|
104
|
+
return this.contract.getFunction("channel()").staticCall();
|
|
105
|
+
}
|
|
106
|
+
async getNextQueryId() {
|
|
107
|
+
return this.contract.getFunction("getNextQueryId()").staticCall();
|
|
108
|
+
}
|
|
109
|
+
async getQuery(queryId) {
|
|
110
|
+
return this.contract.getQuery.staticCall(queryId).then((result) => ({
|
|
111
|
+
checkpoint: BigInt(result[5]),
|
|
112
|
+
hash: result[3],
|
|
113
|
+
params: {
|
|
114
|
+
resultMaxSize: result[2][0],
|
|
115
|
+
unitaryReward: result[2][2],
|
|
116
|
+
witnesses: result[2][1],
|
|
117
|
+
},
|
|
118
|
+
request: {
|
|
119
|
+
callbackGas: Number(result[0][1]),
|
|
120
|
+
radonHash: result[0][3],
|
|
121
|
+
requester: result[0][0],
|
|
122
|
+
},
|
|
123
|
+
response: {
|
|
124
|
+
disputer: result[1][4],
|
|
125
|
+
reporter: result[1][0],
|
|
126
|
+
resultTimestamp: Number(result[1][1].toString()),
|
|
127
|
+
resultDrTxHash: result[1][2],
|
|
128
|
+
resultCborBytes: result[1][3],
|
|
129
|
+
},
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
async getQueryResponse(queryId) {
|
|
133
|
+
return this.contract.getQueryResponse
|
|
134
|
+
.staticCall(queryId)
|
|
135
|
+
.then((result) => ({
|
|
136
|
+
disputer: result[4],
|
|
137
|
+
reporter: result[0],
|
|
138
|
+
resultTimestamp: Number(result[1].toString()),
|
|
139
|
+
resultDrTxHash: result[2],
|
|
140
|
+
resultCborBytes: result[3],
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
async getQueryResultStatusDescription(queryId) {
|
|
144
|
+
let reason;
|
|
145
|
+
try {
|
|
146
|
+
try {
|
|
147
|
+
reason =
|
|
148
|
+
await this.contract.getQueryResultStatusDescription.staticCall(queryId);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
const legacy = new Contract(this.address, [
|
|
152
|
+
"function getQueryResultError(uint256) public view returns ((uint8,string))",
|
|
153
|
+
], this.signer);
|
|
154
|
+
reason = await legacy.getQueryResultError
|
|
155
|
+
.staticCall(queryId)
|
|
156
|
+
.then((result) => result[1]);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
reason = "(unparsable error)";
|
|
161
|
+
}
|
|
162
|
+
return reason;
|
|
163
|
+
}
|
|
164
|
+
async getQueryStatuses(queryIds) {
|
|
165
|
+
return this.contract.getQueryStatusBatch
|
|
166
|
+
.staticCall(queryIds)
|
|
167
|
+
.then((statuses) => statuses.map((value) => abiDecodeQueryStatus(value)));
|
|
168
|
+
}
|
|
169
|
+
async getWitOracleConsumerAt(target) {
|
|
170
|
+
return WitOracleConsumer.at(this, target);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Wrapper class for the Wit/Oracle Radon Registry core contract as deployed in some supported EVM network.
|
|
174
|
+
* It allows formal verification of Radon Requests and Witnet-compliant data sources into such network,
|
|
175
|
+
* as to be securely referred on both Wit/Oracle queries pulled from within smart contracts,
|
|
176
|
+
* or Wit/Oracle query results pushed into smart contracts from offchain workflows.
|
|
177
|
+
*/
|
|
178
|
+
async getWitOracleRadonRegistry() {
|
|
179
|
+
return new WitOracleRadonRegistry(this.signer, this.network);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Wrapper class for the Wit/Oracle Request Factory core contract as deployed in some supported EVM network.
|
|
183
|
+
* It allows construction of `WitOracleRadonRequestTemplate` minimal-proxy contracts out of one ore more
|
|
184
|
+
* parameterized Radon Retievals (Witnet-compliant data sources). Template addresses are counter-factual to
|
|
185
|
+
* the set of data sources they are built on.
|
|
186
|
+
*/
|
|
187
|
+
async getWitOracleRadonRequestFactory() {
|
|
188
|
+
return WitOracleRadonRequestFactory.deployed(this, await this.getWitOracleRadonRegistry());
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Wrapper class for Wit/Oracle Radon Template artifacts as deployed in some supported EVM network.
|
|
192
|
+
* `IWitOracleRadonRequestTemplate` contracts enable smart contracts to formally verify Radon Requests
|
|
193
|
+
* built out out of a set of parameterized Witnet-compliant data sources, on the fly.
|
|
194
|
+
*/
|
|
195
|
+
async getWitOracleRadonRequestTemplateAt(target) {
|
|
196
|
+
return WitOracleRadonRequestTemplate.at(this, target);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Wrapper class for Wit/Oracle Radon Modal artifacts as deployed in some supported EVM network.
|
|
200
|
+
* `IWitOracleRadonRequestModal` contracts enable smart contracts to formally verify Radon Requests
|
|
201
|
+
* built out out of a single Radon Retrieval and multiple data providers, all of them expected to
|
|
202
|
+
* provided exactly the same data.
|
|
203
|
+
*/
|
|
204
|
+
async getWitOracleRadonRequestModalAt(target) {
|
|
205
|
+
return WitOracleRadonRequestModal.arguments(this, target);
|
|
206
|
+
}
|
|
207
|
+
async getWitPriceFeedsAt(target) {
|
|
208
|
+
return WitPriceFeeds.at(this, target);
|
|
209
|
+
}
|
|
210
|
+
async getWitPriceFeedsLegacyAt(target) {
|
|
211
|
+
return WitPriceFeedsLegacy.at(this, target);
|
|
212
|
+
}
|
|
213
|
+
async getWitRandomnessAt(target) {
|
|
214
|
+
return WitRandomness.at(this, target);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0T3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93cmFwcGVycy9XaXRPcmFjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVOLFFBQVEsRUFFUixlQUFlLEdBRWYsTUFBTSxRQUFRLENBQUE7QUFPZixPQUFPLEVBQ04sb0JBQW9CLEVBQ3BCLDZCQUE2QixFQUM3QixzQkFBc0IsR0FDdEIsTUFBTSxhQUFhLENBQUE7QUFFcEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3BFLE9BQU8sRUFDTiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLDZCQUE2QixHQUM3QixNQUFNLG1DQUFtQyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxXQUFXO0lBQ3pDLFlBQVksTUFBcUIsRUFBRSxPQUFlO1FBQ2pELEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDakMsR0FBVyxFQUNYLFFBQTBCO1FBRTFCLE1BQU0sUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUU7WUFDcEQsZUFBZSxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxNQUFNLEdBQUcs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QUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBYztRQUM3QyxPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV2l0bmV0IH0gZnJvbSBcIkB3aXRuZXQvc2RrXCJcbmltcG9ydCB7XG5cdHR5cGUgQmxvY2tUYWcsXG5cdENvbnRyYWN0LFxuXHR0eXBlIEV2ZW50TG9nLFxuXHRKc29uUnBjUHJvdmlkZXIsXG5cdHR5cGUgSnNvblJwY1NpZ25lcixcbn0gZnJvbSBcImV0aGVyc1wiXG5pbXBvcnQgdHlwZSB7XG5cdFdpdE9yYWNsZVF1ZXJ5LFxuXHRXaXRPcmFjbGVRdWVyeVBhcmFtcyxcblx0V2l0T3JhY2xlUXVlcnlSZXNwb25zZSxcblx0V2l0T3JhY2xlUXVlcnlTdGF0dXMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiXG5pbXBvcnQge1xuXHRhYmlEZWNvZGVRdWVyeVN0YXR1cyxcblx0YWJpRW5jb2RlV2l0T3JhY2xlUXVlcnlQYXJhbXMsXG5cdGdldEV2bU5ldHdvcmtCeUNoYWluSWQsXG59IGZyb20gXCIuLi91dGlscy5qc1wiXG5cbmltcG9ydCB7IFdpdEFydGlmYWN0IH0gZnJvbSBcIi4vV2l0QXJ0aWZhY3QuanNcIlxuaW1wb3J0IHsgV2l0T3JhY2xlQ29uc3VtZXIgfSBmcm9tIFwiLi9XaXRPcmFjbGVDb25zdW1lci5qc1wiXG5pbXBvcnQgeyBXaXRPcmFjbGVSYWRvblJlZ2lzdHJ5IH0gZnJvbSBcIi4vV2l0T3JhY2xlUmFkb25SZWdpc3RyeS5qc1wiXG5pbXBvcnQge1xuXHRXaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5LFxuXHRXaXRPcmFjbGVSYWRvblJlcXVlc3RNb2RhbCxcblx0V2l0T3JhY2xlUmFkb25SZXF1ZXN0VGVtcGxhdGUsXG59IGZyb20gXCIuL1dpdE9yYWNsZVJhZG9uUmVxdWVzdEZhY3RvcnkuanNcIlxuaW1wb3J0IHsgV2l0UHJpY2VGZWVkcyB9IGZyb20gXCIuL1dpdFByaWNlRmVlZHMuanNcIlxuaW1wb3J0IHsgV2l0UHJpY2VGZWVkc0xlZ2FjeSB9IGZyb20gXCIuL1dpdFByaWNlRmVlZHNMZWdhY3kuanNcIlxuaW1wb3J0IHsgV2l0UmFuZG9tbmVzcyB9IGZyb20gXCIuL1dpdFJhbmRvbW5lc3MuanNcIlxuXG4vKipcbiAqIFdyYXBwZXIgY2xhc3MgZm9yIHRoZSBXaXQvT3JhY2xlIGNvbnRyYWN0IGFzIGRlcGxveWVkIGluIHNvbWUgc3BlY2lmaWVkIEVWTSBuZXR3b3JrLlxuICogSXQgcHJvdmlkZXMgd3JhcHBlcnMgdG8gb3RoZXIgbWFpbiBhcnRpZmFjdHMgb2YgdGhlIFdpdC9PcmFjbGUgRnJhbWV3b3JrLCBhcyB3ZWxsXG4gKiBhcyBmYWN0b3J5IG1ldGhvZHMgZm9yIHdyYXBwaW5nIGV4aXN0aW5nIGBXaXRPcmFjbGVSYWRvblJlcXVlc3RUZW1wbGF0ZWAgYW5kIGBXaXRPcmFjbGVDb25zdW1lcmBcbiAqIGNvbXBsaWFudCBjb250cmFjdHMsIHByb3ZhYmx5IGJvdW5kIHRvIHRoZSBXaXQvT3JhY2xlIGNvcmUgY29udHJhY3QuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgV2l0T3JhY2xlIGV4dGVuZHMgV2l0QXJ0aWZhY3Qge1xuXHRjb25zdHJ1Y3RvcihzaWduZXI6IEpzb25ScGNTaWduZXIsIG5ldHdvcms6IHN0cmluZykge1xuXHRcdHN1cGVyKHNpZ25lciwgbmV0d29yaywgXCJXaXRPcmFjbGVcIilcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBXaXRPcmFjbGUgYXR0YWNoZWQgdG8gdGhlIFdpdC9PcmFjbGUgbWFpbiBhZGRyZXNzIG9uIHRoZSBjb25uZWN0ZWQgRVZNIG5ldHdvcmsuXG5cdCAqIEZhaWxzIGlmIHRoZSBFVk0gbmV0d29yayBzZXJ2ZWQgYXQgdGhlIHNwZWNpZmllZCBKU09OIEVUSC9SUEMgZW5kcG9pbnQsIGlzIG5vdCBjdXJyZW50bHkgYnJpZGdlZFxuXHQgKiB0byB0aGUgV2l0bmV0IGJsb2NrY2hhaW4uXG5cdCAqIEBwYXJhbSB1cmwgRVRIL1JQQyBlbmRwb2ludCBVUkwuXG5cdCAqIEBwYXJhbSBzaWduZXIgU3BlY2lmaWMgc2lnbmVyIGFkZHJlc3MsIG90aGVyIHRoYW4gZGVmYXVsdCwgdG8gdXNlIGZvciBzaWduaW5nIEVWTSB0cmFuc2FjdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGFzeW5jIGZyb21Kc29uUnBjVXJsKFxuXHRcdHVybDogc3RyaW5nLFxuXHRcdHNpZ25lcklkPzogbnVtYmVyIHwgc3RyaW5nLFxuXHQpOiBQcm9taXNlPFdpdE9yYWNsZT4ge1xuXHRcdGNvbnN0IHByb3ZpZGVyID0gbmV3IEpzb25ScGNQcm92aWRlcih1cmwsIHVuZGVmaW5lZCwge1xuXHRcdFx0cG9sbGluZ0ludGVydmFsOiA1MDAwLFxuXHRcdH0pXG5cdFx0Y29uc3Qgc2lnbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0U2lnbmVyKHNpZ25lcklkKVxuXHRcdGNvbnN0IGNoYWluSWQgPSBOdW1iZXIoKGF3YWl0IHByb3ZpZGVyLmdldE5ldHdvcmsoKSkuY2hhaW5JZClcblx0XHRjb25zdCBuZXR3b3JrID0gZ2V0RXZtTmV0d29ya0J5Q2hhaW5JZChjaGFpbklkKVxuXHRcdGlmICghbmV0d29yaykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBXaXRPcmFjbGU6IHVuc3VwcG9ydGVkIGNoYWluIGlkOiAke2NoYWluSWR9YClcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBXaXRPcmFjbGUoc2lnbmVyLCBuZXR3b3JrKVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGVzdGltYXRlQmFzZUZlZShldm1HYXNQcmljZTogYmlnaW50KTogUHJvbWlzZTxiaWdpbnQ+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdFxuXHRcdFx0LmdldEZ1bmN0aW9uKFwiZXN0aW1hdGVCYXNlRmVlKHVpbnQyNTYpXCIpXG5cdFx0XHQuc3RhdGljQ2FsbChldm1HYXNQcmljZSlcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBlc3RpbWF0ZUJhc2VGZWVXaXRoQ2FsbGJhY2soXG5cdFx0ZXZtR2FzUHJpY2U6IGJpZ2ludCxcblx0XHRldm1DYWxsYmFja0dhczogbnVtYmVyLFxuXHQpOiBQcm9taXNlPGJpZ2ludD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHQuZ2V0RnVuY3Rpb24oXCJlc3RpbWF0ZUJhc2VGZWVXaXRoQ2FsbGJhY2sodWludDI1Nix1aW50MjQpXCIpXG5cdFx0XHQuc3RhdGljQ2FsbChldm1HYXNQcmljZSwgZXZtQ2FsbGJhY2tHYXMpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZXN0aW1hdGVFeHRyYUZlZShcblx0XHRldm1HYXNQcmljZTogYmlnaW50LFxuXHRcdGV2bVdpdFByaWNlOiBiaWdpbnQsXG5cdFx0cXVlcnlQYXJhbXM6IFdpdE9yYWNsZVF1ZXJ5UGFyYW1zLFxuXHQpOiBQcm9taXNlPGJpZ2ludD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHQuZ2V0RnVuY3Rpb24oXCJlc3RpbWF0ZUV4dHJhRmVlKHVpbnQyNTYsdWludDI1NiwodWludDE2LHVpbnQxNix1aW50NjQpXCIpXG5cdFx0XHQuc3RhdGljQ2FsbChcblx0XHRcdFx0ZXZtR2FzUHJpY2UsXG5cdFx0XHRcdGV2bVdpdFByaWNlLFxuXHRcdFx0XHRhYmlFbmNvZGVXaXRPcmFjbGVRdWVyeVBhcmFtcyhxdWVyeVBhcmFtcyksXG5cdFx0XHQpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZmlsdGVyV2l0T3JhY2xlUXVlcnlFdmVudHMob3B0aW9uczoge1xuXHRcdGZyb21CbG9jazogQmxvY2tUYWdcblx0XHR0b0Jsb2NrPzogQmxvY2tUYWdcblx0XHR3aGVyZT86IHtcblx0XHRcdGV2bVJlcXVlc3Rlcj86IHN0cmluZ1xuXHRcdFx0cXVlcnlSYWRIYXNoPzogV2l0bmV0Lkhhc2hcblx0XHR9XG5cdH0pOiBQcm9taXNlPFxuXHRcdEFycmF5PHtcblx0XHRcdGV2bUJsb2NrTnVtYmVyOiBiaWdpbnRcblx0XHRcdGV2bVJlcXVlc3Rlcjogc3RyaW5nXG5cdFx0XHRldm1UcmFuc2FjdGlvbkhhc2g6IHN0cmluZ1xuXHRcdFx0cXVlcnlJZDogYmlnaW50XG5cdFx0XHRxdWVyeVJhZEhhc2g6IFdpdG5ldC5IYXNoXG5cdFx0XHRxdWVyeVBhcmFtczogV2l0T3JhY2xlUXVlcnlQYXJhbXNcblx0XHR9PlxuXHQ+IHtcblx0XHRjb25zdCB3aXRPcmFjbGVRdWVyeUV2ZW50ID0gdGhpcy5jb250cmFjdC5maWx0ZXJzW1xuXHRcdFx0XCJXaXRPcmFjbGVRdWVyeShhZGRyZXNzIGluZGV4ZWQsdWludDI1Nix1aW50MjU2LHVpbnQ2NCxieXRlczMyLCh1aW50MTYsdWludDE2LHVpbnQ2NCkpXCJcblx0XHRdKG9wdGlvbnM/LndoZXJlPy5ldm1SZXF1ZXN0ZXIpXG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3Rcblx0XHRcdC5xdWVyeUZpbHRlcih3aXRPcmFjbGVRdWVyeUV2ZW50LCBvcHRpb25zLmZyb21CbG9jaywgb3B0aW9ucz8udG9CbG9jaylcblx0XHRcdC50aGVuKChsb2dzKSA9PlxuXHRcdFx0XHRsb2dzLmZpbHRlcihcblx0XHRcdFx0XHQobG9nKSA9PlxuXHRcdFx0XHRcdFx0IWxvZy5yZW1vdmVkICYmXG5cdFx0XHRcdFx0XHQvLyAmJiAoIW9wdGlvbnM/LndoZXJlPy5ldm1SZXF1ZXN0ZXIgfHwgKGxvZyBhcyBFdmVudExvZykuYXJncz8ucmVxdWVzdGVyID09PSBvcHRpb25zLndoZXJlLmV2bVJlcXVlc3Rlcilcblx0XHRcdFx0XHRcdCghb3B0aW9ucz8ud2hlcmU/LnF1ZXJ5UmFkSGFzaCB8fFxuXHRcdFx0XHRcdFx0XHQobG9nIGFzIEV2ZW50TG9nKS5hcmdzPy5yYWRvbkhhc2guaW5kZXhPZihcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLndoZXJlLnF1ZXJ5UmFkSGFzaCxcblx0XHRcdFx0XHRcdFx0KSA+PSAwKSxcblx0XHRcdFx0KSxcblx0XHRcdClcblx0XHRcdC50aGVuKChsb2dzKSA9PlxuXHRcdFx0XHRsb2dzLm1hcCgobG9nKSA9PiAoe1xuXHRcdFx0XHRcdGV2bUJsb2NrTnVtYmVyOiBCaWdJbnQobG9nLmJsb2NrTnVtYmVyKSxcblx0XHRcdFx0XHRldm1SZXF1ZXN0ZXI6IChsb2cgYXMgRXZlbnRMb2cpLmFyZ3M/LmV2bVJlcXVlc3RlciBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0ZXZtVHJhbnNhY3Rpb25IYXNoOiBsb2cudHJhbnNhY3Rpb25IYXNoLFxuXHRcdFx0XHRcdHF1ZXJ5SWQ6IEJpZ0ludCgobG9nIGFzIEV2ZW50TG9nKS5hcmdzLnF1ZXJ5SWQpLFxuXHRcdFx0XHRcdHF1ZXJ5UmFkSGFzaDogKGxvZyBhcyBFdmVudExvZykuYXJncy5yYWRvbkhhc2ggYXMgV2l0bmV0Lkhhc2gsXG5cdFx0XHRcdFx0cXVlcnlQYXJhbXM6IHtcblx0XHRcdFx0XHRcdHdpdG5lc3NlczogKGxvZyBhcyBFdmVudExvZykuYXJncy5yYWRvblBhcmFtc1sxXSBhcyBudW1iZXIsXG5cdFx0XHRcdFx0XHR1bml0YXJ5UmV3YXJkOiBCaWdJbnQoKGxvZyBhcyBFdmVudExvZykuYXJncy5yYWRvblBhcmFtc1syXSksXG5cdFx0XHRcdFx0XHRyZXN1bHRNYXhTaXplOiAobG9nIGFzIEV2ZW50TG9nKS5hcmdzLnJhZG9uUGFyYW1zWzBdIGFzIG51bWJlcixcblx0XHRcdFx0XHR9IGFzIFdpdE9yYWNsZVF1ZXJ5UGFyYW1zLFxuXHRcdFx0XHR9KSksXG5cdFx0XHQpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZmlsdGVyV2l0T3JhY2xlUmVwb3J0RXZlbnRzKG9wdGlvbnM6IHtcblx0XHRmcm9tQmxvY2s6IEJsb2NrVGFnXG5cdFx0dG9CbG9jaz86IEJsb2NrVGFnXG5cdFx0d2hlcmU/OiB7XG5cdFx0XHRldm1PcmlnaW4/OiBzdHJpbmdcblx0XHRcdGV2bUNvbnN1bWVyPzogc3RyaW5nXG5cdFx0XHRxdWVyeVJhZEhhc2g/OiBXaXRuZXQuSGFzaFxuXHRcdH1cblx0fSk6IFByb21pc2U8XG5cdFx0QXJyYXk8e1xuXHRcdFx0ZXZtQmxvY2tOdW1iZXI6IGJpZ2ludFxuXHRcdFx0ZXZtT3JpZ2luOiBzdHJpbmdcblx0XHRcdGV2bUNvbnN1bWVyOiBzdHJpbmdcblx0XHRcdGV2bVJlcG9ydGVyOiBzdHJpbmdcblx0XHRcdGV2bVRyYW5zYWN0aW9uSGFzaDogc3RyaW5nXG5cdFx0XHR3aXREclR4SGFzaDogV2l0bmV0Lkhhc2hcblx0XHRcdHF1ZXJ5UmFkSGFzaDogV2l0bmV0Lkhhc2hcblx0XHRcdHF1ZXJ5UGFyYW1zOiBXaXRPcmFjbGVRdWVyeVBhcmFtc1xuXHRcdFx0cmVzdWx0Q2JvckJ5dGVzOiBXaXRuZXQuSGV4U3RyaW5nXG5cdFx0XHRyZXN1bHRUaW1lc3RhbXA6IG51bWJlclxuXHRcdH0+XG5cdD4ge1xuXHRcdGNvbnN0IHdpdE9yYWNsZVJlcG9ydEV2ZW50ID0gdGhpcy5jb250cmFjdC5maWx0ZXJzLldpdE9yYWNsZVJlcG9ydChcblx0XHRcdG9wdGlvbnM/LndoZXJlPy5ldm1PcmlnaW4sXG5cdFx0XHRvcHRpb25zPy53aGVyZT8uZXZtQ29uc3VtZXIsXG5cdFx0KVxuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHQucXVlcnlGaWx0ZXIod2l0T3JhY2xlUmVwb3J0RXZlbnQsIG9wdGlvbnMuZnJvbUJsb2NrLCBvcHRpb25zPy50b0Jsb2NrKVxuXHRcdFx0LnRoZW4oKGxvZ3MpID0+XG5cdFx0XHRcdGxvZ3MuZmlsdGVyKFxuXHRcdFx0XHRcdChsb2cpID0+XG5cdFx0XHRcdFx0XHQhbG9nLnJlbW92ZWQgJiZcblx0XHRcdFx0XHRcdCghb3B0aW9ucz8ud2hlcmU/LnF1ZXJ5UmFkSGFzaCB8fFxuXHRcdFx0XHRcdFx0XHQobG9nIGFzIEV2ZW50TG9nKS5hcmdzPy5xdWVyeVJhZEhhc2guaW5kZXhPZihcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLndoZXJlLnF1ZXJ5UmFkSGFzaCxcblx0XHRcdFx0XHRcdFx0KSA+PSAwKSxcblx0XHRcdFx0KSxcblx0XHRcdClcblx0XHRcdC50aGVuKChsb2dzKSA9PlxuXHRcdFx0XHRsb2dzLm1hcCgobG9nKSA9PiAoe1xuXHRcdFx0XHRcdGV2bUJsb2NrTnVtYmVyOiBCaWdJbnQobG9nLmJsb2NrTnVtYmVyKSxcblx0XHRcdFx0XHRldm1PcmlnaW46IChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MuZXZtT3JpZ2luLFxuXHRcdFx0XHRcdGV2bUNvbnN1bWVyOiAobG9nIGFzIEV2ZW50TG9nKS5hcmdzLmV2bUNvbnN1bWVyLFxuXHRcdFx0XHRcdGV2bVJlcG9ydGVyOiAobG9nIGFzIEV2ZW50TG9nKS5hcmdzLmV2bVJlcG9ydGVyLFxuXHRcdFx0XHRcdGV2bVRyYW5zYWN0aW9uSGFzaDogbG9nLnRyYW5zYWN0aW9uSGFzaCxcblx0XHRcdFx0XHR3aXREclR4SGFzaDogKGxvZyBhcyBFdmVudExvZykuYXJncy53aXREclR4SGFzaCxcblx0XHRcdFx0XHRxdWVyeVJhZEhhc2g6IChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MucXVlcnlSYWRIYXNoLFxuXHRcdFx0XHRcdHF1ZXJ5UGFyYW1zOiB7XG5cdFx0XHRcdFx0XHR3aXRuZXNzZXM6IChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MucXVlcnlQYXJhbXNbMV0gYXMgbnVtYmVyLFxuXHRcdFx0XHRcdFx0dW5pdGFyeVJld2FyZDogQmlnSW50KChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MucXVlcnlQYXJhbXNbMl0pLFxuXHRcdFx0XHRcdFx0cmVzdWx0TWF4U2l6ZTogKGxvZyBhcyBFdmVudExvZykuYXJncy5xdWVyeVBhcmFtc1swXSBhcyBudW1iZXIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRyZXN1bHRDYm9yQnl0ZXM6IChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MucmVzdWx0Q2JvckJ5dGVzLFxuXHRcdFx0XHRcdHJlc3VsdFRpbWVzdGFtcDogTnVtYmVyKChsb2cgYXMgRXZlbnRMb2cpLmFyZ3MucmVzdWx0VGltZXN0YW1wKSxcblx0XHRcdFx0fSkpLFxuXHRcdFx0KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGdldEV2bUNoYWluSWQoKTogUHJvbWlzZTxudW1iZXI+IHtcblx0XHRyZXR1cm4gdGhpcy5wcm92aWRlci5nZXROZXR3b3JrKCkudGhlbigobmV0d29yaykgPT4gTnVtYmVyKG5ldHdvcmsuY2hhaW5JZCkpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQ2hhbm5lbCgpOiBQcm9taXNlPFdpdG5ldC5IZXhTdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5nZXRGdW5jdGlvbihcImNoYW5uZWwoKVwiKS5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXROZXh0UXVlcnlJZCgpOiBQcm9taXNlPGJpZ2ludD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0LmdldEZ1bmN0aW9uKFwiZ2V0TmV4dFF1ZXJ5SWQoKVwiKS5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRRdWVyeShxdWVyeUlkOiBiaWdpbnQpOiBQcm9taXNlPFdpdE9yYWNsZVF1ZXJ5PiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZ2V0UXVlcnkuc3RhdGljQ2FsbChxdWVyeUlkKS50aGVuKChyZXN1bHQpID0+ICh7XG5cdFx0XHRjaGVja3BvaW50OiBCaWdJbnQocmVzdWx0WzVdKSxcblx0XHRcdGhhc2g6IHJlc3VsdFszXSxcblx0XHRcdHBhcmFtczoge1xuXHRcdFx0XHRyZXN1bHRNYXhTaXplOiByZXN1bHRbMl1bMF0sXG5cdFx0XHRcdHVuaXRhcnlSZXdhcmQ6IHJlc3VsdFsyXVsyXSxcblx0XHRcdFx0d2l0bmVzc2VzOiByZXN1bHRbMl1bMV0sXG5cdFx0XHR9LFxuXHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRjYWxsYmFja0dhczogTnVtYmVyKHJlc3VsdFswXVsxXSksXG5cdFx0XHRcdHJhZG9uSGFzaDogcmVzdWx0WzBdWzNdLFxuXHRcdFx0XHRyZXF1ZXN0ZXI6IHJlc3VsdFswXVswXSxcblx0XHRcdH0sXG5cdFx0XHRyZXNwb25zZToge1xuXHRcdFx0XHRkaXNwdXRlcjogcmVzdWx0WzFdWzRdLFxuXHRcdFx0XHRyZXBvcnRlcjogcmVzdWx0WzFdWzBdLFxuXHRcdFx0XHRyZXN1bHRUaW1lc3RhbXA6IE51bWJlcihyZXN1bHRbMV1bMV0udG9TdHJpbmcoKSksXG5cdFx0XHRcdHJlc3VsdERyVHhIYXNoOiByZXN1bHRbMV1bMl0sXG5cdFx0XHRcdHJlc3VsdENib3JCeXRlczogcmVzdWx0WzFdWzNdLFxuXHRcdFx0fSxcblx0XHR9KSlcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRRdWVyeVJlc3BvbnNlKFxuXHRcdHF1ZXJ5SWQ6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxXaXRPcmFjbGVRdWVyeVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZ2V0UXVlcnlSZXNwb25zZVxuXHRcdFx0LnN0YXRpY0NhbGwocXVlcnlJZClcblx0XHRcdC50aGVuKChyZXN1bHQpID0+ICh7XG5cdFx0XHRcdGRpc3B1dGVyOiByZXN1bHRbNF0sXG5cdFx0XHRcdHJlcG9ydGVyOiByZXN1bHRbMF0sXG5cdFx0XHRcdHJlc3VsdFRpbWVzdGFtcDogTnVtYmVyKHJlc3VsdFsxXS50b1N0cmluZygpKSxcblx0XHRcdFx0cmVzdWx0RHJUeEhhc2g6IHJlc3VsdFsyXSxcblx0XHRcdFx0cmVzdWx0Q2JvckJ5dGVzOiByZXN1bHRbM10sXG5cdFx0XHR9KSlcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRRdWVyeVJlc3VsdFN0YXR1c0Rlc2NyaXB0aW9uKFxuXHRcdHF1ZXJ5SWQ6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRsZXQgcmVhc29uXG5cdFx0dHJ5IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJlYXNvbiA9XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jb250cmFjdC5nZXRRdWVyeVJlc3VsdFN0YXR1c0Rlc2NyaXB0aW9uLnN0YXRpY0NhbGwoXG5cdFx0XHRcdFx0XHRxdWVyeUlkLFxuXHRcdFx0XHRcdClcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRjb25zdCBsZWdhY3kgPSBuZXcgQ29udHJhY3QoXG5cdFx0XHRcdFx0dGhpcy5hZGRyZXNzLFxuXHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFwiZnVuY3Rpb24gZ2V0UXVlcnlSZXN1bHRFcnJvcih1aW50MjU2KSBwdWJsaWMgdmlldyByZXR1cm5zICgodWludDgsc3RyaW5nKSlcIixcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdHRoaXMuc2lnbmVyLFxuXHRcdFx0XHQpXG5cdFx0XHRcdHJlYXNvbiA9IGF3YWl0IGxlZ2FjeS5nZXRRdWVyeVJlc3VsdEVycm9yXG5cdFx0XHRcdFx0LnN0YXRpY0NhbGwocXVlcnlJZClcblx0XHRcdFx0XHQudGhlbigocmVzdWx0KSA9PiByZXN1bHRbMV0pXG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZWFzb24gPSBcIih1bnBhcnNhYmxlIGVycm9yKVwiXG5cdFx0fVxuXHRcdHJldHVybiByZWFzb25cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRRdWVyeVN0YXR1c2VzKFxuXHRcdHF1ZXJ5SWRzOiBiaWdpbnRbXSxcblx0KTogUHJvbWlzZTxBcnJheTxXaXRPcmFjbGVRdWVyeVN0YXR1cz4+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5nZXRRdWVyeVN0YXR1c0JhdGNoXG5cdFx0XHQuc3RhdGljQ2FsbChxdWVyeUlkcylcblx0XHRcdC50aGVuKChzdGF0dXNlczogQXJyYXk8YmlnaW50PikgPT5cblx0XHRcdFx0c3RhdHVzZXMubWFwKCh2YWx1ZSkgPT4gYWJpRGVjb2RlUXVlcnlTdGF0dXModmFsdWUpKSxcblx0XHRcdClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRXaXRPcmFjbGVDb25zdW1lckF0KFxuXHRcdHRhcmdldDogc3RyaW5nLFxuXHQpOiBQcm9taXNlPFdpdE9yYWNsZUNvbnN1bWVyPiB7XG5cdFx0cmV0dXJuIFdpdE9yYWNsZUNvbnN1bWVyLmF0KHRoaXMsIHRhcmdldClcblx0fVxuXG5cdC8qKlxuXHQgKiBXcmFwcGVyIGNsYXNzIGZvciB0aGUgV2l0L09yYWNsZSBSYWRvbiBSZWdpc3RyeSBjb3JlIGNvbnRyYWN0IGFzIGRlcGxveWVkIGluIHNvbWUgc3VwcG9ydGVkIEVWTSBuZXR3b3JrLlxuXHQgKiBJdCBhbGxvd3MgZm9ybWFsIHZlcmlmaWNhdGlvbiBvZiBSYWRvbiBSZXF1ZXN0cyBhbmQgV2l0bmV0LWNvbXBsaWFudCBkYXRhIHNvdXJjZXMgaW50byBzdWNoIG5ldHdvcmssXG5cdCAqIGFzIHRvIGJlIHNlY3VyZWx5IHJlZmVycmVkIG9uIGJvdGggV2l0L09yYWNsZSBxdWVyaWVzIHB1bGxlZCBmcm9tIHdpdGhpbiBzbWFydCBjb250cmFjdHMsXG5cdCAqIG9yIFdpdC9PcmFjbGUgcXVlcnkgcmVzdWx0cyBwdXNoZWQgaW50byBzbWFydCBjb250cmFjdHMgZnJvbSBvZmZjaGFpbiB3b3JrZmxvd3MuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZ2V0V2l0T3JhY2xlUmFkb25SZWdpc3RyeSgpOiBQcm9taXNlPFdpdE9yYWNsZVJhZG9uUmVnaXN0cnk+IHtcblx0XHRyZXR1cm4gbmV3IFdpdE9yYWNsZVJhZG9uUmVnaXN0cnkodGhpcy5zaWduZXIsIHRoaXMubmV0d29yaylcblx0fVxuXG5cdC8qKlxuXHQgKiBXcmFwcGVyIGNsYXNzIGZvciB0aGUgV2l0L09yYWNsZSBSZXF1ZXN0IEZhY3RvcnkgY29yZSBjb250cmFjdCBhcyBkZXBsb3llZCBpbiBzb21lIHN1cHBvcnRlZCBFVk0gbmV0d29yay5cblx0ICogSXQgYWxsb3dzIGNvbnN0cnVjdGlvbiBvZiBgV2l0T3JhY2xlUmFkb25SZXF1ZXN0VGVtcGxhdGVgIG1pbmltYWwtcHJveHkgY29udHJhY3RzIG91dCBvZiBvbmUgb3JlIG1vcmVcblx0ICogcGFyYW1ldGVyaXplZCBSYWRvbiBSZXRpZXZhbHMgKFdpdG5ldC1jb21wbGlhbnQgZGF0YSBzb3VyY2VzKS4gVGVtcGxhdGUgYWRkcmVzc2VzIGFyZSBjb3VudGVyLWZhY3R1YWwgdG9cblx0ICogdGhlIHNldCBvZiBkYXRhIHNvdXJjZXMgdGhleSBhcmUgYnVpbHQgb24uXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZ2V0V2l0T3JhY2xlUmFkb25SZXF1ZXN0RmFjdG9yeSgpOiBQcm9taXNlPFdpdE9yYWNsZVJhZG9uUmVxdWVzdEZhY3Rvcnk+IHtcblx0XHRyZXR1cm4gV2l0T3JhY2xlUmFkb25SZXF1ZXN0RmFjdG9yeS5kZXBsb3llZChcblx0XHRcdHRoaXMsXG5cdFx0XHRhd2FpdCB0aGlzLmdldFdpdE9yYWNsZVJhZG9uUmVnaXN0cnkoKSxcblx0XHQpXG5cdH1cblxuXHQvKipcblx0ICogV3JhcHBlciBjbGFzcyBmb3IgV2l0L09yYWNsZSBSYWRvbiBUZW1wbGF0ZSBhcnRpZmFjdHMgYXMgZGVwbG95ZWQgaW4gc29tZSBzdXBwb3J0ZWQgRVZNIG5ldHdvcmsuXG5cdCAqIGBJV2l0T3JhY2xlUmFkb25SZXF1ZXN0VGVtcGxhdGVgIGNvbnRyYWN0cyBlbmFibGUgc21hcnQgY29udHJhY3RzIHRvIGZvcm1hbGx5IHZlcmlmeSBSYWRvbiBSZXF1ZXN0c1xuXHQgKiBidWlsdCBvdXQgb3V0IG9mIGEgc2V0IG9mIHBhcmFtZXRlcml6ZWQgV2l0bmV0LWNvbXBsaWFudCBkYXRhIHNvdXJjZXMsIG9uIHRoZSBmbHkuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZ2V0V2l0T3JhY2xlUmFkb25SZXF1ZXN0VGVtcGxhdGVBdChcblx0XHR0YXJnZXQ6IHN0cmluZyxcblx0KTogUHJvbWlzZTxXaXRPcmFjbGVSYWRvblJlcXVlc3RUZW1wbGF0ZT4ge1xuXHRcdHJldHVybiBXaXRPcmFjbGVSYWRvblJlcXVlc3RUZW1wbGF0ZS5hdCh0aGlzLCB0YXJnZXQpXG5cdH1cblxuXHQvKipcblx0ICogV3JhcHBlciBjbGFzcyBmb3IgV2l0L09yYWNsZSBSYWRvbiBNb2RhbCBhcnRpZmFjdHMgYXMgZGVwbG95ZWQgaW4gc29tZSBzdXBwb3J0ZWQgRVZNIG5ldHdvcmsuXG5cdCAqIGBJV2l0T3JhY2xlUmFkb25SZXF1ZXN0TW9kYWxgIGNvbnRyYWN0cyBlbmFibGUgc21hcnQgY29udHJhY3RzIHRvIGZvcm1hbGx5IHZlcmlmeSBSYWRvbiBSZXF1ZXN0c1xuXHQgKiBidWlsdCBvdXQgb3V0IG9mIGEgc2luZ2xlIFJhZG9uIFJldHJpZXZhbCBhbmQgbXVsdGlwbGUgZGF0YSBwcm92aWRlcnMsIGFsbCBvZiB0aGVtIGV4cGVjdGVkIHRvXG5cdCAqIHByb3ZpZGVkIGV4YWN0bHkgdGhlIHNhbWUgZGF0YS5cblx0ICovXG5cdHB1YmxpYyBhc3luYyBnZXRXaXRPcmFjbGVSYWRvblJlcXVlc3RNb2RhbEF0KFxuXHRcdHRhcmdldDogc3RyaW5nLFxuXHQpOiBQcm9taXNlPFdpdE9yYWNsZVJhZG9uUmVxdWVzdE1vZGFsPiB7XG5cdFx0cmV0dXJuIFdpdE9yYWNsZVJhZG9uUmVxdWVzdE1vZGFsLmFyZ3VtZW50cyh0aGlzLCB0YXJnZXQpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0V2l0UHJpY2VGZWVkc0F0KHRhcmdldDogc3RyaW5nKTogUHJvbWlzZTxXaXRQcmljZUZlZWRzPiB7XG5cdFx0cmV0dXJuIFdpdFByaWNlRmVlZHMuYXQodGhpcywgdGFyZ2V0KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGdldFdpdFByaWNlRmVlZHNMZWdhY3lBdChcblx0XHR0YXJnZXQ6IHN0cmluZyxcblx0KTogUHJvbWlzZTxXaXRQcmljZUZlZWRzTGVnYWN5PiB7XG5cdFx0cmV0dXJuIFdpdFByaWNlRmVlZHNMZWdhY3kuYXQodGhpcywgdGFyZ2V0KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGdldFdpdFJhbmRvbW5lc3NBdCh0YXJnZXQ6IHN0cmluZyk6IFByb21pc2U8V2l0UmFuZG9tbmVzcz4ge1xuXHRcdHJldHVybiBXaXRSYW5kb21uZXNzLmF0KHRoaXMsIHRhcmdldClcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ContractTransactionReceipt, TransactionReceipt } from "ethers";
|
|
2
|
+
import type { DataPushReport } from "../types.js";
|
|
3
|
+
import { WitAppliance } from "./WitAppliance.js";
|
|
4
|
+
import type { WitOracle } from "./WitOracle.js";
|
|
5
|
+
export declare class WitOracleConsumer extends WitAppliance {
|
|
6
|
+
protected constructor(witOracle: WitOracle, target: string);
|
|
7
|
+
static at(witOracle: WitOracle, target: string): Promise<WitOracleConsumer>;
|
|
8
|
+
pushDataReport(report: DataPushReport, options?: {
|
|
9
|
+
confirmations?: number;
|
|
10
|
+
gasPrice?: bigint;
|
|
11
|
+
gasLimit?: bigint;
|
|
12
|
+
onDataPushReportTransaction?: (txHash: string) => any;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}): Promise<ContractTransactionReceipt | TransactionReceipt | null>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=WitOracleConsumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WitOracleConsumer.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitOracleConsumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,qBAAa,iBAAkB,SAAQ,YAAY;IAClD,SAAS,aAAa,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;WAI7C,EAAE,CACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC;IAWhB,cAAc,CAC1B,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;QACT,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,2BAA2B,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAA;QACrD,OAAO,CAAC,EAAE,MAAM,CAAA;KAChB,GACC,OAAO,CAAC,0BAA0B,GAAG,kBAAkB,GAAG,IAAI,CAAC;CAclE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { abiEncodeDataPushReport } from "../utils.js";
|
|
2
|
+
import { WitAppliance } from "./WitAppliance.js";
|
|
3
|
+
export class WitOracleConsumer extends WitAppliance {
|
|
4
|
+
constructor(witOracle, target) {
|
|
5
|
+
super(witOracle, "WitOracleConsumer", target);
|
|
6
|
+
}
|
|
7
|
+
static async at(witOracle, target) {
|
|
8
|
+
const consumer = new WitOracleConsumer(witOracle, target);
|
|
9
|
+
const consumerWitOracleAddr = await consumer.contract.witOracle.staticCall();
|
|
10
|
+
if (consumerWitOracleAddr !== witOracle.address) {
|
|
11
|
+
throw new Error(`${WitOracleConsumer.constructor.name} at ${target}: mismatching Wit/Oracle address (${consumerWitOracleAddr})`);
|
|
12
|
+
}
|
|
13
|
+
return consumer;
|
|
14
|
+
}
|
|
15
|
+
async pushDataReport(report, options) {
|
|
16
|
+
return this.contract.pushDataReport
|
|
17
|
+
.populateTransaction(abiEncodeDataPushReport(report), report?.evm_proof)
|
|
18
|
+
.then((tx) => {
|
|
19
|
+
tx.gasPrice = options?.gasPrice || tx?.gasPrice;
|
|
20
|
+
tx.gasLimit = options?.gasLimit || tx?.gasLimit;
|
|
21
|
+
return this.signer.sendTransaction(tx);
|
|
22
|
+
})
|
|
23
|
+
.then((response) => {
|
|
24
|
+
if (options?.onDataPushReportTransaction)
|
|
25
|
+
options.onDataPushReportTransaction(response.hash);
|
|
26
|
+
return response.wait(options?.confirmations || 1, options?.timeout);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0T3JhY2xlQ29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3dyYXBwZXJzL1dpdE9yYWNsZUNvbnN1bWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHaEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQVk7SUFDbEQsWUFBc0IsU0FBb0IsRUFBRSxNQUFjO1FBQ3pELEtBQUssQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNkLFNBQW9CLEVBQ3BCLE1BQWM7UUFFZCxNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN6RCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDNUUsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FDZCxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sTUFBTSxxQ0FBcUMscUJBQXFCLEdBQUcsQ0FDL0csQ0FBQTtRQUNGLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQTtJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDMUIsTUFBc0IsRUFDdEIsT0FNQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjO2FBQ2pDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7YUFDdkUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDWixFQUFFLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQTtZQUMvQyxFQUFFLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQTtZQUMvQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksT0FBTyxFQUFFLDJCQUEyQjtnQkFDdkMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BFLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb250cmFjdFRyYW5zYWN0aW9uUmVjZWlwdCwgVHJhbnNhY3Rpb25SZWNlaXB0IH0gZnJvbSBcImV0aGVyc1wiXG5pbXBvcnQgdHlwZSB7IERhdGFQdXNoUmVwb3J0IH0gZnJvbSBcIi4uL3R5cGVzLmpzXCJcbmltcG9ydCB7IGFiaUVuY29kZURhdGFQdXNoUmVwb3J0IH0gZnJvbSBcIi4uL3V0aWxzLmpzXCJcbmltcG9ydCB7IFdpdEFwcGxpYW5jZSB9IGZyb20gXCIuL1dpdEFwcGxpYW5jZS5qc1wiXG5pbXBvcnQgdHlwZSB7IFdpdE9yYWNsZSB9IGZyb20gXCIuL1dpdE9yYWNsZS5qc1wiXG5cbmV4cG9ydCBjbGFzcyBXaXRPcmFjbGVDb25zdW1lciBleHRlbmRzIFdpdEFwcGxpYW5jZSB7XG5cdHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih3aXRPcmFjbGU6IFdpdE9yYWNsZSwgdGFyZ2V0OiBzdHJpbmcpIHtcblx0XHRzdXBlcih3aXRPcmFjbGUsIFwiV2l0T3JhY2xlQ29uc3VtZXJcIiwgdGFyZ2V0KVxuXHR9XG5cblx0c3RhdGljIGFzeW5jIGF0KFxuXHRcdHdpdE9yYWNsZTogV2l0T3JhY2xlLFxuXHRcdHRhcmdldDogc3RyaW5nLFxuXHQpOiBQcm9taXNlPFdpdE9yYWNsZUNvbnN1bWVyPiB7XG5cdFx0Y29uc3QgY29uc3VtZXIgPSBuZXcgV2l0T3JhY2xlQ29uc3VtZXIod2l0T3JhY2xlLCB0YXJnZXQpXG5cdFx0Y29uc3QgY29uc3VtZXJXaXRPcmFjbGVBZGRyID0gYXdhaXQgY29uc3VtZXIuY29udHJhY3Qud2l0T3JhY2xlLnN0YXRpY0NhbGwoKVxuXHRcdGlmIChjb25zdW1lcldpdE9yYWNsZUFkZHIgIT09IHdpdE9yYWNsZS5hZGRyZXNzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdGAke1dpdE9yYWNsZUNvbnN1bWVyLmNvbnN0cnVjdG9yLm5hbWV9IGF0ICR7dGFyZ2V0fTogbWlzbWF0Y2hpbmcgV2l0L09yYWNsZSBhZGRyZXNzICgke2NvbnN1bWVyV2l0T3JhY2xlQWRkcn0pYCxcblx0XHRcdClcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnN1bWVyXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgcHVzaERhdGFSZXBvcnQoXG5cdFx0cmVwb3J0OiBEYXRhUHVzaFJlcG9ydCxcblx0XHRvcHRpb25zPzoge1xuXHRcdFx0Y29uZmlybWF0aW9ucz86IG51bWJlclxuXHRcdFx0Z2FzUHJpY2U/OiBiaWdpbnRcblx0XHRcdGdhc0xpbWl0PzogYmlnaW50XG5cdFx0XHRvbkRhdGFQdXNoUmVwb3J0VHJhbnNhY3Rpb24/OiAodHhIYXNoOiBzdHJpbmcpID0+IGFueVxuXHRcdFx0dGltZW91dD86IG51bWJlclxuXHRcdH0sXG5cdCk6IFByb21pc2U8Q29udHJhY3RUcmFuc2FjdGlvblJlY2VpcHQgfCBUcmFuc2FjdGlvblJlY2VpcHQgfCBudWxsPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QucHVzaERhdGFSZXBvcnRcblx0XHRcdC5wb3B1bGF0ZVRyYW5zYWN0aW9uKGFiaUVuY29kZURhdGFQdXNoUmVwb3J0KHJlcG9ydCksIHJlcG9ydD8uZXZtX3Byb29mKVxuXHRcdFx0LnRoZW4oKHR4KSA9PiB7XG5cdFx0XHRcdHR4Lmdhc1ByaWNlID0gb3B0aW9ucz8uZ2FzUHJpY2UgfHwgdHg/Lmdhc1ByaWNlXG5cdFx0XHRcdHR4Lmdhc0xpbWl0ID0gb3B0aW9ucz8uZ2FzTGltaXQgfHwgdHg/Lmdhc0xpbWl0XG5cdFx0XHRcdHJldHVybiB0aGlzLnNpZ25lci5zZW5kVHJhbnNhY3Rpb24odHgpXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChvcHRpb25zPy5vbkRhdGFQdXNoUmVwb3J0VHJhbnNhY3Rpb24pXG5cdFx0XHRcdFx0b3B0aW9ucy5vbkRhdGFQdXNoUmVwb3J0VHJhbnNhY3Rpb24ocmVzcG9uc2UuaGFzaClcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlLndhaXQob3B0aW9ucz8uY29uZmlybWF0aW9ucyB8fCAxLCBvcHRpb25zPy50aW1lb3V0KVxuXHRcdFx0fSlcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Witnet } from "@witnet/sdk";
|
|
2
|
+
import type { ContractTransactionReceipt, JsonRpcSigner } from "ethers";
|
|
3
|
+
import { WitArtifact } from "./WitArtifact.js";
|
|
4
|
+
/**
|
|
5
|
+
* Wrapper class for the Wit/Oracle Radon Registry core contract as deployed in some supported EVM network.
|
|
6
|
+
* It allows formal verification of Radon Requests and Witnet-compliant data sources into such network,
|
|
7
|
+
* as to be securely referred on both Wit/Oracle queries pulled from within smart contracts,
|
|
8
|
+
* or Wit/Oracle query results pushed into smart contracts from offchain workflows.
|
|
9
|
+
*/
|
|
10
|
+
export declare class WitOracleRadonRegistry extends WitArtifact {
|
|
11
|
+
constructor(signer: JsonRpcSigner, network: string);
|
|
12
|
+
/**
|
|
13
|
+
* Determines the unique hash that would identify the given Radon Retrieval, if it was
|
|
14
|
+
* formally verified into the connected EVM network.
|
|
15
|
+
* @param retrieval Instance of a Radon Retrieval object.
|
|
16
|
+
*/
|
|
17
|
+
determineRadonRetrievalHash(retrieval: Witnet.Radon.RadonRetrieval): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns information related to some previously verified Radon Request, on the connected EVM network.
|
|
20
|
+
* @param radHash The RAD hash that uniquely identifies the Radon Request.
|
|
21
|
+
*/
|
|
22
|
+
lookupRadonRequest(radHash: string): Promise<Witnet.Radon.RadonRequest>;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the bytecode of some previously verified Radon Request, on the connected EVM network.
|
|
25
|
+
* @param radHash The RAD hash that uniquely identifies the Radon Request.
|
|
26
|
+
*/
|
|
27
|
+
lookupRadonRequestBytecode(radHash: string): Promise<Witnet.HexString>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns information about some previously verified Radon Retrieval on the connected EVM network.
|
|
30
|
+
* This information includes retrieval the method, URL, body, headers and the Radon script in charge
|
|
31
|
+
* to transform data before delivery, on the connected EVM network.
|
|
32
|
+
* @param radHash The RAD hash that uniquely identifies the Radon Request.
|
|
33
|
+
*/
|
|
34
|
+
lookupRadonRetrieval(hash: string): Promise<Witnet.Radon.RadonRetrieval>;
|
|
35
|
+
/**
|
|
36
|
+
* Formally verify the given Radon Request object into the connected EVM network.
|
|
37
|
+
* It also verifies all the Radon Retrieval scripts (i.e. data source) the Request
|
|
38
|
+
* relies on, if not yet done before.
|
|
39
|
+
*
|
|
40
|
+
* Verifying Radon assets modifies the EVM storage and therefore requires
|
|
41
|
+
* spending gas in proportion to the number and complexity of the data sources,
|
|
42
|
+
* and whether these had been previously verified before or not.
|
|
43
|
+
*
|
|
44
|
+
* If the given Radon Request happened to be already verified, no gas would be actually consumed.
|
|
45
|
+
*
|
|
46
|
+
* @param request Instance of a Radon Request object.
|
|
47
|
+
* @param options Async EVM transaction handlers.
|
|
48
|
+
* @returns The RAD hash of the Radon Request, as verified on the connected EVM network.
|
|
49
|
+
*/
|
|
50
|
+
verifyRadonRequest(request: Witnet.Radon.RadonRequest, options?: {
|
|
51
|
+
/**
|
|
52
|
+
* Number of block confirmations to wait for after verifying transaction gets mined (defaults to 1).
|
|
53
|
+
*/
|
|
54
|
+
confirmations?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Callback handler called just in case a `verifyRadonRequest` transaction is ultimately required.
|
|
57
|
+
*/
|
|
58
|
+
onVerifyRadonRequest: (radHash: string) => any;
|
|
59
|
+
/**
|
|
60
|
+
* Callback handler called once the `verifyRadonRequest` transaction gets confirmed.
|
|
61
|
+
* @param receipt The `verifyRadonRequest` transaction receipt.
|
|
62
|
+
*/
|
|
63
|
+
onVerifyRadonRequestReceipt?: (receipt: ContractTransactionReceipt | null) => any;
|
|
64
|
+
/**
|
|
65
|
+
* Callback handler called for every involved `verifyRadonRetrieval` transaction.
|
|
66
|
+
*/
|
|
67
|
+
onVerifyRadonRetrieval?: (hash: string) => any;
|
|
68
|
+
/**
|
|
69
|
+
* Callback handler called after every involved `verifyRadonRetrieval` transaction gets confirmed.
|
|
70
|
+
* @param receipt The `verifyRadonRetrieval` transaction receipt.
|
|
71
|
+
*/
|
|
72
|
+
onVerifyRadonRetrievalReceipt?: (receipt: ContractTransactionReceipt | null) => any;
|
|
73
|
+
}): Promise<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Formally verify the given Radon Retrieval script (i.e. data source), into the connected EVM network.
|
|
76
|
+
*
|
|
77
|
+
* Verifying Radon assets modifies the EVM storage and therefore requires
|
|
78
|
+
* spending gas in proportion to the size of the data source parameters (e.g. URL, body, headers, or Radon script).
|
|
79
|
+
*
|
|
80
|
+
* If the given Radon Retrieval object happened to be already verified, no EVM gas would be actually consumed.
|
|
81
|
+
*
|
|
82
|
+
* @param request Instance of a Radon Retrieval object.
|
|
83
|
+
* @param options Async EVM transaction handlers.
|
|
84
|
+
* @returns The unique hash of the Radon Retrieval object, as verified on the connected EVM network.
|
|
85
|
+
*/
|
|
86
|
+
verifyRadonRetrieval(retrieval: Witnet.Radon.RadonRetrieval, options?: {
|
|
87
|
+
/**
|
|
88
|
+
* Number of block confirmations to wait for after verifying transaction gets mined (defaults to 1).
|
|
89
|
+
*/
|
|
90
|
+
confirmations?: number;
|
|
91
|
+
/**
|
|
92
|
+
* Callback handler called just in case a `verifyRadonRequest` transaction is ultimately required.
|
|
93
|
+
*/
|
|
94
|
+
onVerifyRadonRetrieval?: (hash: string) => any;
|
|
95
|
+
/**
|
|
96
|
+
* Callback handler called once the `verifyRadonRetrieval` transaction gets confirmed.
|
|
97
|
+
* @param receipt The `verifyRadonRetrieval` transaction receipt.
|
|
98
|
+
*/
|
|
99
|
+
onVerifyRadonRetrievalReceipt?: (receipt: ContractTransactionReceipt | null) => any;
|
|
100
|
+
}): Promise<string>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=WitOracleRadonRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WitOracleRadonRegistry.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitOracleRadonRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAU,MAAM,QAAQ,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;gBAC1C,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;IAOlD;;;;OAIG;IACU,2BAA2B,CACvC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,GACpC,OAAO,CAAC,MAAM,CAAC;IAWlB;;;OAGG;IACU,kBAAkB,CAC9B,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IAOrC;;;OAGG;IACU,0BAA0B,CACtC,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAM5B;;;;;OAKG;IACU,oBAAoB,CAChC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;IAevC;;;;;;;;;;;;;;OAcG;IACU,kBAAkB,CAC9B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,EAClC,OAAO,CAAC,EAAE;QACT;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB;;WAEG;QACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAA;QAC9C;;;WAGG;QACH,2BAA2B,CAAC,EAAE,CAC7B,OAAO,EAAE,0BAA0B,GAAG,IAAI,KACtC,GAAG,CAAA;QACR;;WAEG;QACH,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;QAC9C;;;WAGG;QACH,6BAA6B,CAAC,EAAE,CAC/B,OAAO,EAAE,0BAA0B,GAAG,IAAI,KACtC,GAAG,CAAA;KACR,GACC,OAAO,CAAC,MAAM,CAAC;IA4BlB;;;;;;;;;;;OAWG;IACU,oBAAoB,CAChC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,EACtC,OAAO,CAAC,EAAE;QACT;;WAEG;QACH,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB;;WAEG;QACH,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;QAC9C;;;WAGG;QACH,6BAA6B,CAAC,EAAE,CAC/B,OAAO,EAAE,0BAA0B,GAAG,IAAI,KACtC,GAAG,CAAA;KACR,GACC,OAAO,CAAC,MAAM,CAAC;CAqBlB"}
|