From 07cbc8b29d93cbeb6f1c0631858971a3e1b6a5ee Mon Sep 17 00:00:00 2001 From: Albert Hermida Date: Thu, 1 Aug 2024 16:48:04 -0400 Subject: [PATCH] add update files --- LICENSE | 21 + basic-feed/.gitignore | 5 + basic-feed/README.md | 62 + basic-feed/contracts/BasicFeed.sol | 67 + basic-feed/hardhat.config.cjs | 6 + basic-feed/ignition/modules/BasicFeed.js | 17 + basic-feed/index.ts | 50 + basic-feed/package.json | 18 + basic-feed/tsconfig.json | 27 + measure/.gitignore | 3 + measure/README.md | 41 + measure/index.ts | 106 + measure/oracle-measurements.ts | 164 + measure/package.json | 18 + measure/tsconfig.json | 27 + temperature-feed/.gitignore | 16 + temperature-feed/README.md | 59 + .../contracts/TemperatureFeed.sol | 62 + temperature-feed/hardhat.config.cts | 26 + .../4dd91cd9ca5ae8381acc6bef7f770b23.json | 20345 ++++++++++++++++ .../chain-42161/deployed_addresses.json | 3 + .../deployments/chain-42161/journal.jsonl | 7 + .../ignition/modules/TemperatureFeed.cts | 20 + temperature-feed/index.ts | 55 + temperature-feed/package.json | 13 + temperature-feed/tsconfig.json | 26 + 26 files changed, 21264 insertions(+) create mode 100644 LICENSE create mode 100644 basic-feed/.gitignore create mode 100644 basic-feed/README.md create mode 100644 basic-feed/contracts/BasicFeed.sol create mode 100644 basic-feed/hardhat.config.cjs create mode 100644 basic-feed/ignition/modules/BasicFeed.js create mode 100644 basic-feed/index.ts create mode 100644 basic-feed/package.json create mode 100644 basic-feed/tsconfig.json create mode 100644 measure/.gitignore create mode 100644 measure/README.md create mode 100644 measure/index.ts create mode 100644 measure/oracle-measurements.ts create mode 100644 measure/package.json create mode 100644 measure/tsconfig.json create mode 100644 temperature-feed/.gitignore create mode 100644 temperature-feed/README.md create mode 100644 temperature-feed/contracts/TemperatureFeed.sol create mode 100644 temperature-feed/hardhat.config.cts create mode 100644 temperature-feed/ignition/deployments/chain-42161/build-info/4dd91cd9ca5ae8381acc6bef7f770b23.json create mode 100644 temperature-feed/ignition/deployments/chain-42161/deployed_addresses.json create mode 100644 temperature-feed/ignition/deployments/chain-42161/journal.jsonl create mode 100644 temperature-feed/ignition/modules/TemperatureFeed.cts create mode 100644 temperature-feed/index.ts create mode 100644 temperature-feed/package.json create mode 100644 temperature-feed/tsconfig.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c0ff76b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Ian Hecker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/basic-feed/.gitignore b/basic-feed/.gitignore new file mode 100644 index 0000000..64476d4 --- /dev/null +++ b/basic-feed/.gitignore @@ -0,0 +1,5 @@ +.env +artifacts/ +bun.lockb +cache/ +node_modules diff --git a/basic-feed/README.md b/basic-feed/README.md new file mode 100644 index 0000000..647117c --- /dev/null +++ b/basic-feed/README.md @@ -0,0 +1,62 @@ +# Basic Feed + +To run a basic data feed: + +1. Navigate into the folder + +```bash +cd basic-feed +``` + +2. Install dependencies + +```bash +bun install +``` + +3. Setup the `.env` file inside of the `basic-feed` directory, and add your +private key + +```bash +cat << EOF > .env +AGGREGATOR_ID = 0x755c0da00f939b04266f3ba3619ad6498fb936a8bfbfac27c9ecd4ab4c5d4878 +CHAIN_ID = 421614 +DEPLOYED_CONTRACT_ADDRESS = 0x42E12a6945ab87C3AEeE1601cE9c40da5D43D92A +PRIVATE_KEY = 0x!...YOUR_KEY_HERE...! +RPC_URL = "https://arb-sepolia.g.alchemy.com/v2/!...API_KEY_HERE...!" +SWITCHBOARD_CONTRACT_ADDRESS = 0xa2a0425fa3c5669d384f4e6c8068dfcf64485b3b +EOF +``` + +Alternate RPC URLs to Alchemy: +- https://sepolia-rollup.arbitrum.io/rpc +- https://mainnet-rollup.arbitrum.io/rpc + +You can use the existing configuration - but if you wish to deploy a contract, +be sure to update `DEPLOYED_CONTRACT_ADDRESS` with the new address you receive + +4. Contract Deployment (OPTIONAL) + + * Hardhat is already configured, and a contract is deployed. To deploy a new + contract, first, compile the contract + + ```bash + npx hardhat compile + ``` + + * To deploy a contract + + ```bash + npx hardhat ignition deploy ./ignition/modules/BasicFeed.js --network arbitrumSepolia + ``` + > Hardhat is finicky after you deploy a contract. You will need to remove + the artifact files Hardhat created for a deployment if you wish to deploy + a second time + + * Add your new contract address to the `.env` file + +6. To run + +```bash +bun run index.ts +``` diff --git a/basic-feed/contracts/BasicFeed.sol b/basic-feed/contracts/BasicFeed.sol new file mode 100644 index 0000000..0d80bf2 --- /dev/null +++ b/basic-feed/contracts/BasicFeed.sol @@ -0,0 +1,67 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import {ISwitchboard} from "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol"; + +contract Example { + ISwitchboard switchboard; + + // Every Switchboard Feed has a unique aggregatorId. + bytes32 public aggregatorId; + + // The latest price from the feed + int256 public latestPrice; + + // If the transaction fee is not paid, the update will fail. + error InsufficientFee(uint256 expected, uint256 received); + + // If the feed result is invalid, this error will be emitted. + error InvalidResult(int128 result); + + // If the Switchboard update succeeds, this event will be emitted with the latest price. + event FeedData(int128 price); + + /** + * @param _switchboard The address of the Switchboard contract + * @param _aggregatorId The feed ID for the feed you want to query + */ + constructor(address _switchboard, bytes32 _aggregatorId) { + // Initialize the target _switchboard + // Get the existing Switchboard contract address on your preferred network from the Switchboard Docs + switchboard = ISwitchboard(_switchboard); + aggregatorId = _aggregatorId; + } + + /** + * getFeedData is a function that uses an encoded Switchboard update + * If the update is successful, it will read the latest price from the feed + * See below for fetching encoded updates (e.g., using the Switchboard Typescript SDK) + * @param updates Encoded feed updates to update the contract with the latest result + */ + function getFeedData(bytes[] calldata updates) public payable { + // Get the fee for updating the feeds. If the transaction fee is not paid, the update will fail. + uint256 fee = switchboard.getFee(updates); + if (msg.value < fee) { + revert InsufficientFee(fee, msg.value); + } + + // Submit the updates to the Switchboard contract + switchboard.updateFeeds{value: fee}(updates); + + // Read the current value from a Switchboard feed. + // This will fail if the feed doesn't have fresh updates ready (e.g. if the feed update failed) + // Get the latest feed result + // This is encoded as decimal * 10^18 to avoid floating point issues + int128 result = switchboard.latestUpdate(aggregatorId).result; + + // In this example, we revert if the result is negative + if (result < 0) { + revert InvalidResult(result); + } + + latestPrice = result; + + // Emit the latest result from the feed + emit FeedData(result); + } +} diff --git a/basic-feed/hardhat.config.cjs b/basic-feed/hardhat.config.cjs new file mode 100644 index 0000000..8ba99bc --- /dev/null +++ b/basic-feed/hardhat.config.cjs @@ -0,0 +1,6 @@ +require("@nomicfoundation/hardhat-toolbox"); + +/** @type import('hardhat/config').HardhatUserConfig */ +module.exports = { + solidity: "0.8.24", +}; diff --git a/basic-feed/ignition/modules/BasicFeed.js b/basic-feed/ignition/modules/BasicFeed.js new file mode 100644 index 0000000..9a86326 --- /dev/null +++ b/basic-feed/ignition/modules/BasicFeed.js @@ -0,0 +1,17 @@ +import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; + +const SWITCHBOARD_CONTRACT_ADDRESS = process.env.SWITCHBOARD_CONTRACT_ADDRESS; +if (!SWITCHBOARD_CONTRACT_ADDRESS) { + throw new Error("Missing SWITCHBOARD_CONTRACT_ADDRESS"); +} + +const AGGREGATOR_ID = process.env.AGGREGATOR_ID; +if (!AGGREGATOR_ID) { + throw new Error("Missing AGGREGATOR_ID"); +} + +export default buildModule("BasicFeedModule", (m) => { + const basicFeed = m.contract("BasicFeed", [SWITCHBOARD_CONTRACT_ADDRESS, AGGREGATOR_ID]); + + return { basicFeed }; +}); diff --git a/basic-feed/index.ts b/basic-feed/index.ts new file mode 100644 index 0000000..4ade422 --- /dev/null +++ b/basic-feed/index.ts @@ -0,0 +1,50 @@ +import { CrossbarClient } from "@switchboard-xyz/on-demand"; +import * as ethers from "ethers"; +import * as fs from "fs"; + +const chainId = process.env.CHAIN_ID as string; +if (!chainId) { + throw new Error("Missing CHAIN_ID"); +} + +const address = process.env.DEPLOYED_CONTRACT_ADDRESS as string; +if (!address) { + throw new Error("Missing DEPLOYED_CONTRACT_ADDRESS"); +} + +const privateKey = process.env.PRIVATE_KEY as string; +if (!privateKey) { + throw new Error("Missing PRIVATE_KEY"); +} + +const rpcURL = process.env.RPC_URL as string; +if (!rpcURL) { + throw new Error("Missing RPC_URL"); +} + +const provider = new ethers.JsonRpcProvider(rpcURL); + +const signerWithProvider = new ethers.Wallet(privateKey, provider); + +const ABI = [ + "function getFeedData(bytes[] calldata updates) public payable", + "function aggregatorId() public view returns (bytes32)", + "function latestPrice() public view returns (int256)", +]; + +const crossbar = new CrossbarClient(`https://crossbar.switchboard.xyz`); + +const exampleContract = new ethers.Contract(address, ABI, signerWithProvider); + +const { encoded } = await crossbar.fetchEVMResults({ + chainId: chainId, + aggregatorIds: [await exampleContract.aggregatorId()], +}); + +const tx = await exampleContract.getFeedData(encoded); + +console.log(tx); + +console.log("Transaction completed!"); + +console.log("Value stored in contract: ", await exampleContract.latestPrice()); diff --git a/basic-feed/package.json b/basic-feed/package.json new file mode 100644 index 0000000..616e983 --- /dev/null +++ b/basic-feed/package.json @@ -0,0 +1,18 @@ +{ + "name": "example", + "module": "index.ts", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@types/bun": "latest", + "hardhat": "^2.22.6" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "@switchboard-xyz/on-demand": "^1.2.10", + "@switchboard-xyz/on-demand-solidity": "^0.0.4", + "ethers": "^6.13.1" + } +} diff --git a/basic-feed/tsconfig.json b/basic-feed/tsconfig.json new file mode 100644 index 0000000..39c4775 --- /dev/null +++ b/basic-feed/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ES2022", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/measure/.gitignore b/measure/.gitignore new file mode 100644 index 0000000..875bb4f --- /dev/null +++ b/measure/.gitignore @@ -0,0 +1,3 @@ +.env +bun.lockb +node_modules/ diff --git a/measure/README.md b/measure/README.md new file mode 100644 index 0000000..65f834a --- /dev/null +++ b/measure/README.md @@ -0,0 +1,41 @@ +# Measure + +To run a measurement: + +1. Navigate into the folder + +```bash +cd measure +``` + +2. Install dependencies + +```bash +bun install +``` + +3. Setup the `.env` file inside of the `measure` directory, and add your +private key + +```bash +cat << EOF > .env +CHAIN_ID = 421614 +COINMARKETCAP_API_KEY = "!...API_KEY_HERE...!" +DEPLOYED_CONTRACT_ADDRESS = 0x42E12a6945ab87C3AEeE1601cE9c40da5D43D92A +PRIVATE_KEY = 0x!...YOUR_KEY_HERE...! +RPC_URL = "https://arb-sepolia.g.alchemy.com/v2/!...API_KEY_HERE...!" +EOF +``` + +Alternate RPC URLs to Alchemy: +- https://sepolia-rollup.arbitrum.io/rpc +- https://mainnet-rollup.arbitrum.io/rpc + +You can use the existing configuration - but if you wish to deploy a contract, +be sure to update `BASIC_FEED_CONTRACT_ADDRESS` with the new address you receive + +4. To run + +```bash +bun run index.ts +``` diff --git a/measure/index.ts b/measure/index.ts new file mode 100644 index 0000000..4d4b30f --- /dev/null +++ b/measure/index.ts @@ -0,0 +1,106 @@ +import { OracleMeasurement } from "./oracle-measurements"; + +import { CrossbarClient } from "@switchboard-xyz/on-demand"; +import * as ethers from "ethers"; +import * as fs from "fs"; + +const chainId = process.env.CHAIN_ID as string; +if (!chainId) { + throw new Error("Missing CHAIN_ID"); +} + +const coinmarketcapAPIKey = process.env.COINMARKETCAP_API_KEY as string; +if (!coinmarketcapAPIKey) { + throw new Error("Missing CHAIN_ID"); +} + +const contractAddress = process.env.DEPLOYED_CONTRACT_ADDRESS as string; +if (!contractAddress) { + throw new Error("Missing DEPLOYED_CONTRACT_ADDRESS"); +} + +const privateKey = process.env.PRIVATE_KEY as string; +if (!privateKey) { + throw new Error("Missing PRIVATE_KEY"); +} + +const rpcURL = process.env.RPC_URL as string; +if (!rpcURL) { + throw new Error("Missing RPC_URL"); +} + +const measure = async () => { + const provider = new ethers.JsonRpcProvider(rpcURL); + + const signerWithProvider = new ethers.Wallet(privateKey, provider); + + const ABI = [ + "function getFeedData(bytes[] calldata updates) public payable", + "function aggregatorId() public view returns (bytes32)", + "function latestPrice() public view returns (int256)", + ]; + + const crossbar = new CrossbarClient(`https://crossbar.switchboard.xyz`); + + const contract = new ethers.Contract(contractAddress, ABI, signerWithProvider); + + const aggregatorId = await contract.aggregatorId() + + const { encoded } = await crossbar.fetchEVMResults({ + chainId: chainId, + aggregatorIds: [aggregatorId], + }); + + const tx = await contract.getFeedData(encoded); + const latestPrice = await contract.latestPrice(); + + return { + transactionHash: tx.hash, + latestUNIPriceInUSD: latestPrice, + aggregatorId: aggregatorId + } +}; + +const displayMeasurements = async () => { + const start = performance.now(); + + const measurements = await measure().catch((e) => { + console.error(e); + process.exit(1); + }); + + const end = performance.now(); + + let om = new OracleMeasurement(); + + om.Log(['Oracle:', 'Switchboard Data Feed logged On-Chain w/ Smart Contract']); + om.Log(['Data Feed:', 'Current UNI/USD Price']); + om.Log(['Contract Address:', contractAddress]); + om.Log(['Aggregator Feed ID:', measurements.aggregatorId]); + om.LogNetwork(chainId); + console.log(); + + om.LogDateAndTime(); + om.LogTxnDuration(start, end); + console.log(); + + const tx = await om.FetchEthTxnGasStats(rpcURL, measurements.transactionHash); + + om.LogTransactionHash(measurements.transactionHash); + om.LogEthGasStats(tx.gasUsed, tx.gasFeeInGwei, tx.ethUsed); + console.log(); + + om.Log(['On-Chain data:', 'Latest UNI/USD Price']) + om.LogUNIPriceInUSD(measurements.latestUNIPriceInUSD); + console.log(); + + const ethPriceInUSD = await om.FetchETHPriceInUSD(coinmarketcapAPIKey); + + om.LogTotalCostsInETH(tx.ethUsed, ethPriceInUSD); + om.LogTotalCostsInUSD(tx.ethUsed, ethPriceInUSD); +}; + +displayMeasurements().catch((e) => { + console.error(e); + process.exit(1); +}); diff --git a/measure/oracle-measurements.ts b/measure/oracle-measurements.ts new file mode 100644 index 0000000..9afc151 --- /dev/null +++ b/measure/oracle-measurements.ts @@ -0,0 +1,164 @@ +interface TxnGasStats { + gasUsed: number + gasFeeInGwei: number + ethUsed: number +} + +interface TxnGeneralStats { + network: string +} + +export class OracleMeasurement { + + Log(keyValuePairs: string[]) { + + const GREEN = "\u001b[32m"; + const RESET = "\u001b[0m"; + + let str = ''; + for (let i = 0; i < keyValuePairs.length; i += 2) { + let key = keyValuePairs[i] + let value = keyValuePairs[i + 1] + + str += GREEN + key + " " + RESET + value + " "; + } + console.log(str) + } + + LogDateAndTime() { + const now = new Date(); + const mst = now.toLocaleString('en-US', { timeZone: 'America/Denver' }) + + this.Log(['Date & Time:', mst + ' MST']); + } + + LogTxnDuration(start: number, end: number) { + let ms = end - start; + + const minutes = Math.floor(ms / 60000); + ms %= 60000; + + const seconds = Math.floor(ms / 1000); + const milliseconds = Math.floor(ms % 1000); + + const time = minutes + "m" + seconds + "." + milliseconds + 's'; + + this.Log(['Txn Duration:', time]); + } + + LogTotalCostsInETH(ethUsed: number, ethPriceInUSD: number) { + const ethCostInUSD = ethUsed * ethPriceInUSD; + + this.Log([ + 'Current Mainnet ETH/USD Price:', '$' + ethPriceInUSD.toFixed(2), + '* ETH Used:', ethUsed.toFixed(10), + '=', "$" + ethCostInUSD.toFixed(2), + ]); + } + + LogTotalCostsInUSD(ethUsed: number, ethPriceInUSD: number) { + const ethCostInUSD = ethUsed * ethPriceInUSD; + + this.Log(['Total Cost in USD:', '$' + ethCostInUSD.toFixed(2)]); + } + + LogEthGasStats(gasUsed: number, gasFeeInGwei: number, ethUsed: number) { + this.Log(['Gas Used:', gasUsed + ""]); + this.Log(['Gas Price:', gasFeeInGwei + ' Gwei']); + this.Log(['ETH Used:', ethUsed.toFixed(10)]); + } + + LogTransactionHash(hash: string) { + this.Log(['Transaction Hash:', hash]); + } + + LogNetwork(chainId: string) { + this.Log(['Network:', this.getNetwork(chainId)]) + } + + LogUNIPriceInUSD(n: bigint) { + const divisor = BigInt(1000000000000000000) + const USD = Number(n * 100n / divisor) / 100 + this.Log(['UNI/USD Price:', "$" + USD]) + } + + async FetchEthTxnGasStats(url: string, hash: string): Promise { + const body = { + id: 1, + jsonrpc: '2.0', + method: `eth_getTransactionReceipt`, + params: [hash] + }; + + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Accept': 'application/json' + }, + body: JSON.stringify(body) + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status} `); + } + + const data = await response.json(); + + const gasUsedHex = data.result.gasUsed; + const effectiveGasPriceHex = data.result.effectiveGasPrice; + + const gasUsed = parseInt(gasUsedHex, 16); + const gasFeeInGwei = parseInt(effectiveGasPriceHex, 16) / 1000000000; + const ethUsed = (gasUsed * (gasFeeInGwei / 1000000000)); + + return { gasUsed, gasFeeInGwei, ethUsed }; + + } catch (error) { + console.error('Error fetching data:', error); + return { gasUsed: 0, gasFeeInGwei: 0, ethUsed: 0 }; + } + } + + async FetchETHPriceInUSD(apiKey: string): Promise { + const url = 'https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest'; + const symbol = 'ETH'; + const convert = 'USD'; + const fullUrl = `${url}?CMC_PRO_API_KEY=${apiKey}&symbol=${symbol}&convert=${convert}`; + + try { + const response = await fetch(fullUrl, { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + return data.data.ETH[0].quote.USD.price; + + } catch (error) { + console.error('Error fetching data:', error); + return -1; + } + } + + getNetwork(chainId: string): string { + switch (chainId) { + case "421614": { + return "Arbitrum Sepolia" + } + case "42161": { + return "Arbitrum One" + } + default: { + return "unknown chain id"; + } + } + } +} diff --git a/measure/package.json b/measure/package.json new file mode 100644 index 0000000..616e983 --- /dev/null +++ b/measure/package.json @@ -0,0 +1,18 @@ +{ + "name": "example", + "module": "index.ts", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@types/bun": "latest", + "hardhat": "^2.22.6" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "@switchboard-xyz/on-demand": "^1.2.10", + "@switchboard-xyz/on-demand-solidity": "^0.0.4", + "ethers": "^6.13.1" + } +} diff --git a/measure/tsconfig.json b/measure/tsconfig.json new file mode 100644 index 0000000..39c4775 --- /dev/null +++ b/measure/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ES2022", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/temperature-feed/.gitignore b/temperature-feed/.gitignore new file mode 100644 index 0000000..4677aa5 --- /dev/null +++ b/temperature-feed/.gitignore @@ -0,0 +1,16 @@ +.env +artifacts/ +bun.lockb +cache/ +node_modules + +node_modules +.env + +# Hardhat files +/cache +/artifacts + +# TypeChain files +/typechain +/typechain-types diff --git a/temperature-feed/README.md b/temperature-feed/README.md new file mode 100644 index 0000000..6ff3971 --- /dev/null +++ b/temperature-feed/README.md @@ -0,0 +1,59 @@ +# Temperature Feed + +To run data feed: + +1. Navigate into the folder + +```bash +cd temperature-feed +``` + +2. Install dependencies + +```bash +bun install +``` + +3. Setup the `.env` file inside of the `temperature-feed` directory, and add your +private key + +```bash +cat << EOF > .env +AGGREGATOR_ID = 0x4c31f917ff41cbaad0b018771df374e665982505d3ff9b55b21529aedff5cefe +CHAIN_ID = 42161 +DEPLOYED_CONTRACT_ADDRESS = 0xf07DcdD1f116B2f317EE91a36a540F976ECd4515 +PRIVATE_KEY = 0x!...YOUR_KEY_HERE...! +RPC_URL = "https://arb-sepolia.g.alchemy.com/v2/!...API_KEY_HERE...!" +SWITCHBOARD_CONTRACT_ADDRESS = 0xad9b8604b6b97187cde9e826cdeb7033c8c37198 +EOF +``` + +Alternate RPC URLs to Alchemy: +- https://sepolia-rollup.arbitrum.io/rpc +- https://mainnet-rollup.arbitrum.io/rpc + +You can use the existing configuration - but if you wish to deploy a contract, +be sure to update `DEPLOYED_CONTRACT_ADDRESS` with the new address you receive + +4. Contract Deployment (OPTIONAL) + + * Hardhat is already configured, and a contract is deployed. To deploy a new + contract, first, compile the contract + + ```bash + npx hardhat compile + ``` + + * To deploy a contract + + ```bash + npx hardhat ignition deploy ./ignition/modules/TemperatureFeed.ts --network arbitrumOne + ``` + + * Add your new contract address to the `.env` file + +6. To run + +```bash +bun run index.ts +``` diff --git a/temperature-feed/contracts/TemperatureFeed.sol b/temperature-feed/contracts/TemperatureFeed.sol new file mode 100644 index 0000000..f5d9e30 --- /dev/null +++ b/temperature-feed/contracts/TemperatureFeed.sol @@ -0,0 +1,62 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import {ISwitchboard} from "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol"; + +contract TemperatureFeed { + ISwitchboard switchboard; + + // Every Switchboard Feed has a unique aggregatorId. + bytes32 public aggregatorId; + + // The latest temperature from the feed + int256 public latestTemperature; + + // If the transaction fee is not paid, the update will fail. + error InsufficientFee(uint256 expected, uint256 received); + + // If the feed result is invalid, this error will be emitted. + error InvalidResult(int128 result); + + // If the Switchboard update succeeds, this event will be emitted with the latest temperature. + event FeedData(int128 temperature); + + /** + * @param _switchboard The address of the Switchboard contract + * @param _aggregatorId The feed ID for the feed you want to query + */ + constructor(address _switchboard, bytes32 _aggregatorId) { + // Initialize the target _switchboard + // Get the existing Switchboard contract address on your preferred network from the Switchboard Docs + switchboard = ISwitchboard(_switchboard); + aggregatorId = _aggregatorId; + } + + /** + * getFeedData is a function that uses an encoded Switchboard update + * If the update is successful, it will read the latest temperature from the feed + * See below for fetching encoded updates (e.g., using the Switchboard Typescript SDK) + * @param updates Encoded feed updates to update the contract with the latest result + */ + function getFeedData(bytes[] calldata updates) public payable { + // Get the fee for updating the feeds. If the transaction fee is not paid, the update will fail. + uint256 fee = switchboard.getFee(updates); + if (msg.value < fee) { + revert InsufficientFee(fee, msg.value); + } + + // Submit the updates to the Switchboard contract + switchboard.updateFeeds{value: fee}(updates); + + // Read the current value from a Switchboard feed. + // This will fail if the feed doesn't have fresh updates ready (e.g. if the feed update failed) + // Get the latest feed result + // This is encoded as decimal * 10^18 to avoid floating point issues + int128 result = switchboard.latestUpdate(aggregatorId).result; + + latestTemperature = result; + + // Emit the latest result from the feed + emit FeedData(result); + } +} diff --git a/temperature-feed/hardhat.config.cts b/temperature-feed/hardhat.config.cts new file mode 100644 index 0000000..917de84 --- /dev/null +++ b/temperature-feed/hardhat.config.cts @@ -0,0 +1,26 @@ +import "@nomicfoundation/hardhat-toolbox"; +import type { HardhatUserConfig } from "hardhat/config"; + +require("dotenv").config(); + +const PRIVATE_KEY = process.env.PRIVATE_KEY; +if (!PRIVATE_KEY) { + throw new Error("No private key provided"); +} + +const RPC_URL = process.env.RPC_URL; +if (!RPC_URL) { + throw new Error("No api key provided"); +} + +const config: HardhatUserConfig = { + solidity: "0.8.24", + networks: { + arbitrumOne: { + url: RPC_URL, + accounts: [PRIVATE_KEY], + }, + }, +}; + +export default config; diff --git a/temperature-feed/ignition/deployments/chain-42161/build-info/4dd91cd9ca5ae8381acc6bef7f770b23.json b/temperature-feed/ignition/deployments/chain-42161/build-info/4dd91cd9ca5ae8381acc6bef7f770b23.json new file mode 100644 index 0000000..1b05e72 --- /dev/null +++ b/temperature-feed/ignition/deployments/chain-42161/build-info/4dd91cd9ca5ae8381acc6bef7f770b23.json @@ -0,0 +1,20345 @@ +{ + "id": "4dd91cd9ca5ae8381acc6bef7f770b23", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.24", + "solcLongVersion": "0.8.24+commit.e11b9ed9", + "input": { + "language": "Solidity", + "sources": { + "@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {Structs} from \"../structs/Structs.sol\";\n\n// -- Aggregators: an abstraction over feeds to allow for reconfiguration --\ninterface IAggregatorModule {\n event AggregatorCreated(\n bytes32 indexed aggregatorId,\n bytes32 indexed feedId,\n address authority\n );\n event AggregatorConfigured(\n bytes32 indexed aggregatorId,\n string name,\n uint256 toleratedDelta,\n bytes32 cid,\n uint64 maxVariance,\n uint32 minResponses\n );\n event AggregatorAuthoritySet(\n bytes32 indexed aggregatorId,\n address indexed authority\n );\n\n /**\n * Create a new aggregator\n * @param aggregator The aggregator to create\n */\n function createAggregator(Structs.Aggregator calldata aggregator) external;\n\n /**\n * Set the config for an aggregator\n * @dev Only the authority of the aggregator can set the config\n * @param aggregatorId The aggregatorId to set the config for\n * @param name The name of the aggregator\n * @param toleratedDelta The maximum staleness blocks for a valid feed result (or seconds if the queue has a time feed)\n * @param cid The content id (IPFS cid for example) for the feed\n * @param feedId The feedId associated with the aggregator\n * @param maxVariance The maximum variance allowed for a feed result\n * @param minResponses The minimum number of responses required for a valid feed result\n * @param minSamples The minimum number of samples to take for a feed result\n * @param maxStaleness The maximum number of seconds staleness for an update to be valid\n */\n function setAggregatorConfig(\n bytes32 aggregatorId,\n string memory name,\n uint256 toleratedDelta,\n bytes32 cid,\n bytes32 feedId,\n uint64 maxVariance,\n uint32 minResponses,\n uint8 minSamples,\n uint256 maxStaleness\n ) external;\n\n /**\n * Set the authority for an aggregator\n * @dev Only the authority of the aggregator can set a new authority\n * @param aggregatorId The aggregatorId to set the authority for\n * @param authority The new authority to set for the aggregator\n */\n function setAggregatorAuthority(\n bytes32 aggregatorId,\n address authority\n ) external;\n\n /**\n * The aggregator to fetch\n * @param aggregatorId The aggregatorId to get\n */\n function getAggregator(\n bytes32 aggregatorId\n )\n external\n view\n returns (Structs.Aggregator memory, Structs.Update[] memory);\n\n /**\n * Get all aggregators\n */\n function getAllAggregators()\n external\n view\n returns (Structs.Aggregator[] memory, Structs.Update[][] memory);\n\n /**\n * Get the results for a feed\n * @param feedId The feedId to get the results for\n * @return The results for the feed\n */\n function getAggregatorResults(\n bytes32 feedId\n ) external view returns (Structs.Update[] memory);\n}\n" + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {Structs} from \"../structs/Structs.sol\";\n\n// -- Oracle: an entity that can provide updates for feeds on a queue --\ninterface IOracleModule {\n /**\n * Get oracles associated with an address\n * @param queueId the queue\n * @param oracleAddress the address of the oracle\n * @return oracleAddress the oracle associated with the address\n */\n function getOracleByAddress(\n bytes32 queueId,\n address oracleAddress\n ) external view returns (Structs.Oracle memory);\n\n /**\n * Get an oracle\n * @param queueId The queueId associated with the oracle\n * @param oracleId The oracleId corresponding to the oracle\n * @return The oracle associated with the queueId and oracleId\n */\n function getOracle(\n bytes32 queueId,\n bytes32 oracleId\n ) external view returns (Structs.Oracle memory);\n\n /**\n * Get all oracles associated with a queue\n * @param queueId The queueId to get the oracles for\n * @return The oracles associated with the queue\n */\n function getAllOracles(\n bytes32 queueId\n ) external view returns (Structs.Oracle[] memory);\n}\n" + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {Structs} from \"../structs/Structs.sol\";\n\n// -- Queues: switchboard subnets (each with its own set of oracles) --\ninterface IQueueModule {\n event QueueCreated(bytes32 queueId, address authority);\n event QueueConfigSet(\n bytes32 queueId,\n string name,\n uint256 fee,\n uint8 minAttestations,\n uint256 toleratedTimestampDelta,\n uint8 resultsMaxSize,\n uint256 oracleValidityLength,\n uint256 toleratedBlocksStaleness\n );\n event QueueAuthoritySet(bytes32 queueId, address authority);\n event QueueMrEnclaveAdded(bytes32 queueId, bytes32 mrEnclave);\n event QueueMrEnclaveRemoved(bytes32 queueId, bytes32 mrEnclave);\n event QueueOraclesOverridden(bytes32 queueId);\n\n /**\n * Create a new queue\n * @param queue The queue to create\n * @param oracles The initial set of oracles associated with the queue\n */\n function createQueue(\n Structs.Queue calldata queue,\n Structs.Oracle[] calldata oracles\n ) external;\n\n /**\n * Set the config for a queue\n * @dev Only the authority of the queue can set the config\n * @param queueId the queueId to set the config for\n * @param name name of the queue\n * @param fee fee required to submit an update to the queue\n * @param minAttestations minimum number of attestations required for adding an oracle the queue\n * @param toleratedTimestampDelta default maximum staleness blocks for a valid feed result\n * @param resultsMaxSize maximum size of the results array for feeds\n * @param oracleValidityLength length of time an oracle is valid for\n * @param toleratedBlocksStaleness The number of blocks a timestamp is allowed to be stale\n */\n function setQueueConfig(\n bytes32 queueId,\n string memory name,\n uint256 fee,\n uint8 minAttestations,\n uint256 toleratedTimestampDelta,\n uint8 resultsMaxSize,\n uint256 oracleValidityLength,\n uint256 toleratedBlocksStaleness\n ) external;\n\n /**\n * Set the authority for a queue\n * @dev Only the authority of the queue can set a new authority\n * @param queueId The queueId to set the authority for\n * @param authority The new authority to set for the queue\n */\n function setQueueAuthority(bytes32 queueId, address authority) external;\n\n /**\n * Add an enclave measurement to a queue\n * @dev Only the authority of the queue can set the mrEnclave\n * @param queueId The queueId to set the mrEnclave for\n * @param mrEnclave The mrEnclave to set for the queue\n */\n function addQueueMrEnclave(bytes32 queueId, bytes32 mrEnclave) external;\n\n /**\n * Remove an enclave measurement from a queue\n * @dev Only the authority of the queue can remove the mrEnclave\n * @param queueId The queueId to remove the mrEnclave from\n * @param mrEnclave The mrEnclave to remove\n */\n function removeQueueMrEnclave(bytes32 queueId, bytes32 mrEnclave) external;\n\n /**\n * Get the mrEnclaves associated with a queue\n * @param queueId The queueId to get the mrEnclaves for\n * @return The mrEnclaves associated with the queue\n */\n function getQueueMrEnclaves(\n bytes32 queueId\n ) external view returns (bytes32[] memory);\n\n /**\n * Set the oracle queue manually (override the oracles array)\n * @dev Should only be dao controlled\n * @param queueId The queueId to set the oracles for\n * @param oracles The oracles to set for the queue\n */\n function queueOverride(\n bytes32 queueId,\n bytes32[] calldata mrEnclaves,\n Structs.Oracle[] calldata oracles\n ) external;\n\n /**\n * Get a queue\n * @param queueId The queueId to get\n */\n function getQueue(\n bytes32 queueId\n ) external view returns (Structs.Queue memory);\n\n /**\n * Get all queues\n * @return The queues associated with the queueId\n */\n function getAllQueues() external view returns (Structs.Queue[] memory);\n}\n" + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {Structs} from \"../structs/Structs.sol\";\n\n// -- Randomness: enclave-sourced randomness from an oracle on a queue --\ninterface IRandomnessModule {\n event RandomnessRequested(\n bytes32 indexed randomnessId,\n address indexed authority,\n bytes32 queueId,\n uint64 minSettlementDelay,\n bytes32 indexed oracleId\n );\n\n event RandomnessRerolled(\n bytes32 indexed randomnessId,\n bytes32 indexed oracleId\n );\n\n /**\n * Request randomness from Switchboard from an Oracle on the queue\n * @param randomnessId The randomness id, which must be unique, is used to identify the randomness request\n * @param authority The authority (contract or EOA) that is in charge of providing the randomness\n * @param queueId The queue id that the randomness is associated with\n * @param minSettlementDelay The minimum delay before the randomness can be settled\n */\n function requestRandomness(\n bytes32 randomnessId,\n address authority,\n bytes32 queueId,\n uint64 minSettlementDelay\n ) external;\n\n /**\n * Request randomness from Switchboard from an Oracle on the queue\n * @param randomnessId The randomness id, which must be unique, is used to identify the randomness request\n * @param authority The authority (contract or EOA) that is in charge of providing the randomness\n * @param queueId The queue id that the randomness is associated with\n * @param minSettlementDelay The minimum delay before the randomness can be settled\n * @param oracleId The oracle id that must respond to the request\n */\n function requestRandomness(\n bytes32 randomnessId,\n address authority,\n bytes32 queueId,\n uint64 minSettlementDelay,\n bytes32 oracleId\n ) external;\n\n /**\n * Reroll randomness (to reuse existing randomness objects for new randomness requests)\n * @dev caller must be the authority for the randomness\n * @param randomnessId The randomness id\n */\n function rerollRandomness(bytes32 randomnessId) external;\n\n /**\n * Reroll randomness (to reuse existing randomness objects for new randomness requests)\n * @dev caller must be the authority for the randomness\n * @param randomnessId The randomness id\n * @param oracleId The oracle id to specifically reroll randomness from\n */\n function rerollRandomness(bytes32 randomnessId, bytes32 oracleId) external;\n\n /**\n * Get randomness by id\n * @param randomnessId The randomness id\n * @return randomness The randomness object\n */\n function getRandomness(\n bytes32 randomnessId\n ) external view returns (Structs.Randomness memory);\n}\n" + }, + "@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {Structs} from \"../structs/Structs.sol\";\n\n// -- Switchboard: the main contract for the Switchboard protocol --\ninterface ISwitchboardModule {\n event FeedUpdate(\n bytes32 indexed feedId,\n bytes32 indexed oracleId,\n uint256 timestamp,\n int128 result\n );\n event OracleAdded(\n bytes32 indexed queueId,\n bytes32 indexed oracleId,\n address indexed oracleAddress\n );\n event OracleRemoved(bytes32 indexed queueId, bytes32 indexed oracleId);\n event RandomnessSettled(\n bytes32 indexed randomnessId,\n bytes32 indexed oracleId,\n uint256 timestamp,\n uint256 result\n );\n\n /**\n * Get the latest Update struct for a feed\n * @dev Intended to be called within the same transaction as a feed update for the most up-to-date data.\n * @dev Reverts if the feed does not exist\n * @dev Reverts if the feed does not have a valid update within queue (or aggregator's) tolerated delta\n * @dev Reverts if the feed does not have the minimum number of valid responses\n * @param feedId The identifier for the feed to get the latest update for\n * @return Update The latest update for the given feed\n */\n function latestUpdate(\n bytes32 feedId\n ) external view returns (Structs.Update memory);\n\n /**\n * Calculate\n * @param aggregatorId The feed identifier to calculate the current result for\n * @return CurrentResult The current result for the given feed, a struct containing stats and the result\n */\n function findCurrentResult(\n bytes32 aggregatorId\n ) external view returns (Structs.CurrentResult memory);\n\n /**\n * Get the fee in wei for submitting a set of updates\n * @param updates Encoded switchboard update(s) with signatures\n * @return uint256 The fee in wei for submitting the updates\n */\n function getFee(bytes[] calldata updates) external view returns (uint256);\n\n /**\n * Update feeds with new oracle results\n * @dev reverts if the queue's fee is not paid\n * @dev reverts if the blockhash is invalid (i.e. the block is in the future)\n * @dev reverts if the timestamp is out of valid range (optional flow for timestamp-sequenced updates)\n * @param updates Encoded switchboard update(s) with signatures\n */\n function updateFeeds(bytes[] calldata updates) external payable;\n}\n" + }, + "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\nimport {IAggregatorModule} from \"./interfaces/IAggregatorModule.sol\";\nimport {IOracleModule} from \"./interfaces/IOracleModule.sol\";\nimport {IRandomnessModule} from \"./interfaces/IRandomnessModule.sol\";\nimport {ISwitchboardModule} from \"./interfaces/ISwitchboardModule.sol\";\nimport {IQueueModule} from \"./interfaces/IQueueModule.sol\";\n\ninterface ISwitchboard is\n IAggregatorModule,\n IOracleModule,\n IRandomnessModule,\n ISwitchboardModule,\n IQueueModule\n{}\n" + }, + "@switchboard-xyz/on-demand-solidity/structs/Structs.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0 <0.9.0;\n\ncontract Structs {\n /**\n * An update to a feed\n * @param oracleId The publisher of the update\n * @param result The result of the update\n * @param timestamp The timestamp of the update\n */\n struct Update {\n bytes32 oracleId;\n int128 result;\n uint256 timestamp;\n }\n\n /**\n * The current result for a feed\n * @param result The result of the feed\n * @param minTimestamp The minimum timestamp of the feed\n * @param maxTimestamp The maximum timestamp of the feed\n * @param minResult The minimum result of the feed\n * @param maxResult The maximum result of the feed\n * @param stdev The standard deviation of the feed\n * @param range The range of the feed\n * @param mean The mean of the feed\n */\n struct CurrentResult {\n int128 result;\n uint256 minTimestamp;\n uint256 maxTimestamp;\n int128 minResult;\n int128 maxResult;\n int128 stdev;\n int128 range;\n int128 mean;\n }\n\n /**\n * Results for a feed\n * @param idx The index of the feed\n * @param updates The updates for the feed\n */\n struct Results {\n uint256 idx;\n Update[] updates;\n }\n\n /**\n * An abstraction over feed allowing for UI to display the feed in a more human readable way and reconfiguration of sources.\n * Reading from this struct should be atomic (same tx as the write).\n * @param aggregatorId The aggregator id\n * @param authority The authority of the feed\n * @param name The name of the feed\n * @param queueId The queue id associated with the feed\n * @param toleratedDelta The maximum blocks staleness\n * @param cid The content id (IPFS cid for example) for the feed\n * @param feedHash The feed associated with the aggregator\n * @param createdAt The time the feed was created\n * @param maxVariance The maximum variance allowed for a feed result\n * @param minResponses The minimum number of responses required for a valid feed result\n * @param minSamples The minimum number of samples to take for a feed result\n * @param maxStaleness The maximum number of seconds staleness for an update to be valid\n */\n struct Aggregator {\n bytes32 aggregatorId;\n address authority;\n string name;\n bytes32 queueId;\n uint256 toleratedDelta;\n bytes32 cid;\n bytes32 feedHash;\n uint256 createdAt;\n uint64 maxVariance;\n uint32 minResponses;\n uint8 minSamples;\n uint256 maxStaleness;\n }\n\n /**\n * Queue / Switchboard Subnet\n * @param queueId The queue id\n * @param authority The authority of the queue\n * @param name The name of the queue\n * @param fee The fee required to submit an update to the queue\n * @param feeRecipient The recipient of the fee (OPTIONAL - if unset the oracle is the recipient)\n * @param minAttestations size * (1 / minAttestations) + 1 is the minimum number of oracles required to attest to a registration\n * @param toleratedTimestampDelta The default maximum staleness for a valid feed result\n * @param resultsMaxSize The maximum size of the results array\n * @param oracleValidityLength The length of time an oracle is valid for\n * @param mrEnclaves The enclave measurements allowed by the queue\n * @param oracles The oracles associated with the queue\n * @param toleratedBlocksStaleness The number of blocks a timestamp is allowed to be stale\n * @param lastQueueOverride The last time the queue was overridden\n * @param guardianQueueId The guardian queue id\n */\n struct Queue {\n bytes32 queueId;\n address authority;\n string name;\n uint256 fee;\n address feeRecipient;\n uint64 minAttestations;\n uint256 toleratedTimestampDelta;\n uint8 resultsMaxSize;\n uint256 oracleValidityLength;\n bytes32[] mrEnclaves;\n bytes32[] oracles;\n uint256 toleratedBlocksStaleness;\n uint256 lastQueueOverride;\n bytes32 guardianQueueId;\n }\n\n /**\n * Oracle - A more dense version of the oracle\n * @param authority the oracle's enclave secp key\n * @param owner the owner of the oracle\n * @param oracleId the oracle's id (hexified pubkey from solana)\n * @param queueId the queue that the oracle belongs to\n * @param mrEnclave the oracle's enclave measurement\n * @param expirationTime the time the oracle expires\n * @param feesOwed the fees owed to the oracle\n */\n struct Oracle {\n address authority;\n address owner;\n bytes32 oracleId;\n bytes32 queueId;\n bytes32 mrEnclave;\n uint256 expirationTime;\n uint256 feesOwed;\n }\n\n /**\n * Pending Oracle Registration\n * @param oracle The oracle to be registered\n * @param attestingOracle The oracle attesting to the registration\n */\n struct OracleAttestation {\n address oracleAuthority;\n bytes32 oracleId;\n bytes32 attestingOracle;\n uint256 timestamp;\n bytes32 mrEnclave;\n }\n\n /**\n * Randomness - a message resolving randomness\n * @param randId The randomness id\n * @param queueId The queue id\n * @param createdAt The time the randomness was created\n * @param authority The authority of the randomness\n * @param rollTimestamp The timestamp of the latest roll\n * @param minSettlementDelay The minimum settlement delay seconds\n * @param result The value of the randomness (uint256)\n */\n struct Randomness {\n bytes32 randId;\n bytes32 queueId;\n uint256 createdAt;\n address authority;\n uint256 rollTimestamp;\n uint64 minSettlementDelay;\n RandomnessResult result;\n }\n\n /**\n * Randomness Result\n * @param oracleId The oracle id\n * @param oracleAuthority The authority of the oracle that provided the randomness\n * @param value The value of the randomness\n * @param settledAt The time the randomness was settled\n */\n struct RandomnessResult {\n bytes32 oracleId;\n address oracleAuthority;\n uint256 value;\n uint256 settledAt;\n }\n\n /**\n * Attestations\n * @param list The list of pending attestations\n */\n struct Attestations {\n OracleAttestation[] list;\n }\n}\n" + }, + "contracts/TemperatureFeed.sol": { + "content": "//SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.0;\n\nimport {ISwitchboard} from \"@switchboard-xyz/on-demand-solidity/ISwitchboard.sol\";\n\ncontract TemperatureFeed {\n ISwitchboard switchboard;\n\n // Every Switchboard Feed has a unique aggregatorId.\n bytes32 public aggregatorId;\n\n // The latest temperature from the feed\n int256 public latestTemperature;\n\n // If the transaction fee is not paid, the update will fail.\n error InsufficientFee(uint256 expected, uint256 received);\n\n // If the feed result is invalid, this error will be emitted.\n error InvalidResult(int128 result);\n\n // If the Switchboard update succeeds, this event will be emitted with the latest temperature.\n event FeedData(int128 temperature);\n\n /**\n * @param _switchboard The address of the Switchboard contract\n * @param _aggregatorId The feed ID for the feed you want to query\n */\n constructor(address _switchboard, bytes32 _aggregatorId) {\n // Initialize the target _switchboard\n // Get the existing Switchboard contract address on your preferred network from the Switchboard Docs\n switchboard = ISwitchboard(_switchboard);\n aggregatorId = _aggregatorId;\n }\n\n /**\n * getFeedData is a function that uses an encoded Switchboard update\n * If the update is successful, it will read the latest temperature from the feed\n * See below for fetching encoded updates (e.g., using the Switchboard Typescript SDK)\n * @param updates Encoded feed updates to update the contract with the latest result\n */\n function getFeedData(bytes[] calldata updates) public payable {\n // Get the fee for updating the feeds. If the transaction fee is not paid, the update will fail.\n uint256 fee = switchboard.getFee(updates);\n if (msg.value < fee) {\n revert InsufficientFee(fee, msg.value);\n }\n\n // Submit the updates to the Switchboard contract\n switchboard.updateFeeds{value: fee}(updates);\n\n // Read the current value from a Switchboard feed.\n // This will fail if the feed doesn't have fresh updates ready (e.g. if the feed update failed)\n // Get the latest feed result\n // This is encoded as decimal * 10^18 to avoid floating point issues\n int128 result = switchboard.latestUpdate(aggregatorId).result;\n\n latestTemperature = result;\n\n // Emit the latest result from the feed\n emit FeedData(result);\n }\n}\n" + } + }, + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol", + "exportedSymbols": { + "IAggregatorModule": [ + 128 + ], + "IOracleModule": [ + 165 + ], + "IQueueModule": [ + 310 + ], + "IRandomnessModule": [ + 382 + ], + "ISwitchboard": [ + 22 + ], + "ISwitchboardModule": [ + 455 + ] + }, + "id": 23, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:0" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol", + "file": "./interfaces/IAggregatorModule.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23, + "sourceUnit": 129, + "src": "71:69:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "IAggregatorModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "79:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol", + "file": "./interfaces/IOracleModule.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23, + "sourceUnit": 166, + "src": "141:61:0", + "symbolAliases": [ + { + "foreign": { + "id": 4, + "name": "IOracleModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "149:13:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol", + "file": "./interfaces/IRandomnessModule.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23, + "sourceUnit": 383, + "src": "203:69:0", + "symbolAliases": [ + { + "foreign": { + "id": 6, + "name": "IRandomnessModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 382, + "src": "211:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol", + "file": "./interfaces/ISwitchboardModule.sol", + "id": 9, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23, + "sourceUnit": 456, + "src": "273:71:0", + "symbolAliases": [ + { + "foreign": { + "id": 8, + "name": "ISwitchboardModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "281:18:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol", + "file": "./interfaces/IQueueModule.sol", + "id": 11, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 23, + "sourceUnit": 311, + "src": "345:59:0", + "symbolAliases": [ + { + "foreign": { + "id": 10, + "name": "IQueueModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "353:12:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 12, + "name": "IAggregatorModule", + "nameLocations": [ + "436:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 128, + "src": "436:17:0" + }, + "id": 13, + "nodeType": "InheritanceSpecifier", + "src": "436:17:0" + }, + { + "baseName": { + "id": 14, + "name": "IOracleModule", + "nameLocations": [ + "459:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 165, + "src": "459:13:0" + }, + "id": 15, + "nodeType": "InheritanceSpecifier", + "src": "459:13:0" + }, + { + "baseName": { + "id": 16, + "name": "IRandomnessModule", + "nameLocations": [ + "478:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 382, + "src": "478:17:0" + }, + "id": 17, + "nodeType": "InheritanceSpecifier", + "src": "478:17:0" + }, + { + "baseName": { + "id": 18, + "name": "ISwitchboardModule", + "nameLocations": [ + "501:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 455, + "src": "501:18:0" + }, + "id": 19, + "nodeType": "InheritanceSpecifier", + "src": "501:18:0" + }, + { + "baseName": { + "id": 20, + "name": "IQueueModule", + "nameLocations": [ + "525:12:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 310, + "src": "525:12:0" + }, + "id": 21, + "nodeType": "InheritanceSpecifier", + "src": "525:12:0" + } + ], + "canonicalName": "ISwitchboard", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 22, + "linearizedBaseContracts": [ + 22, + 310, + 455, + 382, + 165, + 128 + ], + "name": "ISwitchboard", + "nameLocation": "416:12:0", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 23, + "src": "406:134:0", + "usedErrors": [], + "usedEvents": [ + 34, + 48, + 54, + 175, + 193, + 199, + 205, + 211, + 215, + 326, + 332, + 396, + 404, + 410, + 420 + ] + } + ], + "src": "38:503:0" + }, + "id": 0 + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol", + "exportedSymbols": { + "IAggregatorModule": [ + 128 + ], + "Structs": [ + 611 + ] + }, + "id": 129, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 24, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:1" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "file": "../structs/Structs.sol", + "id": 26, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 129, + "sourceUnit": 612, + "src": "71:47:1", + "symbolAliases": [ + { + "foreign": { + "id": 25, + "name": "Structs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "79:7:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAggregatorModule", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 128, + "linearizedBaseContracts": [ + 128 + ], + "name": "IAggregatorModule", + "nameLocation": "207:17:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "29717a607ff320cc4ba6368e3a6dbc67a0d4661a95649037beab280b67a71886", + "id": 34, + "name": "AggregatorCreated", + "nameLocation": "237:17:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "indexed": true, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "280:12:1", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "264:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 27, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "264:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 30, + "indexed": true, + "mutability": "mutable", + "name": "feedId", + "nameLocation": "318:6:1", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "302:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 29, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "302:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "indexed": false, + "mutability": "mutable", + "name": "authority", + "nameLocation": "342:9:1", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "334:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 31, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "334:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "254:103:1" + }, + "src": "231:127:1" + }, + { + "anonymous": false, + "eventSelector": "b0182de765c37fc6f4bc98a36ca2a4f7c9fcd6732263e5c9070d304092685a0b", + "id": 48, + "name": "AggregatorConfigured", + "nameLocation": "369:20:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 47, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "indexed": true, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "415:12:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "399:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 35, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "399:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "indexed": false, + "mutability": "mutable", + "name": "name", + "nameLocation": "444:4:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "437:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 37, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "437:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40, + "indexed": false, + "mutability": "mutable", + "name": "toleratedDelta", + "nameLocation": "466:14:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "458:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 39, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "458:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42, + "indexed": false, + "mutability": "mutable", + "name": "cid", + "nameLocation": "498:3:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "490:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 41, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44, + "indexed": false, + "mutability": "mutable", + "name": "maxVariance", + "nameLocation": "518:11:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "511:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 43, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "511:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 46, + "indexed": false, + "mutability": "mutable", + "name": "minResponses", + "nameLocation": "546:12:1", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "539:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 45, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "539:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "389:175:1" + }, + "src": "363:202:1" + }, + { + "anonymous": false, + "eventSelector": "fa934493e2b8e62380386f5b08dcbe40ebf30b6cfd486033dca650e8747fe402", + "id": 54, + "name": "AggregatorAuthoritySet", + "nameLocation": "576:22:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "indexed": true, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "624:12:1", + "nodeType": "VariableDeclaration", + "scope": 54, + "src": "608:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 49, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "608:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 52, + "indexed": true, + "mutability": "mutable", + "name": "authority", + "nameLocation": "662:9:1", + "nodeType": "VariableDeclaration", + "scope": 54, + "src": "646:25:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 51, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "646:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "598:79:1" + }, + "src": "570:108:1" + }, + { + "documentation": { + "id": 55, + "nodeType": "StructuredDocumentation", + "src": "684:92:1", + "text": " Create a new aggregator\n @param aggregator The aggregator to create" + }, + "functionSelector": "213de480", + "id": 61, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createAggregator", + "nameLocation": "790:16:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "mutability": "mutable", + "name": "aggregator", + "nameLocation": "835:10:1", + "nodeType": "VariableDeclaration", + "scope": 61, + "src": "807:38:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Aggregator_$517_calldata_ptr", + "typeString": "struct Structs.Aggregator" + }, + "typeName": { + "id": 57, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 56, + "name": "Structs.Aggregator", + "nameLocations": [ + "807:7:1", + "815:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 517, + "src": "807:18:1" + }, + "referencedDeclaration": 517, + "src": "807:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Aggregator_$517_storage_ptr", + "typeString": "struct Structs.Aggregator" + } + }, + "visibility": "internal" + } + ], + "src": "806:40:1" + }, + "returnParameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [], + "src": "855:0:1" + }, + "scope": 128, + "src": "781:75:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 62, + "nodeType": "StructuredDocumentation", + "src": "862:826:1", + "text": " Set the config for an aggregator\n @dev Only the authority of the aggregator can set the config\n @param aggregatorId The aggregatorId to set the config for\n @param name The name of the aggregator\n @param toleratedDelta The maximum staleness blocks for a valid feed result (or seconds if the queue has a time feed)\n @param cid The content id (IPFS cid for example) for the feed\n @param feedId The feedId associated with the aggregator\n @param maxVariance The maximum variance allowed for a feed result\n @param minResponses The minimum number of responses required for a valid feed result\n @param minSamples The minimum number of samples to take for a feed result\n @param maxStaleness The maximum number of seconds staleness for an update to be valid" + }, + "functionSelector": "63c339d8", + "id": 83, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setAggregatorConfig", + "nameLocation": "1702:19:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "1739:12:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1731:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66, + "mutability": "mutable", + "name": "name", + "nameLocation": "1775:4:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1761:18:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 65, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1761:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 68, + "mutability": "mutable", + "name": "toleratedDelta", + "nameLocation": "1797:14:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1789:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 67, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1789:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "cid", + "nameLocation": "1829:3:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1821:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 69, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "feedId", + "nameLocation": "1850:6:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1842:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 71, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1842:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 74, + "mutability": "mutable", + "name": "maxVariance", + "nameLocation": "1873:11:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1866:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 73, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1866:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "minResponses", + "nameLocation": "1901:12:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1894:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 75, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "1894:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "minSamples", + "nameLocation": "1929:10:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1923:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 77, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1923:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 80, + "mutability": "mutable", + "name": "maxStaleness", + "nameLocation": "1957:12:1", + "nodeType": "VariableDeclaration", + "scope": 83, + "src": "1949:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 79, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1949:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1721:254:1" + }, + "returnParameters": { + "id": 82, + "nodeType": "ParameterList", + "parameters": [], + "src": "1984:0:1" + }, + "scope": 128, + "src": "1693:292:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 84, + "nodeType": "StructuredDocumentation", + "src": "1991:264:1", + "text": " Set the authority for an aggregator\n @dev Only the authority of the aggregator can set a new authority\n @param aggregatorId The aggregatorId to set the authority for\n @param authority The new authority to set for the aggregator" + }, + "functionSelector": "2ef98541", + "id": 91, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setAggregatorAuthority", + "nameLocation": "2269:22:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 86, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "2309:12:1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "2301:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 85, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2301:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 88, + "mutability": "mutable", + "name": "authority", + "nameLocation": "2339:9:1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "2331:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 87, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2331:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2291:63:1" + }, + "returnParameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "2363:0:1" + }, + "scope": 128, + "src": "2260:104:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "2370:93:1", + "text": " The aggregator to fetch\n @param aggregatorId The aggregatorId to get" + }, + "functionSelector": "331b1816", + "id": 104, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAggregator", + "nameLocation": "2477:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "2508:12:1", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2500:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 93, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2500:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2490:36:1" + }, + "returnParameters": { + "id": 103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 98, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2574:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Aggregator_$517_memory_ptr", + "typeString": "struct Structs.Aggregator" + }, + "typeName": { + "id": 97, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 96, + "name": "Structs.Aggregator", + "nameLocations": [ + "2574:7:1", + "2582:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 517, + "src": "2574:18:1" + }, + "referencedDeclaration": 517, + "src": "2574:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Aggregator_$517_storage_ptr", + "typeString": "struct Structs.Aggregator" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2601:23:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Update[]" + }, + "typeName": { + "baseType": { + "id": 100, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 99, + "name": "Structs.Update", + "nameLocations": [ + "2601:7:1", + "2609:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 465, + "src": "2601:14:1" + }, + "referencedDeclaration": 465, + "src": "2601:14:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_storage_ptr", + "typeString": "struct Structs.Update" + } + }, + "id": 101, + "nodeType": "ArrayTypeName", + "src": "2601:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[]" + } + }, + "visibility": "internal" + } + ], + "src": "2573:52:1" + }, + "scope": 128, + "src": "2468:158:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 105, + "nodeType": "StructuredDocumentation", + "src": "2632:38:1", + "text": " Get all aggregators" + }, + "functionSelector": "465c65dd", + "id": 117, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllAggregators", + "nameLocation": "2684:17:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [], + "src": "2701:2:1" + }, + "returnParameters": { + "id": 116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 110, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "2751:27:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Aggregator_$517_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Aggregator[]" + }, + "typeName": { + "baseType": { + "id": 108, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 107, + "name": "Structs.Aggregator", + "nameLocations": [ + "2751:7:1", + "2759:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 517, + "src": "2751:18:1" + }, + "referencedDeclaration": 517, + "src": "2751:18:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Aggregator_$517_storage_ptr", + "typeString": "struct Structs.Aggregator" + } + }, + "id": 109, + "nodeType": "ArrayTypeName", + "src": "2751:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Aggregator_$517_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Aggregator[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "2780:25:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Update_$465_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Update[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 112, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 111, + "name": "Structs.Update", + "nameLocations": [ + "2780:7:1", + "2788:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 465, + "src": "2780:14:1" + }, + "referencedDeclaration": 465, + "src": "2780:14:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_storage_ptr", + "typeString": "struct Structs.Update" + } + }, + "id": 113, + "nodeType": "ArrayTypeName", + "src": "2780:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[]" + } + }, + "id": 114, + "nodeType": "ArrayTypeName", + "src": "2780:18:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Update_$465_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[][]" + } + }, + "visibility": "internal" + } + ], + "src": "2750:56:1" + }, + "scope": 128, + "src": "2675:132:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 118, + "nodeType": "StructuredDocumentation", + "src": "2813:140:1", + "text": " Get the results for a feed\n @param feedId The feedId to get the results for\n @return The results for the feed" + }, + "functionSelector": "5d89a447", + "id": 127, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAggregatorResults", + "nameLocation": "2967:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "feedId", + "nameLocation": "3005:6:1", + "nodeType": "VariableDeclaration", + "scope": 127, + "src": "2997:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 119, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2997:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2987:30:1" + }, + "returnParameters": { + "id": 126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 127, + "src": "3041:23:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Update[]" + }, + "typeName": { + "baseType": { + "id": 123, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 122, + "name": "Structs.Update", + "nameLocations": [ + "3041:7:1", + "3049:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 465, + "src": "3041:14:1" + }, + "referencedDeclaration": 465, + "src": "3041:14:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_storage_ptr", + "typeString": "struct Structs.Update" + } + }, + "id": 124, + "nodeType": "ArrayTypeName", + "src": "3041:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[]" + } + }, + "visibility": "internal" + } + ], + "src": "3040:25:1" + }, + "scope": 128, + "src": "2958:108:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 129, + "src": "197:2871:1", + "usedErrors": [], + "usedEvents": [ + 34, + 48, + 54 + ] + } + ], + "src": "38:3031:1" + }, + "id": 1 + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol", + "exportedSymbols": { + "IOracleModule": [ + 165 + ], + "Structs": [ + 611 + ] + }, + "id": 166, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 130, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:2" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "file": "../structs/Structs.sol", + "id": 132, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 166, + "sourceUnit": 612, + "src": "71:47:2", + "symbolAliases": [ + { + "foreign": { + "id": 131, + "name": "Structs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "79:7:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IOracleModule", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 165, + "linearizedBaseContracts": [ + 165 + ], + "name": "IOracleModule", + "nameLocation": "203:13:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 133, + "nodeType": "StructuredDocumentation", + "src": "223:211:2", + "text": " Get oracles associated with an address\n @param queueId the queue\n @param oracleAddress the address of the oracle\n @return oracleAddress the oracle associated with the address" + }, + "functionSelector": "ae91c162", + "id": 143, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleByAddress", + "nameLocation": "448:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 135, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "484:7:2", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "476:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 134, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "476:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 137, + "mutability": "mutable", + "name": "oracleAddress", + "nameLocation": "509:13:2", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "501:21:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "501:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "466:62:2" + }, + "returnParameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 141, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 143, + "src": "552:21:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_memory_ptr", + "typeString": "struct Structs.Oracle" + }, + "typeName": { + "id": 140, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 139, + "name": "Structs.Oracle", + "nameLocations": [ + "552:7:2", + "560:6:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 565, + "src": "552:14:2" + }, + "referencedDeclaration": 565, + "src": "552:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_storage_ptr", + "typeString": "struct Structs.Oracle" + } + }, + "visibility": "internal" + } + ], + "src": "551:23:2" + }, + "scope": 165, + "src": "439:136:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 144, + "nodeType": "StructuredDocumentation", + "src": "581:224:2", + "text": " Get an oracle\n @param queueId The queueId associated with the oracle\n @param oracleId The oracleId corresponding to the oracle\n @return The oracle associated with the queueId and oracleId" + }, + "functionSelector": "e7e9e1cc", + "id": 154, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracle", + "nameLocation": "819:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 146, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "846:7:2", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "838:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "838:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 148, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "871:8:2", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "863:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 147, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "863:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "828:57:2" + }, + "returnParameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 152, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "909:21:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_memory_ptr", + "typeString": "struct Structs.Oracle" + }, + "typeName": { + "id": 151, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 150, + "name": "Structs.Oracle", + "nameLocations": [ + "909:7:2", + "917:6:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 565, + "src": "909:14:2" + }, + "referencedDeclaration": 565, + "src": "909:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_storage_ptr", + "typeString": "struct Structs.Oracle" + } + }, + "visibility": "internal" + } + ], + "src": "908:23:2" + }, + "scope": 165, + "src": "810:122:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 155, + "nodeType": "StructuredDocumentation", + "src": "938:168:2", + "text": " Get all oracles associated with a queue\n @param queueId The queueId to get the oracles for\n @return The oracles associated with the queue" + }, + "functionSelector": "a49c63ed", + "id": 164, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllOracles", + "nameLocation": "1120:13:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 158, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "1151:7:2", + "nodeType": "VariableDeclaration", + "scope": 164, + "src": "1143:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 156, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1143:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1133:31:2" + }, + "returnParameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 164, + "src": "1188:23:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Oracle[]" + }, + "typeName": { + "baseType": { + "id": 160, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 159, + "name": "Structs.Oracle", + "nameLocations": [ + "1188:7:2", + "1196:6:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 565, + "src": "1188:14:2" + }, + "referencedDeclaration": 565, + "src": "1188:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_storage_ptr", + "typeString": "struct Structs.Oracle" + } + }, + "id": 161, + "nodeType": "ArrayTypeName", + "src": "1188:16:2", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Oracle[]" + } + }, + "visibility": "internal" + } + ], + "src": "1187:25:2" + }, + "scope": 165, + "src": "1111:102:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 166, + "src": "193:1022:2", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "38:1178:2" + }, + "id": 2 + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol", + "exportedSymbols": { + "IQueueModule": [ + 310 + ], + "Structs": [ + 611 + ] + }, + "id": 311, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 167, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:3" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "file": "../structs/Structs.sol", + "id": 169, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 311, + "sourceUnit": 612, + "src": "71:47:3", + "symbolAliases": [ + { + "foreign": { + "id": 168, + "name": "Structs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "79:7:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IQueueModule", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 310, + "linearizedBaseContracts": [ + 310 + ], + "name": "IQueueModule", + "nameLocation": "202:12:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "38de7bc42feaf90f360eba71b1e0d9defacc2bd003e1a3fbb7cc088c61563fb4", + "id": 175, + "name": "QueueCreated", + "nameLocation": "227:12:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "248:7:3", + "nodeType": "VariableDeclaration", + "scope": 175, + "src": "240:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 170, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "240:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 173, + "indexed": false, + "mutability": "mutable", + "name": "authority", + "nameLocation": "265:9:3", + "nodeType": "VariableDeclaration", + "scope": 175, + "src": "257:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 172, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "257:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "239:36:3" + }, + "src": "221:55:3" + }, + { + "anonymous": false, + "eventSelector": "b3bc5ead07867a33ca6765c15f3caf3a50653cc966d5b45a9d3816fa39401cbf", + "id": 193, + "name": "QueueConfigSet", + "nameLocation": "287:14:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 192, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 177, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "319:7:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "311:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 176, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "311:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 179, + "indexed": false, + "mutability": "mutable", + "name": "name", + "nameLocation": "343:4:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "336:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 178, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "336:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "indexed": false, + "mutability": "mutable", + "name": "fee", + "nameLocation": "365:3:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "357:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "357:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "indexed": false, + "mutability": "mutable", + "name": "minAttestations", + "nameLocation": "384:15:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "378:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 182, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "378:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 185, + "indexed": false, + "mutability": "mutable", + "name": "toleratedTimestampDelta", + "nameLocation": "417:23:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "409:31:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "409:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "indexed": false, + "mutability": "mutable", + "name": "resultsMaxSize", + "nameLocation": "456:14:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "450:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 186, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "450:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "indexed": false, + "mutability": "mutable", + "name": "oracleValidityLength", + "nameLocation": "488:20:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "480:28:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "480:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "indexed": false, + "mutability": "mutable", + "name": "toleratedBlocksStaleness", + "nameLocation": "526:24:3", + "nodeType": "VariableDeclaration", + "scope": 193, + "src": "518:32:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "518:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "301:255:3" + }, + "src": "281:276:3" + }, + { + "anonymous": false, + "eventSelector": "a268f31636bd56463a4dd8b149968f08ef295c022930d109d986f2de0f5b23f1", + "id": 199, + "name": "QueueAuthoritySet", + "nameLocation": "568:17:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 195, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "594:7:3", + "nodeType": "VariableDeclaration", + "scope": 199, + "src": "586:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 194, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "586:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 197, + "indexed": false, + "mutability": "mutable", + "name": "authority", + "nameLocation": "611:9:3", + "nodeType": "VariableDeclaration", + "scope": 199, + "src": "603:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "603:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "585:36:3" + }, + "src": "562:60:3" + }, + { + "anonymous": false, + "eventSelector": "3b78afce077b9a9a6fd7df988c573d6e00bdbafbd4381e9131b14bb9a2515c0f", + "id": 205, + "name": "QueueMrEnclaveAdded", + "nameLocation": "633:19:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "661:7:3", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "653:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "653:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 203, + "indexed": false, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "678:9:3", + "nodeType": "VariableDeclaration", + "scope": 205, + "src": "670:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "670:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "652:36:3" + }, + "src": "627:62:3" + }, + { + "anonymous": false, + "eventSelector": "06654f662e84277fa67f2ad1723879867af19978bf60b5584601c62282b64bd5", + "id": 211, + "name": "QueueMrEnclaveRemoved", + "nameLocation": "700:21:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 207, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "730:7:3", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "722:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 206, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "722:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "indexed": false, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "747:9:3", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "739:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "739:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "721:36:3" + }, + "src": "694:64:3" + }, + { + "anonymous": false, + "eventSelector": "88e9807c1f00aa3f3021f33e498ca7dcfd37ae161d13445ca179b1bf5b76b812", + "id": 215, + "name": "QueueOraclesOverridden", + "nameLocation": "769:22:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "800:7:3", + "nodeType": "VariableDeclaration", + "scope": 215, + "src": "792:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 212, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "792:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "791:17:3" + }, + "src": "763:46:3" + }, + { + "documentation": { + "id": 216, + "nodeType": "StructuredDocumentation", + "src": "815:152:3", + "text": " Create a new queue\n @param queue The queue to create\n @param oracles The initial set of oracles associated with the queue" + }, + "functionSelector": "56ac2b43", + "id": 226, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createQueue", + "nameLocation": "981:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 219, + "mutability": "mutable", + "name": "queue", + "nameLocation": "1025:5:3", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "1002:28:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Queue_$549_calldata_ptr", + "typeString": "struct Structs.Queue" + }, + "typeName": { + "id": 218, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 217, + "name": "Structs.Queue", + "nameLocations": [ + "1002:7:3", + "1010:5:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 549, + "src": "1002:13:3" + }, + "referencedDeclaration": 549, + "src": "1002:13:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Queue_$549_storage_ptr", + "typeString": "struct Structs.Queue" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 223, + "mutability": "mutable", + "name": "oracles", + "nameLocation": "1066:7:3", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "1040:33:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct Structs.Oracle[]" + }, + "typeName": { + "baseType": { + "id": 221, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 220, + "name": "Structs.Oracle", + "nameLocations": [ + "1040:7:3", + "1048:6:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 565, + "src": "1040:14:3" + }, + "referencedDeclaration": 565, + "src": "1040:14:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_storage_ptr", + "typeString": "struct Structs.Oracle" + } + }, + "id": 222, + "nodeType": "ArrayTypeName", + "src": "1040:16:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Oracle[]" + } + }, + "visibility": "internal" + } + ], + "src": "992:87:3" + }, + "returnParameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [], + "src": "1088:0:3" + }, + "scope": 310, + "src": "972:117:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 227, + "nodeType": "StructuredDocumentation", + "src": "1095:702:3", + "text": " Set the config for a queue\n @dev Only the authority of the queue can set the config\n @param queueId the queueId to set the config for\n @param name name of the queue\n @param fee fee required to submit an update to the queue\n @param minAttestations minimum number of attestations required for adding an oracle the queue\n @param toleratedTimestampDelta default maximum staleness blocks for a valid feed result\n @param resultsMaxSize maximum size of the results array for feeds\n @param oracleValidityLength length of time an oracle is valid for\n @param toleratedBlocksStaleness The number of blocks a timestamp is allowed to be stale" + }, + "functionSelector": "8b798dca", + "id": 246, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setQueueConfig", + "nameLocation": "1811:14:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 229, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "1843:7:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1835:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 228, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1835:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 231, + "mutability": "mutable", + "name": "name", + "nameLocation": "1874:4:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1860:18:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 230, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1860:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 233, + "mutability": "mutable", + "name": "fee", + "nameLocation": "1896:3:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1888:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1888:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "minAttestations", + "nameLocation": "1915:15:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1909:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 234, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1909:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "toleratedTimestampDelta", + "nameLocation": "1948:23:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1940:31:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1940:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 239, + "mutability": "mutable", + "name": "resultsMaxSize", + "nameLocation": "1987:14:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "1981:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 238, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1981:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 241, + "mutability": "mutable", + "name": "oracleValidityLength", + "nameLocation": "2019:20:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "2011:28:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2011:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "mutability": "mutable", + "name": "toleratedBlocksStaleness", + "nameLocation": "2057:24:3", + "nodeType": "VariableDeclaration", + "scope": 246, + "src": "2049:32:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2049:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1825:262:3" + }, + "returnParameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [], + "src": "2096:0:3" + }, + "scope": 310, + "src": "1802:295:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 247, + "nodeType": "StructuredDocumentation", + "src": "2103:238:3", + "text": " Set the authority for a queue\n @dev Only the authority of the queue can set a new authority\n @param queueId The queueId to set the authority for\n @param authority The new authority to set for the queue" + }, + "functionSelector": "263d4ced", + "id": 254, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setQueueAuthority", + "nameLocation": "2355:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "2381:7:3", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "2373:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 248, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2373:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 251, + "mutability": "mutable", + "name": "authority", + "nameLocation": "2398:9:3", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "2390:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 250, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2390:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2372:36:3" + }, + "returnParameters": { + "id": 253, + "nodeType": "ParameterList", + "parameters": [], + "src": "2417:0:3" + }, + "scope": 310, + "src": "2346:72:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 255, + "nodeType": "StructuredDocumentation", + "src": "2424:240:3", + "text": " Add an enclave measurement to a queue\n @dev Only the authority of the queue can set the mrEnclave\n @param queueId The queueId to set the mrEnclave for\n @param mrEnclave The mrEnclave to set for the queue" + }, + "functionSelector": "8eb03f85", + "id": 262, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addQueueMrEnclave", + "nameLocation": "2678:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "2704:7:3", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2696:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2696:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 259, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "2721:9:3", + "nodeType": "VariableDeclaration", + "scope": 262, + "src": "2713:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2713:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2695:36:3" + }, + "returnParameters": { + "id": 261, + "nodeType": "ParameterList", + "parameters": [], + "src": "2740:0:3" + }, + "scope": 310, + "src": "2669:72:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 263, + "nodeType": "StructuredDocumentation", + "src": "2747:241:3", + "text": " Remove an enclave measurement from a queue\n @dev Only the authority of the queue can remove the mrEnclave\n @param queueId The queueId to remove the mrEnclave from\n @param mrEnclave The mrEnclave to remove" + }, + "functionSelector": "05b5f429", + "id": 270, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeQueueMrEnclave", + "nameLocation": "3002:20:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 265, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "3031:7:3", + "nodeType": "VariableDeclaration", + "scope": 270, + "src": "3023:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3023:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "3048:9:3", + "nodeType": "VariableDeclaration", + "scope": 270, + "src": "3040:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 266, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3040:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3022:36:3" + }, + "returnParameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [], + "src": "3067:0:3" + }, + "scope": 310, + "src": "2993:75:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 271, + "nodeType": "StructuredDocumentation", + "src": "3074:177:3", + "text": " Get the mrEnclaves associated with a queue\n @param queueId The queueId to get the mrEnclaves for\n @return The mrEnclaves associated with the queue" + }, + "functionSelector": "6111a9c6", + "id": 279, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getQueueMrEnclaves", + "nameLocation": "3265:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "3301:7:3", + "nodeType": "VariableDeclaration", + "scope": 279, + "src": "3293:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 272, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3293:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3283:31:3" + }, + "returnParameters": { + "id": 278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 279, + "src": "3338:16:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 275, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3338:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 276, + "nodeType": "ArrayTypeName", + "src": "3338:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "3337:18:3" + }, + "scope": 310, + "src": "3256:100:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 280, + "nodeType": "StructuredDocumentation", + "src": "3362:231:3", + "text": " Set the oracle queue manually (override the oracles array)\n @dev Should only be dao controlled\n @param queueId The queueId to set the oracles for\n @param oracles The oracles to set for the queue" + }, + "functionSelector": "bbd32aea", + "id": 292, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "queueOverride", + "nameLocation": "3607:13:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 282, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "3638:7:3", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3630:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 281, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3630:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "mutability": "mutable", + "name": "mrEnclaves", + "nameLocation": "3674:10:3", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3655:29:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 283, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3655:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 284, + "nodeType": "ArrayTypeName", + "src": "3655:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "mutability": "mutable", + "name": "oracles", + "nameLocation": "3720:7:3", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "3694:33:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct Structs.Oracle[]" + }, + "typeName": { + "baseType": { + "id": 287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 286, + "name": "Structs.Oracle", + "nameLocations": [ + "3694:7:3", + "3702:6:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 565, + "src": "3694:14:3" + }, + "referencedDeclaration": 565, + "src": "3694:14:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Oracle_$565_storage_ptr", + "typeString": "struct Structs.Oracle" + } + }, + "id": 288, + "nodeType": "ArrayTypeName", + "src": "3694:16:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Oracle_$565_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Oracle[]" + } + }, + "visibility": "internal" + } + ], + "src": "3620:113:3" + }, + "returnParameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [], + "src": "3742:0:3" + }, + "scope": 310, + "src": "3598:145:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 293, + "nodeType": "StructuredDocumentation", + "src": "3749:71:3", + "text": " Get a queue\n @param queueId The queueId to get" + }, + "functionSelector": "dfdf8337", + "id": 301, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getQueue", + "nameLocation": "3834:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "3860:7:3", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "3852:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 294, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3852:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3842:31:3" + }, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 299, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "3897:20:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Queue_$549_memory_ptr", + "typeString": "struct Structs.Queue" + }, + "typeName": { + "id": 298, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 297, + "name": "Structs.Queue", + "nameLocations": [ + "3897:7:3", + "3905:5:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 549, + "src": "3897:13:3" + }, + "referencedDeclaration": 549, + "src": "3897:13:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Queue_$549_storage_ptr", + "typeString": "struct Structs.Queue" + } + }, + "visibility": "internal" + } + ], + "src": "3896:22:3" + }, + "scope": 310, + "src": "3825:94:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 302, + "nodeType": "StructuredDocumentation", + "src": "3925:87:3", + "text": " Get all queues\n @return The queues associated with the queueId" + }, + "functionSelector": "8581ed43", + "id": 309, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllQueues", + "nameLocation": "4026:12:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [], + "src": "4038:2:3" + }, + "returnParameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4064:22:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Queue_$549_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Structs.Queue[]" + }, + "typeName": { + "baseType": { + "id": 305, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 304, + "name": "Structs.Queue", + "nameLocations": [ + "4064:7:3", + "4072:5:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 549, + "src": "4064:13:3" + }, + "referencedDeclaration": 549, + "src": "4064:13:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Queue_$549_storage_ptr", + "typeString": "struct Structs.Queue" + } + }, + "id": 306, + "nodeType": "ArrayTypeName", + "src": "4064:15:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Queue_$549_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Queue[]" + } + }, + "visibility": "internal" + } + ], + "src": "4063:24:3" + }, + "scope": 310, + "src": "4017:71:3", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 311, + "src": "192:3898:3", + "usedErrors": [], + "usedEvents": [ + 175, + 193, + 199, + 205, + 211, + 215 + ] + } + ], + "src": "38:4053:3" + }, + "id": 3 + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol", + "exportedSymbols": { + "IRandomnessModule": [ + 382 + ], + "Structs": [ + 611 + ] + }, + "id": 383, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 312, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:4" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "file": "../structs/Structs.sol", + "id": 314, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 383, + "sourceUnit": 612, + "src": "71:47:4", + "symbolAliases": [ + { + "foreign": { + "id": 313, + "name": "Structs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "79:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IRandomnessModule", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 382, + "linearizedBaseContracts": [ + 382 + ], + "name": "IRandomnessModule", + "nameLocation": "204:17:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "deb1d8ca5ee647746e4f29578a7f4121ad5d92ea455dc171adf772f3acc38e51", + "id": 326, + "name": "RandomnessRequested", + "nameLocation": "234:19:4", + "nodeType": "EventDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 316, + "indexed": true, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "279:12:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "263:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 315, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "263:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 318, + "indexed": true, + "mutability": "mutable", + "name": "authority", + "nameLocation": "317:9:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "301:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "301:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "indexed": false, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "344:7:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "336:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 319, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "336:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 322, + "indexed": false, + "mutability": "mutable", + "name": "minSettlementDelay", + "nameLocation": "368:18:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "361:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 321, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "361:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "412:8:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "396:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "396:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "253:173:4" + }, + "src": "228:199:4" + }, + { + "anonymous": false, + "eventSelector": "6dee0e80f85f9bcda386ed5dd4af65b696a3743e5c6e6532cdf17996d9119def", + "id": 332, + "name": "RandomnessRerolled", + "nameLocation": "439:18:4", + "nodeType": "EventDefinition", + "parameters": { + "id": 331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 328, + "indexed": true, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "483:12:4", + "nodeType": "VariableDeclaration", + "scope": 332, + "src": "467:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 327, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "521:8:4", + "nodeType": "VariableDeclaration", + "scope": 332, + "src": "505:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 329, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "505:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "457:78:4" + }, + "src": "433:103:4" + }, + { + "documentation": { + "id": 333, + "nodeType": "StructuredDocumentation", + "src": "542:457:4", + "text": " Request randomness from Switchboard from an Oracle on the queue\n @param randomnessId The randomness id, which must be unique, is used to identify the randomness request\n @param authority The authority (contract or EOA) that is in charge of providing the randomness\n @param queueId The queue id that the randomness is associated with\n @param minSettlementDelay The minimum delay before the randomness can be settled" + }, + "functionSelector": "f4bc77f7", + "id": 344, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "requestRandomness", + "nameLocation": "1013:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 335, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "1048:12:4", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "1040:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 334, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1040:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 337, + "mutability": "mutable", + "name": "authority", + "nameLocation": "1078:9:4", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "1070:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1070:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "1105:7:4", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "1097:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 338, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1097:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "mutability": "mutable", + "name": "minSettlementDelay", + "nameLocation": "1129:18:4", + "nodeType": "VariableDeclaration", + "scope": 344, + "src": "1122:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 340, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1122:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "1030:123:4" + }, + "returnParameters": { + "id": 343, + "nodeType": "ParameterList", + "parameters": [], + "src": "1162:0:4" + }, + "scope": 382, + "src": "1004:159:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 345, + "nodeType": "StructuredDocumentation", + "src": "1169:527:4", + "text": " Request randomness from Switchboard from an Oracle on the queue\n @param randomnessId The randomness id, which must be unique, is used to identify the randomness request\n @param authority The authority (contract or EOA) that is in charge of providing the randomness\n @param queueId The queue id that the randomness is associated with\n @param minSettlementDelay The minimum delay before the randomness can be settled\n @param oracleId The oracle id that must respond to the request" + }, + "functionSelector": "c7008391", + "id": 358, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "requestRandomness", + "nameLocation": "1710:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "1745:12:4", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "1737:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 346, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1737:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 349, + "mutability": "mutable", + "name": "authority", + "nameLocation": "1775:9:4", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "1767:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1767:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "1802:7:4", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "1794:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1794:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 353, + "mutability": "mutable", + "name": "minSettlementDelay", + "nameLocation": "1826:18:4", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "1819:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 352, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1819:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 355, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "1862:8:4", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "1854:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 354, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1854:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1727:149:4" + }, + "returnParameters": { + "id": 357, + "nodeType": "ParameterList", + "parameters": [], + "src": "1885:0:4" + }, + "scope": 382, + "src": "1701:185:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 359, + "nodeType": "StructuredDocumentation", + "src": "1892:208:4", + "text": " Reroll randomness (to reuse existing randomness objects for new randomness requests)\n @dev caller must be the authority for the randomness\n @param randomnessId The randomness id" + }, + "functionSelector": "aa55d1c9", + "id": 364, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "rerollRandomness", + "nameLocation": "2114:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 361, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "2139:12:4", + "nodeType": "VariableDeclaration", + "scope": 364, + "src": "2131:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 360, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2131:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2130:22:4" + }, + "returnParameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [], + "src": "2161:0:4" + }, + "scope": 382, + "src": "2105:57:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 365, + "nodeType": "StructuredDocumentation", + "src": "2168:284:4", + "text": " Reroll randomness (to reuse existing randomness objects for new randomness requests)\n @dev caller must be the authority for the randomness\n @param randomnessId The randomness id\n @param oracleId The oracle id to specifically reroll randomness from" + }, + "functionSelector": "2caddcb7", + "id": 372, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "rerollRandomness", + "nameLocation": "2466:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 367, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "2491:12:4", + "nodeType": "VariableDeclaration", + "scope": 372, + "src": "2483:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 366, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2483:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 369, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "2513:8:4", + "nodeType": "VariableDeclaration", + "scope": 372, + "src": "2505:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 368, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2505:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2482:40:4" + }, + "returnParameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [], + "src": "2531:0:4" + }, + "scope": 382, + "src": "2457:75:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 373, + "nodeType": "StructuredDocumentation", + "src": "2538:132:4", + "text": " Get randomness by id\n @param randomnessId The randomness id\n @return randomness The randomness object" + }, + "functionSelector": "05b19402", + "id": 381, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRandomness", + "nameLocation": "2684:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 375, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "2715:12:4", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2707:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 374, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2707:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2697:36:4" + }, + "returnParameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 379, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2757:25:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Randomness_$594_memory_ptr", + "typeString": "struct Structs.Randomness" + }, + "typeName": { + "id": 378, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 377, + "name": "Structs.Randomness", + "nameLocations": [ + "2757:7:4", + "2765:10:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 594, + "src": "2757:18:4" + }, + "referencedDeclaration": 594, + "src": "2757:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Randomness_$594_storage_ptr", + "typeString": "struct Structs.Randomness" + } + }, + "visibility": "internal" + } + ], + "src": "2756:27:4" + }, + "scope": 382, + "src": "2675:109:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 383, + "src": "194:2592:4", + "usedErrors": [], + "usedEvents": [ + 326, + 332 + ] + } + ], + "src": "38:2749:4" + }, + "id": 4 + }, + "@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol", + "exportedSymbols": { + "ISwitchboardModule": [ + 455 + ], + "Structs": [ + 611 + ] + }, + "id": 456, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 384, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:5" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "file": "../structs/Structs.sol", + "id": 386, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 456, + "sourceUnit": 612, + "src": "71:47:5", + "symbolAliases": [ + { + "foreign": { + "id": 385, + "name": "Structs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "79:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ISwitchboardModule", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 455, + "linearizedBaseContracts": [ + 455 + ], + "name": "ISwitchboardModule", + "nameLocation": "200:18:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "244511a76b88bb957e79817ee08898b4fcb300e2304920ed949262f70e3ff07e", + "id": 396, + "name": "FeedUpdate", + "nameLocation": "231:10:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 388, + "indexed": true, + "mutability": "mutable", + "name": "feedId", + "nameLocation": "267:6:5", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "251:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 387, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "251:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 390, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "299:8:5", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "283:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 389, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "283:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 392, + "indexed": false, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "325:9:5", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "317:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "317:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 394, + "indexed": false, + "mutability": "mutable", + "name": "result", + "nameLocation": "351:6:5", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "344:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 393, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "344:6:5", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "src": "241:122:5" + }, + "src": "225:139:5" + }, + { + "anonymous": false, + "eventSelector": "c3d1d8f5a8f5342fb5c1e1c917dd013105b1ecf73e9eff2e0c814cbe6711d0b2", + "id": 404, + "name": "OracleAdded", + "nameLocation": "375:11:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 398, + "indexed": true, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "412:7:5", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "396:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 397, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "396:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 400, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "445:8:5", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "429:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 399, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "429:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 402, + "indexed": true, + "mutability": "mutable", + "name": "oracleAddress", + "nameLocation": "479:13:5", + "nodeType": "VariableDeclaration", + "scope": 404, + "src": "463:29:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 401, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "463:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "386:112:5" + }, + "src": "369:130:5" + }, + { + "anonymous": false, + "eventSelector": "1dcba8c430e6d3ae667b650331c67010ac3f46e3b2e8f2616b30d6865f3fa1ab", + "id": 410, + "name": "OracleRemoved", + "nameLocation": "510:13:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 406, + "indexed": true, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "540:7:5", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "524:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 405, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "524:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 408, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "565:8:5", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "549:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "549:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "523:51:5" + }, + "src": "504:71:5" + }, + { + "anonymous": false, + "eventSelector": "f079b7317340130906f44e285e9c68584017019d2257b83cb75e58d1097d9c02", + "id": 420, + "name": "RandomnessSettled", + "nameLocation": "586:17:5", + "nodeType": "EventDefinition", + "parameters": { + "id": 419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "indexed": true, + "mutability": "mutable", + "name": "randomnessId", + "nameLocation": "629:12:5", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "613:28:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 411, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "613:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "indexed": true, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "667:8:5", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "651:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 413, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "651:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "indexed": false, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "693:9:5", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "685:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "685:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 418, + "indexed": false, + "mutability": "mutable", + "name": "result", + "nameLocation": "720:6:5", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "712:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "712:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "603:129:5" + }, + "src": "580:153:5" + }, + { + "documentation": { + "id": 421, + "nodeType": "StructuredDocumentation", + "src": "739:543:5", + "text": " Get the latest Update struct for a feed\n @dev Intended to be called within the same transaction as a feed update for the most up-to-date data.\n @dev Reverts if the feed does not exist\n @dev Reverts if the feed does not have a valid update within queue (or aggregator's) tolerated delta\n @dev Reverts if the feed does not have the minimum number of valid responses\n @param feedId The identifier for the feed to get the latest update for\n @return Update The latest update for the given feed" + }, + "functionSelector": "f0f0fce9", + "id": 429, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "latestUpdate", + "nameLocation": "1296:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "mutability": "mutable", + "name": "feedId", + "nameLocation": "1326:6:5", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "1318:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1318:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1308:30:5" + }, + "returnParameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 427, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "1362:21:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_memory_ptr", + "typeString": "struct Structs.Update" + }, + "typeName": { + "id": 426, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 425, + "name": "Structs.Update", + "nameLocations": [ + "1362:7:5", + "1370:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 465, + "src": "1362:14:5" + }, + "referencedDeclaration": 465, + "src": "1362:14:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_storage_ptr", + "typeString": "struct Structs.Update" + } + }, + "visibility": "internal" + } + ], + "src": "1361:23:5" + }, + "scope": 455, + "src": "1287:98:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 430, + "nodeType": "StructuredDocumentation", + "src": "1391:220:5", + "text": " Calculate\n @param aggregatorId The feed identifier to calculate the current result for\n @return CurrentResult The current result for the given feed, a struct containing stats and the result" + }, + "functionSelector": "8d9281dd", + "id": 438, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "findCurrentResult", + "nameLocation": "1625:17:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 432, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "1660:12:5", + "nodeType": "VariableDeclaration", + "scope": 438, + "src": "1652:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1652:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1642:36:5" + }, + "returnParameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 436, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 438, + "src": "1702:28:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CurrentResult_$483_memory_ptr", + "typeString": "struct Structs.CurrentResult" + }, + "typeName": { + "id": 435, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 434, + "name": "Structs.CurrentResult", + "nameLocations": [ + "1702:7:5", + "1710:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 483, + "src": "1702:21:5" + }, + "referencedDeclaration": 483, + "src": "1702:21:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CurrentResult_$483_storage_ptr", + "typeString": "struct Structs.CurrentResult" + } + }, + "visibility": "internal" + } + ], + "src": "1701:30:5" + }, + "scope": 455, + "src": "1616:116:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 439, + "nodeType": "StructuredDocumentation", + "src": "1738:202:5", + "text": " Get the fee in wei for submitting a set of updates\n @param updates Encoded switchboard update(s) with signatures\n @return uint256 The fee in wei for submitting the updates" + }, + "functionSelector": "8a7d3fa6", + "id": 447, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFee", + "nameLocation": "1954:6:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 442, + "mutability": "mutable", + "name": "updates", + "nameLocation": "1978:7:5", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "1961:24:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 440, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1961:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 441, + "nodeType": "ArrayTypeName", + "src": "1961:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "1960:26:5" + }, + "returnParameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 445, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "2010:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2010:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2009:9:5" + }, + "scope": 455, + "src": "1945:74:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 448, + "nodeType": "StructuredDocumentation", + "src": "2025:363:5", + "text": " Update feeds with new oracle results\n @dev reverts if the queue's fee is not paid\n @dev reverts if the blockhash is invalid (i.e. the block is in the future)\n @dev reverts if the timestamp is out of valid range (optional flow for timestamp-sequenced updates)\n @param updates Encoded switchboard update(s) with signatures" + }, + "functionSelector": "bc36c0a9", + "id": 454, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateFeeds", + "nameLocation": "2402:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 451, + "mutability": "mutable", + "name": "updates", + "nameLocation": "2431:7:5", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "2414:24:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 449, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2414:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 450, + "nodeType": "ArrayTypeName", + "src": "2414:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "2413:26:5" + }, + "returnParameters": { + "id": 453, + "nodeType": "ParameterList", + "parameters": [], + "src": "2456:0:5" + }, + "scope": 455, + "src": "2393:64:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 456, + "src": "190:2269:5", + "usedErrors": [], + "usedEvents": [ + 396, + 404, + 410, + 420 + ] + } + ], + "src": "38:2422:5" + }, + "id": 5 + }, + "@switchboard-xyz/on-demand-solidity/structs/Structs.sol": { + "ast": { + "absolutePath": "@switchboard-xyz/on-demand-solidity/structs/Structs.sol", + "exportedSymbols": { + "Structs": [ + 611 + ] + }, + "id": 612, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 457, + "literals": [ + "solidity", + ">=", + "0.8", + ".0", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:31:6" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Structs", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 611, + "linearizedBaseContracts": [ + 611 + ], + "name": "Structs", + "nameLocation": "80:7:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Structs.Update", + "documentation": { + "id": 458, + "nodeType": "StructuredDocumentation", + "src": "94:187:6", + "text": " An update to a feed\n @param oracleId The publisher of the update\n @param result The result of the update\n @param timestamp The timestamp of the update" + }, + "id": 465, + "members": [ + { + "constant": false, + "id": 460, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "318:8:6", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "310:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 459, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "310:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "result", + "nameLocation": "343:6:6", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "336:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 461, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "336:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "367:9:6", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "359:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "359:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Update", + "nameLocation": "293:6:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "286:97:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.CurrentResult", + "documentation": { + "id": 466, + "nodeType": "StructuredDocumentation", + "src": "389:461:6", + "text": " The current result for a feed\n @param result The result of the feed\n @param minTimestamp The minimum timestamp of the feed\n @param maxTimestamp The maximum timestamp of the feed\n @param minResult The minimum result of the feed\n @param maxResult The maximum result of the feed\n @param stdev The standard deviation of the feed\n @param range The range of the feed\n @param mean The mean of the feed" + }, + "id": 483, + "members": [ + { + "constant": false, + "id": 468, + "mutability": "mutable", + "name": "result", + "nameLocation": "893:6:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "886:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 467, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "886:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "minTimestamp", + "nameLocation": "917:12:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "909:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "909:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 472, + "mutability": "mutable", + "name": "maxTimestamp", + "nameLocation": "947:12:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "939:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "939:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 474, + "mutability": "mutable", + "name": "minResult", + "nameLocation": "976:9:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "969:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 473, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "969:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 476, + "mutability": "mutable", + "name": "maxResult", + "nameLocation": "1002:9:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "995:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 475, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "995:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 478, + "mutability": "mutable", + "name": "stdev", + "nameLocation": "1028:5:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "1021:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 477, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "1021:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "range", + "nameLocation": "1050:5:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "1043:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 479, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "1043:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "mean", + "nameLocation": "1072:4:6", + "nodeType": "VariableDeclaration", + "scope": 483, + "src": "1065:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 481, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "1065:6:6", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "name": "CurrentResult", + "nameLocation": "862:13:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "855:228:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Results", + "documentation": { + "id": 484, + "nodeType": "StructuredDocumentation", + "src": "1089:124:6", + "text": " Results for a feed\n @param idx The index of the feed\n @param updates The updates for the feed" + }, + "id": 491, + "members": [ + { + "constant": false, + "id": 486, + "mutability": "mutable", + "name": "idx", + "nameLocation": "1251:3:6", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "1243:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1243:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 490, + "mutability": "mutable", + "name": "updates", + "nameLocation": "1273:7:6", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "1264:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[]" + }, + "typeName": { + "baseType": { + "id": 488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 487, + "name": "Update", + "nameLocations": [ + "1264:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 465, + "src": "1264:6:6" + }, + "referencedDeclaration": 465, + "src": "1264:6:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_storage_ptr", + "typeString": "struct Structs.Update" + } + }, + "id": 489, + "nodeType": "ArrayTypeName", + "src": "1264:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Update_$465_storage_$dyn_storage_ptr", + "typeString": "struct Structs.Update[]" + } + }, + "visibility": "internal" + } + ], + "name": "Results", + "nameLocation": "1225:7:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "1218:69:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Aggregator", + "documentation": { + "id": 492, + "nodeType": "StructuredDocumentation", + "src": "1293:991:6", + "text": " An abstraction over feed allowing for UI to display the feed in a more human readable way and reconfiguration of sources.\n Reading from this struct should be atomic (same tx as the write).\n @param aggregatorId The aggregator id\n @param authority The authority of the feed\n @param name The name of the feed\n @param queueId The queue id associated with the feed\n @param toleratedDelta The maximum blocks staleness\n @param cid The content id (IPFS cid for example) for the feed\n @param feedHash The feed associated with the aggregator\n @param createdAt The time the feed was created\n @param maxVariance The maximum variance allowed for a feed result\n @param minResponses The minimum number of responses required for a valid feed result\n @param minSamples The minimum number of samples to take for a feed result\n @param maxStaleness The maximum number of seconds staleness for an update to be valid" + }, + "id": 517, + "members": [ + { + "constant": false, + "id": 494, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "2325:12:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2317:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 493, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "authority", + "nameLocation": "2355:9:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2347:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2347:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 498, + "mutability": "mutable", + "name": "name", + "nameLocation": "2381:4:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2374:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 497, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2374:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "2403:7:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2395:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 499, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2395:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 502, + "mutability": "mutable", + "name": "toleratedDelta", + "nameLocation": "2428:14:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2420:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2420:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "mutability": "mutable", + "name": "cid", + "nameLocation": "2460:3:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2452:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2452:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "mutability": "mutable", + "name": "feedHash", + "nameLocation": "2481:8:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2473:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 505, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2473:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2507:9:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2499:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2499:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "mutability": "mutable", + "name": "maxVariance", + "nameLocation": "2533:11:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2526:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 509, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2526:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "mutability": "mutable", + "name": "minResponses", + "nameLocation": "2561:12:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2554:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 511, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2554:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "mutability": "mutable", + "name": "minSamples", + "nameLocation": "2589:10:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2583:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 513, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2583:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 516, + "mutability": "mutable", + "name": "maxStaleness", + "nameLocation": "2617:12:6", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "2609:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 515, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2609:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Aggregator", + "nameLocation": "2296:10:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "2289:347:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Queue", + "documentation": { + "id": 518, + "nodeType": "StructuredDocumentation", + "src": "2642:1060:6", + "text": " Queue / Switchboard Subnet\n @param queueId The queue id\n @param authority The authority of the queue\n @param name The name of the queue\n @param fee The fee required to submit an update to the queue\n @param feeRecipient The recipient of the fee (OPTIONAL - if unset the oracle is the recipient)\n @param minAttestations size * (1 / minAttestations) + 1 is the minimum number of oracles required to attest to a registration\n @param toleratedTimestampDelta The default maximum staleness for a valid feed result\n @param resultsMaxSize The maximum size of the results array\n @param oracleValidityLength The length of time an oracle is valid for\n @param mrEnclaves The enclave measurements allowed by the queue\n @param oracles The oracles associated with the queue\n @param toleratedBlocksStaleness The number of blocks a timestamp is allowed to be stale\n @param lastQueueOverride The last time the queue was overridden\n @param guardianQueueId The guardian queue id" + }, + "id": 549, + "members": [ + { + "constant": false, + "id": 520, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "3738:7:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3730:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 519, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3730:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "authority", + "nameLocation": "3763:9:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3755:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3755:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "mutability": "mutable", + "name": "name", + "nameLocation": "3789:4:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3782:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 523, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3782:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 526, + "mutability": "mutable", + "name": "fee", + "nameLocation": "3811:3:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3803:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3803:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 528, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "3832:12:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3824:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3824:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "mutability": "mutable", + "name": "minAttestations", + "nameLocation": "3861:15:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3854:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 529, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3854:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 532, + "mutability": "mutable", + "name": "toleratedTimestampDelta", + "nameLocation": "3894:23:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3886:31:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3886:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 534, + "mutability": "mutable", + "name": "resultsMaxSize", + "nameLocation": "3933:14:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3927:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 533, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3927:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 536, + "mutability": "mutable", + "name": "oracleValidityLength", + "nameLocation": "3965:20:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3957:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3957:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 539, + "mutability": "mutable", + "name": "mrEnclaves", + "nameLocation": "4005:10:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "3995:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3995:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 538, + "nodeType": "ArrayTypeName", + "src": "3995:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "oracles", + "nameLocation": "4035:7:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "4025:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 540, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4025:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 541, + "nodeType": "ArrayTypeName", + "src": "4025:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "toleratedBlocksStaleness", + "nameLocation": "4060:24:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "4052:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4052:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "lastQueueOverride", + "nameLocation": "4102:17:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "4094:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4094:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "guardianQueueId", + "nameLocation": "4137:15:6", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "4129:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 547, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4129:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Queue", + "nameLocation": "3714:5:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "3707:452:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Oracle", + "documentation": { + "id": 550, + "nodeType": "StructuredDocumentation", + "src": "4165:453:6", + "text": " Oracle - A more dense version of the oracle\n @param authority the oracle's enclave secp key\n @param owner the owner of the oracle\n @param oracleId the oracle's id (hexified pubkey from solana)\n @param queueId the queue that the oracle belongs to\n @param mrEnclave the oracle's enclave measurement\n @param expirationTime the time the oracle expires\n @param feesOwed the fees owed to the oracle" + }, + "id": 565, + "members": [ + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "authority", + "nameLocation": "4655:9:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4647:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4647:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4682:5:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4674:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4674:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 556, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "4705:8:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4697:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 555, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4697:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "4731:7:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4723:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 557, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4723:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "4756:9:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4748:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 559, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4748:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "mutability": "mutable", + "name": "expirationTime", + "nameLocation": "4783:14:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4775:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4775:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 564, + "mutability": "mutable", + "name": "feesOwed", + "nameLocation": "4815:8:6", + "nodeType": "VariableDeclaration", + "scope": 565, + "src": "4807:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4807:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Oracle", + "nameLocation": "4630:6:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "4623:207:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.OracleAttestation", + "documentation": { + "id": 566, + "nodeType": "StructuredDocumentation", + "src": "4836:166:6", + "text": " Pending Oracle Registration\n @param oracle The oracle to be registered\n @param attestingOracle The oracle attesting to the registration" + }, + "id": 577, + "members": [ + { + "constant": false, + "id": 568, + "mutability": "mutable", + "name": "oracleAuthority", + "nameLocation": "5050:15:6", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5042:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 567, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5042:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 570, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "5083:8:6", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5075:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 569, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5075:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 572, + "mutability": "mutable", + "name": "attestingOracle", + "nameLocation": "5109:15:6", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5101:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5101:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 574, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "5142:9:6", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5134:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5134:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 576, + "mutability": "mutable", + "name": "mrEnclave", + "nameLocation": "5169:9:6", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5161:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5161:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "OracleAttestation", + "nameLocation": "5014:17:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "5007:178:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Randomness", + "documentation": { + "id": 578, + "nodeType": "StructuredDocumentation", + "src": "5191:442:6", + "text": " Randomness - a message resolving randomness\n @param randId The randomness id\n @param queueId The queue id\n @param createdAt The time the randomness was created\n @param authority The authority of the randomness\n @param rollTimestamp The timestamp of the latest roll\n @param minSettlementDelay The minimum settlement delay seconds\n @param result The value of the randomness (uint256)" + }, + "id": 594, + "members": [ + { + "constant": false, + "id": 580, + "mutability": "mutable", + "name": "randId", + "nameLocation": "5674:6:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5666:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 579, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5666:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 582, + "mutability": "mutable", + "name": "queueId", + "nameLocation": "5698:7:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5690:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 581, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5690:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 584, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "5723:9:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5715:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5715:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 586, + "mutability": "mutable", + "name": "authority", + "nameLocation": "5750:9:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5742:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5742:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 588, + "mutability": "mutable", + "name": "rollTimestamp", + "nameLocation": "5777:13:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5769:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5769:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "minSettlementDelay", + "nameLocation": "5807:18:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5800:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 589, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5800:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "result", + "nameLocation": "5852:6:6", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "5835:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RandomnessResult_$604_storage_ptr", + "typeString": "struct Structs.RandomnessResult" + }, + "typeName": { + "id": 592, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 591, + "name": "RandomnessResult", + "nameLocations": [ + "5835:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 604, + "src": "5835:16:6" + }, + "referencedDeclaration": 604, + "src": "5835:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RandomnessResult_$604_storage_ptr", + "typeString": "struct Structs.RandomnessResult" + } + }, + "visibility": "internal" + } + ], + "name": "Randomness", + "nameLocation": "5645:10:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "5638:227:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.RandomnessResult", + "documentation": { + "id": 595, + "nodeType": "StructuredDocumentation", + "src": "5871:268:6", + "text": " Randomness Result\n @param oracleId The oracle id\n @param oracleAuthority The authority of the oracle that provided the randomness\n @param value The value of the randomness\n @param settledAt The time the randomness was settled" + }, + "id": 604, + "members": [ + { + "constant": false, + "id": 597, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "6186:8:6", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "6178:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 596, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6178:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 599, + "mutability": "mutable", + "name": "oracleAuthority", + "nameLocation": "6212:15:6", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "6204:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6204:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 601, + "mutability": "mutable", + "name": "value", + "nameLocation": "6245:5:6", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "6237:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6237:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 603, + "mutability": "mutable", + "name": "settledAt", + "nameLocation": "6268:9:6", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "6260:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6260:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "RandomnessResult", + "nameLocation": "6151:16:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "6144:140:6", + "visibility": "public" + }, + { + "canonicalName": "Structs.Attestations", + "documentation": { + "id": 605, + "nodeType": "StructuredDocumentation", + "src": "6290:83:6", + "text": " Attestations\n @param list The list of pending attestations" + }, + "id": 610, + "members": [ + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "list", + "nameLocation": "6428:4:6", + "nodeType": "VariableDeclaration", + "scope": 610, + "src": "6408:24:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OracleAttestation_$577_storage_$dyn_storage_ptr", + "typeString": "struct Structs.OracleAttestation[]" + }, + "typeName": { + "baseType": { + "id": 607, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 606, + "name": "OracleAttestation", + "nameLocations": [ + "6408:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 577, + "src": "6408:17:6" + }, + "referencedDeclaration": 577, + "src": "6408:17:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OracleAttestation_$577_storage_ptr", + "typeString": "struct Structs.OracleAttestation" + } + }, + "id": 608, + "nodeType": "ArrayTypeName", + "src": "6408:19:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_OracleAttestation_$577_storage_$dyn_storage_ptr", + "typeString": "struct Structs.OracleAttestation[]" + } + }, + "visibility": "internal" + } + ], + "name": "Attestations", + "nameLocation": "6385:12:6", + "nodeType": "StructDefinition", + "scope": 611, + "src": "6378:61:6", + "visibility": "public" + } + ], + "scope": 612, + "src": "71:6370:6", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "38:6404:6" + }, + "id": 6 + }, + "contracts/TemperatureFeed.sol": { + "ast": { + "absolutePath": "contracts/TemperatureFeed.sol", + "exportedSymbols": { + "ISwitchboard": [ + 22 + ], + "TemperatureFeed": [ + 707 + ] + }, + "id": 708, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 613, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "38:23:7" + }, + { + "absolutePath": "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol", + "file": "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol", + "id": 615, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 708, + "sourceUnit": 23, + "src": "63:82:7", + "symbolAliases": [ + { + "foreign": { + "id": 614, + "name": "ISwitchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "71:12:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "TemperatureFeed", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 707, + "linearizedBaseContracts": [ + 707 + ], + "name": "TemperatureFeed", + "nameLocation": "156:15:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 618, + "mutability": "mutable", + "name": "switchboard", + "nameLocation": "191:11:7", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "178:24:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + }, + "typeName": { + "id": 617, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 616, + "name": "ISwitchboard", + "nameLocations": [ + "178:12:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 22, + "src": "178:12:7" + }, + "referencedDeclaration": 22, + "src": "178:12:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "functionSelector": "5c40450c", + "id": 620, + "mutability": "mutable", + "name": "aggregatorId", + "nameLocation": "281:12:7", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "266:27:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 619, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "266:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "e800044c", + "id": 622, + "mutability": "mutable", + "name": "latestTemperature", + "nameLocation": "358:17:7", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "344:31:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 621, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "344:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "public" + }, + { + "errorSelector": "a458261b", + "id": 628, + "name": "InsufficientFee", + "nameLocation": "453:15:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 624, + "mutability": "mutable", + "name": "expected", + "nameLocation": "477:8:7", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "469:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "469:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 626, + "mutability": "mutable", + "name": "received", + "nameLocation": "495:8:7", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "487:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "487:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "468:36:7" + }, + "src": "447:58:7" + }, + { + "errorSelector": "f06752e9", + "id": 632, + "name": "InvalidResult", + "nameLocation": "583:13:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 630, + "mutability": "mutable", + "name": "result", + "nameLocation": "604:6:7", + "nodeType": "VariableDeclaration", + "scope": 632, + "src": "597:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 629, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "597:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "src": "596:15:7" + }, + "src": "577:35:7" + }, + { + "anonymous": false, + "eventSelector": "eae3a8ceb0a2895368d0a619e49a705fc9957c7617876b58566df6468cdb33a8", + "id": 636, + "name": "FeedData", + "nameLocation": "723:8:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 634, + "indexed": false, + "mutability": "mutable", + "name": "temperature", + "nameLocation": "739:11:7", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "732:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 633, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "732:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "src": "731:20:7" + }, + "src": "717:35:7" + }, + { + "body": { + "id": 654, + "nodeType": "Block", + "src": "969:250:7", + "statements": [ + { + "expression": { + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 644, + "name": "switchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "1134:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 646, + "name": "_switchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "1161:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 645, + "name": "ISwitchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "1148:12:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwitchboard_$22_$", + "typeString": "type(contract ISwitchboard)" + } + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1148:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "src": "1134:40:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "id": 649, + "nodeType": "ExpressionStatement", + "src": "1134:40:7" + }, + { + "expression": { + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 650, + "name": "aggregatorId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1184:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 651, + "name": "_aggregatorId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "1199:13:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1184:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 653, + "nodeType": "ExpressionStatement", + "src": "1184:28:7" + } + ] + }, + "documentation": { + "id": 637, + "nodeType": "StructuredDocumentation", + "src": "758:149:7", + "text": " @param _switchboard The address of the Switchboard contract\n @param _aggregatorId The feed ID for the feed you want to query" + }, + "id": 655, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 639, + "mutability": "mutable", + "name": "_switchboard", + "nameLocation": "932:12:7", + "nodeType": "VariableDeclaration", + "scope": 655, + "src": "924:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "924:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 641, + "mutability": "mutable", + "name": "_aggregatorId", + "nameLocation": "954:13:7", + "nodeType": "VariableDeclaration", + "scope": 655, + "src": "946:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 640, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "946:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "923:45:7" + }, + "returnParameters": { + "id": 643, + "nodeType": "ParameterList", + "parameters": [], + "src": "969:0:7" + }, + "scope": 707, + "src": "912:307:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 705, + "nodeType": "Block", + "src": "1642:836:7", + "statements": [ + { + "assignments": [ + 663 + ], + "declarations": [ + { + "constant": false, + "id": 663, + "mutability": "mutable", + "name": "fee", + "nameLocation": "1765:3:7", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "1757:11:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1757:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 668, + "initialValue": { + "arguments": [ + { + "id": 666, + "name": "updates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "1790:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 664, + "name": "switchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "1771:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "id": 665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1783:6:7", + "memberName": "getFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 447, + "src": "1771:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory[] memory) view external returns (uint256)" + } + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1771:27:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1757:41:7" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 669, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1812:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1816:5:7", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "1812:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 671, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1824:3:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1812:15:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 680, + "nodeType": "IfStatement", + "src": "1808:84:7", + "trueBody": { + "id": 679, + "nodeType": "Block", + "src": "1829:63:7", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 674, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1866:3:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 675, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1871:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1875:5:7", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "1871:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 673, + "name": "InsufficientFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "1850:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1850:31:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 678, + "nodeType": "RevertStatement", + "src": "1843:38:7" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 686, + "name": "updates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "1996:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 681, + "name": "switchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "1960:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1972:11:7", + "memberName": "updateFeeds", + "nodeType": "MemberAccess", + "referencedDeclaration": 454, + "src": "1960:23:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 684, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "1991:3:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1960:35:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$value", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1960:44:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 688, + "nodeType": "ExpressionStatement", + "src": "1960:44:7" + }, + { + "assignments": [ + 690 + ], + "declarations": [ + { + "constant": false, + "id": 690, + "mutability": "mutable", + "name": "result", + "nameLocation": "2300:6:7", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "2293:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 689, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "2293:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "id": 696, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 693, + "name": "aggregatorId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "2334:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 691, + "name": "switchboard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2309:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwitchboard_$22", + "typeString": "contract ISwitchboard" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2321:12:7", + "memberName": "latestUpdate", + "nodeType": "MemberAccess", + "referencedDeclaration": 429, + "src": "2309:24:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Update_$465_memory_ptr_$", + "typeString": "function (bytes32) view external returns (struct Structs.Update memory)" + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2309:38:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Update_$465_memory_ptr", + "typeString": "struct Structs.Update memory" + } + }, + "id": 695, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2348:6:7", + "memberName": "result", + "nodeType": "MemberAccess", + "referencedDeclaration": 462, + "src": "2309:45:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2293:61:7" + }, + { + "expression": { + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 697, + "name": "latestTemperature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "2365:17:7", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 698, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 690, + "src": "2385:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "src": "2365:26:7", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 700, + "nodeType": "ExpressionStatement", + "src": "2365:26:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 702, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 690, + "src": "2464:6:7", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + ], + "id": 701, + "name": "FeedData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "2455:8:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_int128_$returns$__$", + "typeString": "function (int128)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2455:16:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 704, + "nodeType": "EmitStatement", + "src": "2450:21:7" + } + ] + }, + "documentation": { + "id": 656, + "nodeType": "StructuredDocumentation", + "src": "1225:350:7", + "text": " getFeedData is a function that uses an encoded Switchboard update\n If the update is successful, it will read the latest temperature from the feed\n See below for fetching encoded updates (e.g., using the Switchboard Typescript SDK)\n @param updates Encoded feed updates to update the contract with the latest result" + }, + "functionSelector": "4115ea08", + "id": 706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFeedData", + "nameLocation": "1589:11:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "mutability": "mutable", + "name": "updates", + "nameLocation": "1618:7:7", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "1601:24:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 657, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1601:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 658, + "nodeType": "ArrayTypeName", + "src": "1601:7:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "1600:26:7" + }, + "returnParameters": { + "id": 661, + "nodeType": "ParameterList", + "parameters": [], + "src": "1642:0:7" + }, + "scope": 707, + "src": "1580:898:7", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 708, + "src": "147:2333:7", + "usedErrors": [ + 628, + 632 + ], + "usedEvents": [ + 636 + ] + } + ], + "src": "38:2443:7" + }, + "id": 7 + } + }, + "contracts": { + "@switchboard-xyz/on-demand-solidity/ISwitchboard.sol": { + "ISwitchboard": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "AggregatorAuthoritySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + } + ], + "name": "AggregatorConfigured", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "AggregatorCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int128", + "name": "result", + "type": "int128" + } + ], + "name": "FeedUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oracleAddress", + "type": "address" + } + ], + "name": "OracleAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "OracleRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "QueueAuthoritySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "minAttestations", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + } + ], + "name": "QueueConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "QueueCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "QueueMrEnclaveAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "QueueMrEnclaveRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "QueueOraclesOverridden", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "RandomnessRequested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "RandomnessRerolled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "result", + "type": "uint256" + } + ], + "name": "RandomnessSettled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "addQueueMrEnclave", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator", + "name": "aggregator", + "type": "tuple" + } + ], + "name": "createAggregator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue", + "name": "queue", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "oracles", + "type": "tuple[]" + } + ], + "name": "createQueue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + } + ], + "name": "findCurrentResult", + "outputs": [ + { + "components": [ + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "minTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxTimestamp", + "type": "uint256" + }, + { + "internalType": "int128", + "name": "minResult", + "type": "int128" + }, + { + "internalType": "int128", + "name": "maxResult", + "type": "int128" + }, + { + "internalType": "int128", + "name": "stdev", + "type": "int128" + }, + { + "internalType": "int128", + "name": "range", + "type": "int128" + }, + { + "internalType": "int128", + "name": "mean", + "type": "int128" + } + ], + "internalType": "struct Structs.CurrentResult", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + } + ], + "name": "getAggregator", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + } + ], + "name": "getAggregatorResults", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllAggregators", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[][]", + "name": "", + "type": "tuple[][]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getAllOracles", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllQueues", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "updates", + "type": "bytes[]" + } + ], + "name": "getFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "getOracle", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oracleAddress", + "type": "address" + } + ], + "name": "getOracleByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getQueue", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getQueueMrEnclaves", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + } + ], + "name": "getRandomness", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "randId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rollTimestamp", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oracleAuthority", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "settledAt", + "type": "uint256" + } + ], + "internalType": "struct Structs.RandomnessResult", + "name": "result", + "type": "tuple" + } + ], + "internalType": "struct Structs.Randomness", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + } + ], + "name": "latestUpdate", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "oracles", + "type": "tuple[]" + } + ], + "name": "queueOverride", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "removeQueueMrEnclave", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "requestRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + } + ], + "name": "requestRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "rerollRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + } + ], + "name": "rerollRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "setAggregatorAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "name": "setAggregatorConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "setQueueAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "minAttestations", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + } + ], + "name": "setQueueConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "updates", + "type": "bytes[]" + } + ], + "name": "updateFeeds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "addQueueMrEnclave(bytes32,bytes32)": "8eb03f85", + "createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))": "213de480", + "createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])": "56ac2b43", + "findCurrentResult(bytes32)": "8d9281dd", + "getAggregator(bytes32)": "331b1816", + "getAggregatorResults(bytes32)": "5d89a447", + "getAllAggregators()": "465c65dd", + "getAllOracles(bytes32)": "a49c63ed", + "getAllQueues()": "8581ed43", + "getFee(bytes[])": "8a7d3fa6", + "getOracle(bytes32,bytes32)": "e7e9e1cc", + "getOracleByAddress(bytes32,address)": "ae91c162", + "getQueue(bytes32)": "dfdf8337", + "getQueueMrEnclaves(bytes32)": "6111a9c6", + "getRandomness(bytes32)": "05b19402", + "latestUpdate(bytes32)": "f0f0fce9", + "queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])": "bbd32aea", + "removeQueueMrEnclave(bytes32,bytes32)": "05b5f429", + "requestRandomness(bytes32,address,bytes32,uint64)": "f4bc77f7", + "requestRandomness(bytes32,address,bytes32,uint64,bytes32)": "c7008391", + "rerollRandomness(bytes32)": "aa55d1c9", + "rerollRandomness(bytes32,bytes32)": "2caddcb7", + "setAggregatorAuthority(bytes32,address)": "2ef98541", + "setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)": "63c339d8", + "setQueueAuthority(bytes32,address)": "263d4ced", + "setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)": "8b798dca", + "updateFeeds(bytes[])": "bc36c0a9" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AggregatorAuthoritySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"}],\"name\":\"AggregatorConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AggregatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"}],\"name\":\"FeedUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleAddress\",\"type\":\"address\"}],\"name\":\"OracleAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"OracleRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"QueueAuthoritySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"minAttestations\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"}],\"name\":\"QueueConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"QueueCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"QueueMrEnclaveAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"QueueMrEnclaveRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"QueueOraclesOverridden\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"RandomnessRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"RandomnessRerolled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"name\":\"RandomnessSettled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"addQueueMrEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator\",\"name\":\"aggregator\",\"type\":\"tuple\"}],\"name\":\"createAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue\",\"name\":\"queue\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"oracles\",\"type\":\"tuple[]\"}],\"name\":\"createQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"}],\"name\":\"findCurrentResult\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"minTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"minResult\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"maxResult\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"stdev\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"range\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"mean\",\"type\":\"int128\"}],\"internalType\":\"struct Structs.CurrentResult\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"}],\"name\":\"getAggregator\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"name\":\"getAggregatorResults\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAggregators\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getAllOracles\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllQueues\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"updates\",\"type\":\"bytes[]\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"getOracle\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"oracleAddress\",\"type\":\"address\"}],\"name\":\"getOracleByAddress\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getQueue\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getQueueMrEnclaves\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"}],\"name\":\"getRandomness\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"randId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rollTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"oracleAuthority\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settledAt\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.RandomnessResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"internalType\":\"struct Structs.Randomness\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"name\":\"latestUpdate\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"oracles\",\"type\":\"tuple[]\"}],\"name\":\"queueOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"removeQueueMrEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"requestRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"}],\"name\":\"requestRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"rerollRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"}],\"name\":\"rerollRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"setAggregatorAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"name\":\"setAggregatorConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"setQueueAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"minAttestations\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"}],\"name\":\"setQueueConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"updates\",\"type\":\"bytes[]\"}],\"name\":\"updateFeeds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addQueueMrEnclave(bytes32,bytes32)\":{\"details\":\"Only the authority of the queue can set the mrEnclave\",\"params\":{\"mrEnclave\":\"The mrEnclave to set for the queue\",\"queueId\":\"The queueId to set the mrEnclave for\"}},\"createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))\":{\"params\":{\"aggregator\":\"The aggregator to create\"}},\"createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"params\":{\"oracles\":\"The initial set of oracles associated with the queue\",\"queue\":\"The queue to create\"}},\"findCurrentResult(bytes32)\":{\"params\":{\"aggregatorId\":\"The feed identifier to calculate the current result for\"},\"returns\":{\"_0\":\"CurrentResult The current result for the given feed, a struct containing stats and the result\"}},\"getAggregator(bytes32)\":{\"params\":{\"aggregatorId\":\"The aggregatorId to get\"}},\"getAggregatorResults(bytes32)\":{\"params\":{\"feedId\":\"The feedId to get the results for\"},\"returns\":{\"_0\":\"The results for the feed\"}},\"getAllOracles(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get the oracles for\"},\"returns\":{\"_0\":\"The oracles associated with the queue\"}},\"getAllQueues()\":{\"returns\":{\"_0\":\"The queues associated with the queueId\"}},\"getFee(bytes[])\":{\"params\":{\"updates\":\"Encoded switchboard update(s) with signatures\"},\"returns\":{\"_0\":\"uint256 The fee in wei for submitting the updates\"}},\"getOracle(bytes32,bytes32)\":{\"params\":{\"oracleId\":\"The oracleId corresponding to the oracle\",\"queueId\":\"The queueId associated with the oracle\"},\"returns\":{\"_0\":\"The oracle associated with the queueId and oracleId\"}},\"getOracleByAddress(bytes32,address)\":{\"params\":{\"oracleAddress\":\"the address of the oracle\",\"queueId\":\"the queue\"},\"returns\":{\"_0\":\"oracleAddress the oracle associated with the address\"}},\"getQueue(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get\"}},\"getQueueMrEnclaves(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get the mrEnclaves for\"},\"returns\":{\"_0\":\"The mrEnclaves associated with the queue\"}},\"getRandomness(bytes32)\":{\"params\":{\"randomnessId\":\"The randomness id\"},\"returns\":{\"_0\":\"randomness The randomness object\"}},\"latestUpdate(bytes32)\":{\"details\":\"Intended to be called within the same transaction as a feed update for the most up-to-date data.Reverts if the feed does not existReverts if the feed does not have a valid update within queue (or aggregator's) tolerated deltaReverts if the feed does not have the minimum number of valid responses\",\"params\":{\"feedId\":\"The identifier for the feed to get the latest update for\"},\"returns\":{\"_0\":\"Update The latest update for the given feed\"}},\"queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"details\":\"Should only be dao controlled\",\"params\":{\"oracles\":\"The oracles to set for the queue\",\"queueId\":\"The queueId to set the oracles for\"}},\"removeQueueMrEnclave(bytes32,bytes32)\":{\"details\":\"Only the authority of the queue can remove the mrEnclave\",\"params\":{\"mrEnclave\":\"The mrEnclave to remove\",\"queueId\":\"The queueId to remove the mrEnclave from\"}},\"requestRandomness(bytes32,address,bytes32,uint64)\":{\"params\":{\"authority\":\"The authority (contract or EOA) that is in charge of providing the randomness\",\"minSettlementDelay\":\"The minimum delay before the randomness can be settled\",\"queueId\":\"The queue id that the randomness is associated with\",\"randomnessId\":\"The randomness id, which must be unique, is used to identify the randomness request\"}},\"requestRandomness(bytes32,address,bytes32,uint64,bytes32)\":{\"params\":{\"authority\":\"The authority (contract or EOA) that is in charge of providing the randomness\",\"minSettlementDelay\":\"The minimum delay before the randomness can be settled\",\"oracleId\":\"The oracle id that must respond to the request\",\"queueId\":\"The queue id that the randomness is associated with\",\"randomnessId\":\"The randomness id, which must be unique, is used to identify the randomness request\"}},\"rerollRandomness(bytes32)\":{\"details\":\"caller must be the authority for the randomness\",\"params\":{\"randomnessId\":\"The randomness id\"}},\"rerollRandomness(bytes32,bytes32)\":{\"details\":\"caller must be the authority for the randomness\",\"params\":{\"oracleId\":\"The oracle id to specifically reroll randomness from\",\"randomnessId\":\"The randomness id\"}},\"setAggregatorAuthority(bytes32,address)\":{\"details\":\"Only the authority of the aggregator can set a new authority\",\"params\":{\"aggregatorId\":\"The aggregatorId to set the authority for\",\"authority\":\"The new authority to set for the aggregator\"}},\"setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)\":{\"details\":\"Only the authority of the aggregator can set the config\",\"params\":{\"aggregatorId\":\"The aggregatorId to set the config for\",\"cid\":\"The content id (IPFS cid for example) for the feed\",\"feedId\":\"The feedId associated with the aggregator\",\"maxStaleness\":\"The maximum number of seconds staleness for an update to be valid\",\"maxVariance\":\"The maximum variance allowed for a feed result\",\"minResponses\":\"The minimum number of responses required for a valid feed result\",\"minSamples\":\"The minimum number of samples to take for a feed result\",\"name\":\"The name of the aggregator\",\"toleratedDelta\":\"The maximum staleness blocks for a valid feed result (or seconds if the queue has a time feed)\"}},\"setQueueAuthority(bytes32,address)\":{\"details\":\"Only the authority of the queue can set a new authority\",\"params\":{\"authority\":\"The new authority to set for the queue\",\"queueId\":\"The queueId to set the authority for\"}},\"setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)\":{\"details\":\"Only the authority of the queue can set the config\",\"params\":{\"fee\":\"fee required to submit an update to the queue\",\"minAttestations\":\"minimum number of attestations required for adding an oracle the queue\",\"name\":\"name of the queue\",\"oracleValidityLength\":\"length of time an oracle is valid for\",\"queueId\":\"the queueId to set the config for\",\"resultsMaxSize\":\"maximum size of the results array for feeds\",\"toleratedBlocksStaleness\":\"The number of blocks a timestamp is allowed to be stale\",\"toleratedTimestampDelta\":\"default maximum staleness blocks for a valid feed result\"}},\"updateFeeds(bytes[])\":{\"details\":\"reverts if the queue's fee is not paidreverts if the blockhash is invalid (i.e. the block is in the future)reverts if the timestamp is out of valid range (optional flow for timestamp-sequenced updates)\",\"params\":{\"updates\":\"Encoded switchboard update(s) with signatures\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addQueueMrEnclave(bytes32,bytes32)\":{\"notice\":\"Add an enclave measurement to a queue\"},\"createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))\":{\"notice\":\"Create a new aggregator\"},\"createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"notice\":\"Create a new queue\"},\"findCurrentResult(bytes32)\":{\"notice\":\"Calculate\"},\"getAggregator(bytes32)\":{\"notice\":\"The aggregator to fetch\"},\"getAggregatorResults(bytes32)\":{\"notice\":\"Get the results for a feed\"},\"getAllAggregators()\":{\"notice\":\"Get all aggregators\"},\"getAllOracles(bytes32)\":{\"notice\":\"Get all oracles associated with a queue\"},\"getAllQueues()\":{\"notice\":\"Get all queues\"},\"getFee(bytes[])\":{\"notice\":\"Get the fee in wei for submitting a set of updates\"},\"getOracle(bytes32,bytes32)\":{\"notice\":\"Get an oracle\"},\"getOracleByAddress(bytes32,address)\":{\"notice\":\"Get oracles associated with an address\"},\"getQueue(bytes32)\":{\"notice\":\"Get a queue\"},\"getQueueMrEnclaves(bytes32)\":{\"notice\":\"Get the mrEnclaves associated with a queue\"},\"getRandomness(bytes32)\":{\"notice\":\"Get randomness by id\"},\"latestUpdate(bytes32)\":{\"notice\":\"Get the latest Update struct for a feed\"},\"queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"notice\":\"Set the oracle queue manually (override the oracles array)\"},\"removeQueueMrEnclave(bytes32,bytes32)\":{\"notice\":\"Remove an enclave measurement from a queue\"},\"requestRandomness(bytes32,address,bytes32,uint64)\":{\"notice\":\"Request randomness from Switchboard from an Oracle on the queue\"},\"requestRandomness(bytes32,address,bytes32,uint64,bytes32)\":{\"notice\":\"Request randomness from Switchboard from an Oracle on the queue\"},\"rerollRandomness(bytes32)\":{\"notice\":\"Reroll randomness (to reuse existing randomness objects for new randomness requests)\"},\"rerollRandomness(bytes32,bytes32)\":{\"notice\":\"Reroll randomness (to reuse existing randomness objects for new randomness requests)\"},\"setAggregatorAuthority(bytes32,address)\":{\"notice\":\"Set the authority for an aggregator\"},\"setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)\":{\"notice\":\"Set the config for an aggregator\"},\"setQueueAuthority(bytes32,address)\":{\"notice\":\"Set the authority for a queue\"},\"setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)\":{\"notice\":\"Set the config for a queue\"},\"updateFeeds(bytes[])\":{\"notice\":\"Update feeds with new oracle results\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/ISwitchboard.sol\":\"ISwitchboard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/ISwitchboard.sol\":{\"keccak256\":\"0x917c1c895984e531a6941f84397abe8282bd43483491644886e208afe179a677\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2970229e842ce6965e65a60b30346329114682db8033c7f821f7b9ac44bdf07e\",\"dweb:/ipfs/QmVDKARNY7xr18Khz25E5jwSkoFhf4syJFSxKtkMTu5iDq\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol\":{\"keccak256\":\"0x680978b88274eddf6aa7c5a210e296b3d13bac7964e63cc0da2140007ba26882\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://277c1390cc387e254fd7c36cbb156c183d3bc17394a7015b09d605faeb301dfc\",\"dweb:/ipfs/QmWEg7uDz8JVgyyCxXWwTWj999j54nk7E9Gk4isqN7tgmb\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol\":{\"keccak256\":\"0xc958d6038bdbfd8d12661263db9bcb5788e156b743a8b3c9f8b7ea71d47217fe\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a1813ec94a6a160aa36b4a9a7fae3f522bcce59dc62ae846a024d02a034ebc7\",\"dweb:/ipfs/QmcDxsoYmUEpMfv6H56n71Qhx7hJCAJj81DvGXZzRUtbKK\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol\":{\"keccak256\":\"0x69d16e9924475e2d019ea5f10aa8496ab777dd749342a6d391c0b9a8296701d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ab057024f9c59570164511285a06e7a9f033563a3699de863a60c8a106808c65\",\"dweb:/ipfs/QmTz9Xv4Ykfzk67e6Wfy8v7CppWj8phkkdkmkAfsn9kQmx\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol\":{\"keccak256\":\"0xdb92bc4ecc7a23bf47558712cb61e99208c3dc68cfe30fcab15841c9e746371f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://853223c4b829e6516f6801d73bfb125e0dec3f4be7dafbfc707b95e581e92f45\",\"dweb:/ipfs/QmR1nB5Nv5y6nyJuAhqGkeKq3UfcGhAwu5kxAED7b6YBp4\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol\":{\"keccak256\":\"0xf3ade458a150d41b861500f326c5ea4f3ac2f3d408961b4cb0afc2eb9ef0fe90\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a4bb4b61d7ea45a7ac7d6b77cdfb18ba53933d47ecc2b515f90d0b2f81a82e6a\",\"dweb:/ipfs/QmQrF7DsAk7sqY28xxGngi3VXZY6AjSdVZDHAv2TwEqh9k\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol": { + "IAggregatorModule": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "AggregatorAuthoritySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + } + ], + "name": "AggregatorConfigured", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "AggregatorCreated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator", + "name": "aggregator", + "type": "tuple" + } + ], + "name": "createAggregator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + } + ], + "name": "getAggregator", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + } + ], + "name": "getAggregatorResults", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllAggregators", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "internalType": "struct Structs.Aggregator[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update[][]", + "name": "", + "type": "tuple[][]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "setAggregatorAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "toleratedDelta", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "cid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "maxVariance", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "minResponses", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "minSamples", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "maxStaleness", + "type": "uint256" + } + ], + "name": "setAggregatorConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))": "213de480", + "getAggregator(bytes32)": "331b1816", + "getAggregatorResults(bytes32)": "5d89a447", + "getAllAggregators()": "465c65dd", + "setAggregatorAuthority(bytes32,address)": "2ef98541", + "setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)": "63c339d8" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AggregatorAuthoritySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"}],\"name\":\"AggregatorConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"AggregatorCreated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator\",\"name\":\"aggregator\",\"type\":\"tuple\"}],\"name\":\"createAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"}],\"name\":\"getAggregator\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"name\":\"getAggregatorResults\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAggregators\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Aggregator[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"setAggregatorAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"toleratedDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"maxVariance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"minResponses\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"minSamples\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxStaleness\",\"type\":\"uint256\"}],\"name\":\"setAggregatorConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))\":{\"params\":{\"aggregator\":\"The aggregator to create\"}},\"getAggregator(bytes32)\":{\"params\":{\"aggregatorId\":\"The aggregatorId to get\"}},\"getAggregatorResults(bytes32)\":{\"params\":{\"feedId\":\"The feedId to get the results for\"},\"returns\":{\"_0\":\"The results for the feed\"}},\"setAggregatorAuthority(bytes32,address)\":{\"details\":\"Only the authority of the aggregator can set a new authority\",\"params\":{\"aggregatorId\":\"The aggregatorId to set the authority for\",\"authority\":\"The new authority to set for the aggregator\"}},\"setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)\":{\"details\":\"Only the authority of the aggregator can set the config\",\"params\":{\"aggregatorId\":\"The aggregatorId to set the config for\",\"cid\":\"The content id (IPFS cid for example) for the feed\",\"feedId\":\"The feedId associated with the aggregator\",\"maxStaleness\":\"The maximum number of seconds staleness for an update to be valid\",\"maxVariance\":\"The maximum variance allowed for a feed result\",\"minResponses\":\"The minimum number of responses required for a valid feed result\",\"minSamples\":\"The minimum number of samples to take for a feed result\",\"name\":\"The name of the aggregator\",\"toleratedDelta\":\"The maximum staleness blocks for a valid feed result (or seconds if the queue has a time feed)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAggregator((bytes32,address,string,bytes32,uint256,bytes32,bytes32,uint256,uint64,uint32,uint8,uint256))\":{\"notice\":\"Create a new aggregator\"},\"getAggregator(bytes32)\":{\"notice\":\"The aggregator to fetch\"},\"getAggregatorResults(bytes32)\":{\"notice\":\"Get the results for a feed\"},\"getAllAggregators()\":{\"notice\":\"Get all aggregators\"},\"setAggregatorAuthority(bytes32,address)\":{\"notice\":\"Set the authority for an aggregator\"},\"setAggregatorConfig(bytes32,string,uint256,bytes32,bytes32,uint64,uint32,uint8,uint256)\":{\"notice\":\"Set the config for an aggregator\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol\":\"IAggregatorModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol\":{\"keccak256\":\"0x680978b88274eddf6aa7c5a210e296b3d13bac7964e63cc0da2140007ba26882\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://277c1390cc387e254fd7c36cbb156c183d3bc17394a7015b09d605faeb301dfc\",\"dweb:/ipfs/QmWEg7uDz8JVgyyCxXWwTWj999j54nk7E9Gk4isqN7tgmb\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol": { + "IOracleModule": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getAllOracles", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "getOracle", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oracleAddress", + "type": "address" + } + ], + "name": "getOracleByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllOracles(bytes32)": "a49c63ed", + "getOracle(bytes32,bytes32)": "e7e9e1cc", + "getOracleByAddress(bytes32,address)": "ae91c162" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getAllOracles\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"getOracle\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"oracleAddress\",\"type\":\"address\"}],\"name\":\"getOracleByAddress\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getAllOracles(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get the oracles for\"},\"returns\":{\"_0\":\"The oracles associated with the queue\"}},\"getOracle(bytes32,bytes32)\":{\"params\":{\"oracleId\":\"The oracleId corresponding to the oracle\",\"queueId\":\"The queueId associated with the oracle\"},\"returns\":{\"_0\":\"The oracle associated with the queueId and oracleId\"}},\"getOracleByAddress(bytes32,address)\":{\"params\":{\"oracleAddress\":\"the address of the oracle\",\"queueId\":\"the queue\"},\"returns\":{\"_0\":\"oracleAddress the oracle associated with the address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllOracles(bytes32)\":{\"notice\":\"Get all oracles associated with a queue\"},\"getOracle(bytes32,bytes32)\":{\"notice\":\"Get an oracle\"},\"getOracleByAddress(bytes32,address)\":{\"notice\":\"Get oracles associated with an address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol\":\"IOracleModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol\":{\"keccak256\":\"0xc958d6038bdbfd8d12661263db9bcb5788e156b743a8b3c9f8b7ea71d47217fe\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a1813ec94a6a160aa36b4a9a7fae3f522bcce59dc62ae846a024d02a034ebc7\",\"dweb:/ipfs/QmcDxsoYmUEpMfv6H56n71Qhx7hJCAJj81DvGXZzRUtbKK\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol": { + "IQueueModule": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "QueueAuthoritySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "minAttestations", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + } + ], + "name": "QueueConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "QueueCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "QueueMrEnclaveAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "QueueMrEnclaveRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "QueueOraclesOverridden", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "addQueueMrEnclave", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue", + "name": "queue", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "oracles", + "type": "tuple[]" + } + ], + "name": "createQueue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllQueues", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getQueue", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "uint64", + "name": "minAttestations", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "oracles", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastQueueOverride", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "guardianQueueId", + "type": "bytes32" + } + ], + "internalType": "struct Structs.Queue", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + } + ], + "name": "getQueueMrEnclaves", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "mrEnclaves", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "expirationTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesOwed", + "type": "uint256" + } + ], + "internalType": "struct Structs.Oracle[]", + "name": "oracles", + "type": "tuple[]" + } + ], + "name": "queueOverride", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "mrEnclave", + "type": "bytes32" + } + ], + "name": "removeQueueMrEnclave", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + } + ], + "name": "setQueueAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "minAttestations", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "toleratedTimestampDelta", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "resultsMaxSize", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "oracleValidityLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toleratedBlocksStaleness", + "type": "uint256" + } + ], + "name": "setQueueConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "addQueueMrEnclave(bytes32,bytes32)": "8eb03f85", + "createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])": "56ac2b43", + "getAllQueues()": "8581ed43", + "getQueue(bytes32)": "dfdf8337", + "getQueueMrEnclaves(bytes32)": "6111a9c6", + "queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])": "bbd32aea", + "removeQueueMrEnclave(bytes32,bytes32)": "05b5f429", + "setQueueAuthority(bytes32,address)": "263d4ced", + "setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)": "8b798dca" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"QueueAuthoritySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"minAttestations\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"}],\"name\":\"QueueConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"QueueCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"QueueMrEnclaveAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"QueueMrEnclaveRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"QueueOraclesOverridden\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"addQueueMrEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue\",\"name\":\"queue\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"oracles\",\"type\":\"tuple[]\"}],\"name\":\"createQueue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllQueues\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getQueue\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"minAttestations\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"oracles\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastQueueOverride\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"guardianQueueId\",\"type\":\"bytes32\"}],\"internalType\":\"struct Structs.Queue\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"}],\"name\":\"getQueueMrEnclaves\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"mrEnclaves\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesOwed\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Oracle[]\",\"name\":\"oracles\",\"type\":\"tuple[]\"}],\"name\":\"queueOverride\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mrEnclave\",\"type\":\"bytes32\"}],\"name\":\"removeQueueMrEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"setQueueAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"minAttestations\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"toleratedTimestampDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"resultsMaxSize\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"oracleValidityLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toleratedBlocksStaleness\",\"type\":\"uint256\"}],\"name\":\"setQueueConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addQueueMrEnclave(bytes32,bytes32)\":{\"details\":\"Only the authority of the queue can set the mrEnclave\",\"params\":{\"mrEnclave\":\"The mrEnclave to set for the queue\",\"queueId\":\"The queueId to set the mrEnclave for\"}},\"createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"params\":{\"oracles\":\"The initial set of oracles associated with the queue\",\"queue\":\"The queue to create\"}},\"getAllQueues()\":{\"returns\":{\"_0\":\"The queues associated with the queueId\"}},\"getQueue(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get\"}},\"getQueueMrEnclaves(bytes32)\":{\"params\":{\"queueId\":\"The queueId to get the mrEnclaves for\"},\"returns\":{\"_0\":\"The mrEnclaves associated with the queue\"}},\"queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"details\":\"Should only be dao controlled\",\"params\":{\"oracles\":\"The oracles to set for the queue\",\"queueId\":\"The queueId to set the oracles for\"}},\"removeQueueMrEnclave(bytes32,bytes32)\":{\"details\":\"Only the authority of the queue can remove the mrEnclave\",\"params\":{\"mrEnclave\":\"The mrEnclave to remove\",\"queueId\":\"The queueId to remove the mrEnclave from\"}},\"setQueueAuthority(bytes32,address)\":{\"details\":\"Only the authority of the queue can set a new authority\",\"params\":{\"authority\":\"The new authority to set for the queue\",\"queueId\":\"The queueId to set the authority for\"}},\"setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)\":{\"details\":\"Only the authority of the queue can set the config\",\"params\":{\"fee\":\"fee required to submit an update to the queue\",\"minAttestations\":\"minimum number of attestations required for adding an oracle the queue\",\"name\":\"name of the queue\",\"oracleValidityLength\":\"length of time an oracle is valid for\",\"queueId\":\"the queueId to set the config for\",\"resultsMaxSize\":\"maximum size of the results array for feeds\",\"toleratedBlocksStaleness\":\"The number of blocks a timestamp is allowed to be stale\",\"toleratedTimestampDelta\":\"default maximum staleness blocks for a valid feed result\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addQueueMrEnclave(bytes32,bytes32)\":{\"notice\":\"Add an enclave measurement to a queue\"},\"createQueue((bytes32,address,string,uint256,address,uint64,uint256,uint8,uint256,bytes32[],bytes32[],uint256,uint256,bytes32),(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"notice\":\"Create a new queue\"},\"getAllQueues()\":{\"notice\":\"Get all queues\"},\"getQueue(bytes32)\":{\"notice\":\"Get a queue\"},\"getQueueMrEnclaves(bytes32)\":{\"notice\":\"Get the mrEnclaves associated with a queue\"},\"queueOverride(bytes32,bytes32[],(address,address,bytes32,bytes32,bytes32,uint256,uint256)[])\":{\"notice\":\"Set the oracle queue manually (override the oracles array)\"},\"removeQueueMrEnclave(bytes32,bytes32)\":{\"notice\":\"Remove an enclave measurement from a queue\"},\"setQueueAuthority(bytes32,address)\":{\"notice\":\"Set the authority for a queue\"},\"setQueueConfig(bytes32,string,uint256,uint8,uint256,uint8,uint256,uint256)\":{\"notice\":\"Set the config for a queue\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol\":\"IQueueModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol\":{\"keccak256\":\"0x69d16e9924475e2d019ea5f10aa8496ab777dd749342a6d391c0b9a8296701d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ab057024f9c59570164511285a06e7a9f033563a3699de863a60c8a106808c65\",\"dweb:/ipfs/QmTz9Xv4Ykfzk67e6Wfy8v7CppWj8phkkdkmkAfsn9kQmx\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol": { + "IRandomnessModule": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "RandomnessRequested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "RandomnessRerolled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + } + ], + "name": "getRandomness", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "randId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rollTimestamp", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oracleAuthority", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "settledAt", + "type": "uint256" + } + ], + "internalType": "struct Structs.RandomnessResult", + "name": "result", + "type": "tuple" + } + ], + "internalType": "struct Structs.Randomness", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "requestRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "authority", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "minSettlementDelay", + "type": "uint64" + } + ], + "name": "requestRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "rerollRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + } + ], + "name": "rerollRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRandomness(bytes32)": "05b19402", + "requestRandomness(bytes32,address,bytes32,uint64)": "f4bc77f7", + "requestRandomness(bytes32,address,bytes32,uint64,bytes32)": "c7008391", + "rerollRandomness(bytes32)": "aa55d1c9", + "rerollRandomness(bytes32,bytes32)": "2caddcb7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"RandomnessRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"RandomnessRerolled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"}],\"name\":\"getRandomness\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"randId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rollTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"oracleAuthority\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settledAt\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.RandomnessResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"internalType\":\"struct Structs.Randomness\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"requestRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minSettlementDelay\",\"type\":\"uint64\"}],\"name\":\"requestRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"rerollRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"}],\"name\":\"rerollRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRandomness(bytes32)\":{\"params\":{\"randomnessId\":\"The randomness id\"},\"returns\":{\"_0\":\"randomness The randomness object\"}},\"requestRandomness(bytes32,address,bytes32,uint64)\":{\"params\":{\"authority\":\"The authority (contract or EOA) that is in charge of providing the randomness\",\"minSettlementDelay\":\"The minimum delay before the randomness can be settled\",\"queueId\":\"The queue id that the randomness is associated with\",\"randomnessId\":\"The randomness id, which must be unique, is used to identify the randomness request\"}},\"requestRandomness(bytes32,address,bytes32,uint64,bytes32)\":{\"params\":{\"authority\":\"The authority (contract or EOA) that is in charge of providing the randomness\",\"minSettlementDelay\":\"The minimum delay before the randomness can be settled\",\"oracleId\":\"The oracle id that must respond to the request\",\"queueId\":\"The queue id that the randomness is associated with\",\"randomnessId\":\"The randomness id, which must be unique, is used to identify the randomness request\"}},\"rerollRandomness(bytes32)\":{\"details\":\"caller must be the authority for the randomness\",\"params\":{\"randomnessId\":\"The randomness id\"}},\"rerollRandomness(bytes32,bytes32)\":{\"details\":\"caller must be the authority for the randomness\",\"params\":{\"oracleId\":\"The oracle id to specifically reroll randomness from\",\"randomnessId\":\"The randomness id\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getRandomness(bytes32)\":{\"notice\":\"Get randomness by id\"},\"requestRandomness(bytes32,address,bytes32,uint64)\":{\"notice\":\"Request randomness from Switchboard from an Oracle on the queue\"},\"requestRandomness(bytes32,address,bytes32,uint64,bytes32)\":{\"notice\":\"Request randomness from Switchboard from an Oracle on the queue\"},\"rerollRandomness(bytes32)\":{\"notice\":\"Reroll randomness (to reuse existing randomness objects for new randomness requests)\"},\"rerollRandomness(bytes32,bytes32)\":{\"notice\":\"Reroll randomness (to reuse existing randomness objects for new randomness requests)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol\":\"IRandomnessModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol\":{\"keccak256\":\"0xdb92bc4ecc7a23bf47558712cb61e99208c3dc68cfe30fcab15841c9e746371f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://853223c4b829e6516f6801d73bfb125e0dec3f4be7dafbfc707b95e581e92f45\",\"dweb:/ipfs/QmR1nB5Nv5y6nyJuAhqGkeKq3UfcGhAwu5kxAED7b6YBp4\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol": { + "ISwitchboardModule": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int128", + "name": "result", + "type": "int128" + } + ], + "name": "FeedUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "oracleAddress", + "type": "address" + } + ], + "name": "OracleAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "queueId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + } + ], + "name": "OracleRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "randomnessId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "result", + "type": "uint256" + } + ], + "name": "RandomnessSettled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "aggregatorId", + "type": "bytes32" + } + ], + "name": "findCurrentResult", + "outputs": [ + { + "components": [ + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "minTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxTimestamp", + "type": "uint256" + }, + { + "internalType": "int128", + "name": "minResult", + "type": "int128" + }, + { + "internalType": "int128", + "name": "maxResult", + "type": "int128" + }, + { + "internalType": "int128", + "name": "stdev", + "type": "int128" + }, + { + "internalType": "int128", + "name": "range", + "type": "int128" + }, + { + "internalType": "int128", + "name": "mean", + "type": "int128" + } + ], + "internalType": "struct Structs.CurrentResult", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "updates", + "type": "bytes[]" + } + ], + "name": "getFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "feedId", + "type": "bytes32" + } + ], + "name": "latestUpdate", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "oracleId", + "type": "bytes32" + }, + { + "internalType": "int128", + "name": "result", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct Structs.Update", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "updates", + "type": "bytes[]" + } + ], + "name": "updateFeeds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "findCurrentResult(bytes32)": "8d9281dd", + "getFee(bytes[])": "8a7d3fa6", + "latestUpdate(bytes32)": "f0f0fce9", + "updateFeeds(bytes[])": "bc36c0a9" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"}],\"name\":\"FeedUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleAddress\",\"type\":\"address\"}],\"name\":\"OracleAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"queueId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"}],\"name\":\"OracleRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"randomnessId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"name\":\"RandomnessSettled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"aggregatorId\",\"type\":\"bytes32\"}],\"name\":\"findCurrentResult\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"minTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"minResult\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"maxResult\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"stdev\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"range\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"mean\",\"type\":\"int128\"}],\"internalType\":\"struct Structs.CurrentResult\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"updates\",\"type\":\"bytes[]\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"name\":\"latestUpdate\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"oracleId\",\"type\":\"bytes32\"},{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.Update\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"updates\",\"type\":\"bytes[]\"}],\"name\":\"updateFeeds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"findCurrentResult(bytes32)\":{\"params\":{\"aggregatorId\":\"The feed identifier to calculate the current result for\"},\"returns\":{\"_0\":\"CurrentResult The current result for the given feed, a struct containing stats and the result\"}},\"getFee(bytes[])\":{\"params\":{\"updates\":\"Encoded switchboard update(s) with signatures\"},\"returns\":{\"_0\":\"uint256 The fee in wei for submitting the updates\"}},\"latestUpdate(bytes32)\":{\"details\":\"Intended to be called within the same transaction as a feed update for the most up-to-date data.Reverts if the feed does not existReverts if the feed does not have a valid update within queue (or aggregator's) tolerated deltaReverts if the feed does not have the minimum number of valid responses\",\"params\":{\"feedId\":\"The identifier for the feed to get the latest update for\"},\"returns\":{\"_0\":\"Update The latest update for the given feed\"}},\"updateFeeds(bytes[])\":{\"details\":\"reverts if the queue's fee is not paidreverts if the blockhash is invalid (i.e. the block is in the future)reverts if the timestamp is out of valid range (optional flow for timestamp-sequenced updates)\",\"params\":{\"updates\":\"Encoded switchboard update(s) with signatures\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"findCurrentResult(bytes32)\":{\"notice\":\"Calculate\"},\"getFee(bytes[])\":{\"notice\":\"Get the fee in wei for submitting a set of updates\"},\"latestUpdate(bytes32)\":{\"notice\":\"Get the latest Update struct for a feed\"},\"updateFeeds(bytes[])\":{\"notice\":\"Update feeds with new oracle results\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol\":\"ISwitchboardModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol\":{\"keccak256\":\"0xf3ade458a150d41b861500f326c5ea4f3ac2f3d408961b4cb0afc2eb9ef0fe90\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a4bb4b61d7ea45a7ac7d6b77cdfb18ba53933d47ecc2b515f90d0b2f81a82e6a\",\"dweb:/ipfs/QmQrF7DsAk7sqY28xxGngi3VXZY6AjSdVZDHAv2TwEqh9k\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "@switchboard-xyz/on-demand-solidity/structs/Structs.sol": { + "Structs": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122058d52a0a211fee515baddd0c6ec163d43867d55c5447bd7f2517fd3954a4712764736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC 0xD5 0x2A EXP 0x21 0x1F 0xEE MLOAD JUMPDEST 0xAD 0xDD 0xC PUSH15 0xC163D43867D55C5447BD7F2517FD39 SLOAD LOG4 PUSH18 0x2764736F6C63430008180033000000000000 ", + "sourceMap": "71:6370:6:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600080fdfea264697066735822122058d52a0a211fee515baddd0c6ec163d43867d55c5447bd7f2517fd3954a4712764736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC 0xD5 0x2A EXP 0x21 0x1F 0xEE MLOAD JUMPDEST 0xAD 0xDD 0xC PUSH15 0xC163D43867D55C5447BD7F2517FD39 SLOAD LOG4 PUSH18 0x2764736F6C63430008180033000000000000 ", + "sourceMap": "71:6370:6:-:0;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":\"Structs\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]}},\"version\":1}" + } + }, + "contracts/TemperatureFeed.sol": { + "TemperatureFeed": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_switchboard", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_aggregatorId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "received", + "type": "uint256" + } + ], + "name": "InsufficientFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int128", + "name": "result", + "type": "int128" + } + ], + "name": "InvalidResult", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int128", + "name": "temperature", + "type": "int128" + } + ], + "name": "FeedData", + "type": "event" + }, + { + "inputs": [], + "name": "aggregatorId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "updates", + "type": "bytes[]" + } + ], + "name": "getFeedData", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "latestTemperature", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_655": { + "entryPoint": null, + "id": 655, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 206, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes32_fromMemory": { + "entryPoint": 260, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_bytes32_fromMemory": { + "entryPoint": 281, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 165, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bytes32": { + "entryPoint": 227, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 133, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 128, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 183, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bytes32": { + "entryPoint": 237, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:1715:8", + "nodeType": "YulBlock", + "src": "0:1715:8", + "statements": [ + { + "body": { + "nativeSrc": "47:35:8", + "nodeType": "YulBlock", + "src": "47:35:8", + "statements": [ + { + "nativeSrc": "57:19:8", + "nodeType": "YulAssignment", + "src": "57:19:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73:2:8", + "nodeType": "YulLiteral", + "src": "73:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "67:5:8", + "nodeType": "YulIdentifier", + "src": "67:5:8" + }, + "nativeSrc": "67:9:8", + "nodeType": "YulFunctionCall", + "src": "67:9:8" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "57:6:8", + "nodeType": "YulIdentifier", + "src": "57:6:8" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "7:75:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "40:6:8", + "nodeType": "YulTypedName", + "src": "40:6:8", + "type": "" + } + ], + "src": "7:75:8" + }, + { + "body": { + "nativeSrc": "177:28:8", + "nodeType": "YulBlock", + "src": "177:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "194:1:8", + "nodeType": "YulLiteral", + "src": "194:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "197:1:8", + "nodeType": "YulLiteral", + "src": "197:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "187:6:8", + "nodeType": "YulIdentifier", + "src": "187:6:8" + }, + "nativeSrc": "187:12:8", + "nodeType": "YulFunctionCall", + "src": "187:12:8" + }, + "nativeSrc": "187:12:8", + "nodeType": "YulExpressionStatement", + "src": "187:12:8" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "88:117:8", + "nodeType": "YulFunctionDefinition", + "src": "88:117:8" + }, + { + "body": { + "nativeSrc": "300:28:8", + "nodeType": "YulBlock", + "src": "300:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "317:1:8", + "nodeType": "YulLiteral", + "src": "317:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "320:1:8", + "nodeType": "YulLiteral", + "src": "320:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "310:6:8", + "nodeType": "YulIdentifier", + "src": "310:6:8" + }, + "nativeSrc": "310:12:8", + "nodeType": "YulFunctionCall", + "src": "310:12:8" + }, + "nativeSrc": "310:12:8", + "nodeType": "YulExpressionStatement", + "src": "310:12:8" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "211:117:8", + "nodeType": "YulFunctionDefinition", + "src": "211:117:8" + }, + { + "body": { + "nativeSrc": "379:81:8", + "nodeType": "YulBlock", + "src": "379:81:8", + "statements": [ + { + "nativeSrc": "389:65:8", + "nodeType": "YulAssignment", + "src": "389:65:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "404:5:8", + "nodeType": "YulIdentifier", + "src": "404:5:8" + }, + { + "kind": "number", + "nativeSrc": "411:42:8", + "nodeType": "YulLiteral", + "src": "411:42:8", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "400:3:8", + "nodeType": "YulIdentifier", + "src": "400:3:8" + }, + "nativeSrc": "400:54:8", + "nodeType": "YulFunctionCall", + "src": "400:54:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "389:7:8", + "nodeType": "YulIdentifier", + "src": "389:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nativeSrc": "334:126:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "361:5:8", + "nodeType": "YulTypedName", + "src": "361:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "371:7:8", + "nodeType": "YulTypedName", + "src": "371:7:8", + "type": "" + } + ], + "src": "334:126:8" + }, + { + "body": { + "nativeSrc": "511:51:8", + "nodeType": "YulBlock", + "src": "511:51:8", + "statements": [ + { + "nativeSrc": "521:35:8", + "nodeType": "YulAssignment", + "src": "521:35:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "550:5:8", + "nodeType": "YulIdentifier", + "src": "550:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nativeSrc": "532:17:8", + "nodeType": "YulIdentifier", + "src": "532:17:8" + }, + "nativeSrc": "532:24:8", + "nodeType": "YulFunctionCall", + "src": "532:24:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "521:7:8", + "nodeType": "YulIdentifier", + "src": "521:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nativeSrc": "466:96:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "493:5:8", + "nodeType": "YulTypedName", + "src": "493:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "503:7:8", + "nodeType": "YulTypedName", + "src": "503:7:8", + "type": "" + } + ], + "src": "466:96:8" + }, + { + "body": { + "nativeSrc": "611:79:8", + "nodeType": "YulBlock", + "src": "611:79:8", + "statements": [ + { + "body": { + "nativeSrc": "668:16:8", + "nodeType": "YulBlock", + "src": "668:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "677:1:8", + "nodeType": "YulLiteral", + "src": "677:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "680:1:8", + "nodeType": "YulLiteral", + "src": "680:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "670:6:8", + "nodeType": "YulIdentifier", + "src": "670:6:8" + }, + "nativeSrc": "670:12:8", + "nodeType": "YulFunctionCall", + "src": "670:12:8" + }, + "nativeSrc": "670:12:8", + "nodeType": "YulExpressionStatement", + "src": "670:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "634:5:8", + "nodeType": "YulIdentifier", + "src": "634:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "659:5:8", + "nodeType": "YulIdentifier", + "src": "659:5:8" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "641:17:8", + "nodeType": "YulIdentifier", + "src": "641:17:8" + }, + "nativeSrc": "641:24:8", + "nodeType": "YulFunctionCall", + "src": "641:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "631:2:8", + "nodeType": "YulIdentifier", + "src": "631:2:8" + }, + "nativeSrc": "631:35:8", + "nodeType": "YulFunctionCall", + "src": "631:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "624:6:8", + "nodeType": "YulIdentifier", + "src": "624:6:8" + }, + "nativeSrc": "624:43:8", + "nodeType": "YulFunctionCall", + "src": "624:43:8" + }, + "nativeSrc": "621:63:8", + "nodeType": "YulIf", + "src": "621:63:8" + } + ] + }, + "name": "validator_revert_t_address", + "nativeSrc": "568:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "604:5:8", + "nodeType": "YulTypedName", + "src": "604:5:8", + "type": "" + } + ], + "src": "568:122:8" + }, + { + "body": { + "nativeSrc": "759:80:8", + "nodeType": "YulBlock", + "src": "759:80:8", + "statements": [ + { + "nativeSrc": "769:22:8", + "nodeType": "YulAssignment", + "src": "769:22:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "784:6:8", + "nodeType": "YulIdentifier", + "src": "784:6:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "778:5:8", + "nodeType": "YulIdentifier", + "src": "778:5:8" + }, + "nativeSrc": "778:13:8", + "nodeType": "YulFunctionCall", + "src": "778:13:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "769:5:8", + "nodeType": "YulIdentifier", + "src": "769:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "827:5:8", + "nodeType": "YulIdentifier", + "src": "827:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "800:26:8", + "nodeType": "YulIdentifier", + "src": "800:26:8" + }, + "nativeSrc": "800:33:8", + "nodeType": "YulFunctionCall", + "src": "800:33:8" + }, + "nativeSrc": "800:33:8", + "nodeType": "YulExpressionStatement", + "src": "800:33:8" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "696:143:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "737:6:8", + "nodeType": "YulTypedName", + "src": "737:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "745:3:8", + "nodeType": "YulTypedName", + "src": "745:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "753:5:8", + "nodeType": "YulTypedName", + "src": "753:5:8", + "type": "" + } + ], + "src": "696:143:8" + }, + { + "body": { + "nativeSrc": "890:32:8", + "nodeType": "YulBlock", + "src": "890:32:8", + "statements": [ + { + "nativeSrc": "900:16:8", + "nodeType": "YulAssignment", + "src": "900:16:8", + "value": { + "name": "value", + "nativeSrc": "911:5:8", + "nodeType": "YulIdentifier", + "src": "911:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "900:7:8", + "nodeType": "YulIdentifier", + "src": "900:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nativeSrc": "845:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "872:5:8", + "nodeType": "YulTypedName", + "src": "872:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "882:7:8", + "nodeType": "YulTypedName", + "src": "882:7:8", + "type": "" + } + ], + "src": "845:77:8" + }, + { + "body": { + "nativeSrc": "971:79:8", + "nodeType": "YulBlock", + "src": "971:79:8", + "statements": [ + { + "body": { + "nativeSrc": "1028:16:8", + "nodeType": "YulBlock", + "src": "1028:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1037:1:8", + "nodeType": "YulLiteral", + "src": "1037:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1040:1:8", + "nodeType": "YulLiteral", + "src": "1040:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1030:6:8", + "nodeType": "YulIdentifier", + "src": "1030:6:8" + }, + "nativeSrc": "1030:12:8", + "nodeType": "YulFunctionCall", + "src": "1030:12:8" + }, + "nativeSrc": "1030:12:8", + "nodeType": "YulExpressionStatement", + "src": "1030:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "994:5:8", + "nodeType": "YulIdentifier", + "src": "994:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1019:5:8", + "nodeType": "YulIdentifier", + "src": "1019:5:8" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nativeSrc": "1001:17:8", + "nodeType": "YulIdentifier", + "src": "1001:17:8" + }, + "nativeSrc": "1001:24:8", + "nodeType": "YulFunctionCall", + "src": "1001:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "991:2:8", + "nodeType": "YulIdentifier", + "src": "991:2:8" + }, + "nativeSrc": "991:35:8", + "nodeType": "YulFunctionCall", + "src": "991:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "984:6:8", + "nodeType": "YulIdentifier", + "src": "984:6:8" + }, + "nativeSrc": "984:43:8", + "nodeType": "YulFunctionCall", + "src": "984:43:8" + }, + "nativeSrc": "981:63:8", + "nodeType": "YulIf", + "src": "981:63:8" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nativeSrc": "928:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "964:5:8", + "nodeType": "YulTypedName", + "src": "964:5:8", + "type": "" + } + ], + "src": "928:122:8" + }, + { + "body": { + "nativeSrc": "1119:80:8", + "nodeType": "YulBlock", + "src": "1119:80:8", + "statements": [ + { + "nativeSrc": "1129:22:8", + "nodeType": "YulAssignment", + "src": "1129:22:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1144:6:8", + "nodeType": "YulIdentifier", + "src": "1144:6:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1138:5:8", + "nodeType": "YulIdentifier", + "src": "1138:5:8" + }, + "nativeSrc": "1138:13:8", + "nodeType": "YulFunctionCall", + "src": "1138:13:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1129:5:8", + "nodeType": "YulIdentifier", + "src": "1129:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1187:5:8", + "nodeType": "YulIdentifier", + "src": "1187:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nativeSrc": "1160:26:8", + "nodeType": "YulIdentifier", + "src": "1160:26:8" + }, + "nativeSrc": "1160:33:8", + "nodeType": "YulFunctionCall", + "src": "1160:33:8" + }, + "nativeSrc": "1160:33:8", + "nodeType": "YulExpressionStatement", + "src": "1160:33:8" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nativeSrc": "1056:143:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "1097:6:8", + "nodeType": "YulTypedName", + "src": "1097:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1105:3:8", + "nodeType": "YulTypedName", + "src": "1105:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "1113:5:8", + "nodeType": "YulTypedName", + "src": "1113:5:8", + "type": "" + } + ], + "src": "1056:143:8" + }, + { + "body": { + "nativeSrc": "1299:413:8", + "nodeType": "YulBlock", + "src": "1299:413:8", + "statements": [ + { + "body": { + "nativeSrc": "1345:83:8", + "nodeType": "YulBlock", + "src": "1345:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1347:77:8", + "nodeType": "YulIdentifier", + "src": "1347:77:8" + }, + "nativeSrc": "1347:79:8", + "nodeType": "YulFunctionCall", + "src": "1347:79:8" + }, + "nativeSrc": "1347:79:8", + "nodeType": "YulExpressionStatement", + "src": "1347:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1320:7:8", + "nodeType": "YulIdentifier", + "src": "1320:7:8" + }, + { + "name": "headStart", + "nativeSrc": "1329:9:8", + "nodeType": "YulIdentifier", + "src": "1329:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1316:3:8", + "nodeType": "YulIdentifier", + "src": "1316:3:8" + }, + "nativeSrc": "1316:23:8", + "nodeType": "YulFunctionCall", + "src": "1316:23:8" + }, + { + "kind": "number", + "nativeSrc": "1341:2:8", + "nodeType": "YulLiteral", + "src": "1341:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1312:3:8", + "nodeType": "YulIdentifier", + "src": "1312:3:8" + }, + "nativeSrc": "1312:32:8", + "nodeType": "YulFunctionCall", + "src": "1312:32:8" + }, + "nativeSrc": "1309:119:8", + "nodeType": "YulIf", + "src": "1309:119:8" + }, + { + "nativeSrc": "1438:128:8", + "nodeType": "YulBlock", + "src": "1438:128:8", + "statements": [ + { + "nativeSrc": "1453:15:8", + "nodeType": "YulVariableDeclaration", + "src": "1453:15:8", + "value": { + "kind": "number", + "nativeSrc": "1467:1:8", + "nodeType": "YulLiteral", + "src": "1467:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1457:6:8", + "nodeType": "YulTypedName", + "src": "1457:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1482:74:8", + "nodeType": "YulAssignment", + "src": "1482:74:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1528:9:8", + "nodeType": "YulIdentifier", + "src": "1528:9:8" + }, + { + "name": "offset", + "nativeSrc": "1539:6:8", + "nodeType": "YulIdentifier", + "src": "1539:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1524:3:8", + "nodeType": "YulIdentifier", + "src": "1524:3:8" + }, + "nativeSrc": "1524:22:8", + "nodeType": "YulFunctionCall", + "src": "1524:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "1548:7:8", + "nodeType": "YulIdentifier", + "src": "1548:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "1492:31:8", + "nodeType": "YulIdentifier", + "src": "1492:31:8" + }, + "nativeSrc": "1492:64:8", + "nodeType": "YulFunctionCall", + "src": "1492:64:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1482:6:8", + "nodeType": "YulIdentifier", + "src": "1482:6:8" + } + ] + } + ] + }, + { + "nativeSrc": "1576:129:8", + "nodeType": "YulBlock", + "src": "1576:129:8", + "statements": [ + { + "nativeSrc": "1591:16:8", + "nodeType": "YulVariableDeclaration", + "src": "1591:16:8", + "value": { + "kind": "number", + "nativeSrc": "1605:2:8", + "nodeType": "YulLiteral", + "src": "1605:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1595:6:8", + "nodeType": "YulTypedName", + "src": "1595:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "1621:74:8", + "nodeType": "YulAssignment", + "src": "1621:74:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1667:9:8", + "nodeType": "YulIdentifier", + "src": "1667:9:8" + }, + { + "name": "offset", + "nativeSrc": "1678:6:8", + "nodeType": "YulIdentifier", + "src": "1678:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1663:3:8", + "nodeType": "YulIdentifier", + "src": "1663:3:8" + }, + "nativeSrc": "1663:22:8", + "nodeType": "YulFunctionCall", + "src": "1663:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "1687:7:8", + "nodeType": "YulIdentifier", + "src": "1687:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nativeSrc": "1631:31:8", + "nodeType": "YulIdentifier", + "src": "1631:31:8" + }, + "nativeSrc": "1631:64:8", + "nodeType": "YulFunctionCall", + "src": "1631:64:8" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1621:6:8", + "nodeType": "YulIdentifier", + "src": "1621:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes32_fromMemory", + "nativeSrc": "1205:507:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1261:9:8", + "nodeType": "YulTypedName", + "src": "1261:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1272:7:8", + "nodeType": "YulTypedName", + "src": "1272:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1284:6:8", + "nodeType": "YulTypedName", + "src": "1284:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1292:6:8", + "nodeType": "YulTypedName", + "src": "1292:6:8", + "type": "" + } + ], + "src": "1205:507:8" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_addresst_bytes32_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506040516109c83803806109c883398181016040528101906100329190610119565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055505050610159565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100b082610085565b9050919050565b6100c0816100a5565b81146100cb57600080fd5b50565b6000815190506100dd816100b7565b92915050565b6000819050919050565b6100f6816100e3565b811461010157600080fd5b50565b600081519050610113816100ed565b92915050565b600080604083850312156101305761012f610080565b5b600061013e858286016100ce565b925050602061014f85828601610104565b9150509250929050565b610860806101686000396000f3fe6080604052600436106100345760003560e01c80634115ea08146100395780635c40450c14610055578063e800044c14610080575b600080fd5b610053600480360381019061004e9190610392565b6100ab565b005b34801561006157600080fd5b5061006a61030d565b60405161007791906103f8565b60405180910390f35b34801561008c57600080fd5b50610095610313565b6040516100a2919061042c565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a7d3fa684846040518363ffffffff1660e01b81526004016101099291906105cb565b602060405180830381865afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a9190610625565b9050803410156101935780346040517fa458261b00000000000000000000000000000000000000000000000000000000815260040161018a929190610661565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc36c0a98285856040518463ffffffff1660e01b81526004016101ef9291906105cb565b6000604051808303818588803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f0fce96001546040518263ffffffff1660e01b815260040161027f91906103f8565b606060405180830381865afa15801561029c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c091906107d3565b60200151905080600f0b6002819055507feae3a8ceb0a2895368d0a619e49a705fc9957c7617876b58566df6468cdb33a8816040516102ff919061080f565b60405180910390a150505050565b60015481565b60025481565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126103525761035161032d565b5b8235905067ffffffffffffffff81111561036f5761036e610332565b5b60208301915083602082028301111561038b5761038a610337565b5b9250929050565b600080602083850312156103a9576103a8610323565b5b600083013567ffffffffffffffff8111156103c7576103c6610328565b5b6103d38582860161033c565b92509250509250929050565b6000819050919050565b6103f2816103df565b82525050565b600060208201905061040d60008301846103e9565b92915050565b6000819050919050565b61042681610413565b82525050565b6000602082019050610441600083018461041d565b92915050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061049f8385610462565b93506104ac838584610473565b6104b583610482565b840190509392505050565b60006104cd848484610493565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610502576105016104e0565b5b83810192508235915060208301925067ffffffffffffffff82111561052a576105296104d6565b5b6001820236038313156105405761053f6104db565b5b509250929050565b6000602082019050919050565b60006105618385610447565b93508360208402850161057384610458565b8060005b878110156105b957848403895261058e82846104e5565b6105998682846104c0565b95506105a484610548565b935060208b019a505050600181019050610577565b50829750879450505050509392505050565b600060208201905081810360008301526105e6818486610555565b90509392505050565b6000819050919050565b610602816105ef565b811461060d57600080fd5b50565b60008151905061061f816105f9565b92915050565b60006020828403121561063b5761063a610323565b5b600061064984828501610610565b91505092915050565b61065b816105ef565b82525050565b60006040820190506106766000830185610652565b6106836020830184610652565b9392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106c782610482565b810181811067ffffffffffffffff821117156106e6576106e561068f565b5b80604052505050565b60006106f9610319565b905061070582826106be565b919050565b610713816103df565b811461071e57600080fd5b50565b6000815190506107308161070a565b92915050565b600081600f0b9050919050565b61074c81610736565b811461075757600080fd5b50565b60008151905061076981610743565b92915050565b6000606082840312156107855761078461068a565b5b61078f60606106ef565b9050600061079f84828501610721565b60008301525060206107b38482850161075a565b60208301525060406107c784828501610610565b60408301525092915050565b6000606082840312156107e9576107e8610323565b5b60006107f78482850161076f565b91505092915050565b61080981610736565b82525050565b60006020820190506108246000830184610800565b9291505056fea264697066735822122061d1c68ba489bf272622ade681bb705c5105d2d0e61fad26ea647d5af13b9e7564736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x9C8 CODESIZE SUB DUP1 PUSH2 0x9C8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x119 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP POP POP PUSH2 0x159 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0 DUP3 PUSH2 0x85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC0 DUP2 PUSH2 0xA5 JUMP JUMPDEST DUP2 EQ PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xDD DUP2 PUSH2 0xB7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF6 DUP2 PUSH2 0xE3 JUMP JUMPDEST DUP2 EQ PUSH2 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x113 DUP2 PUSH2 0xED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x130 JUMPI PUSH2 0x12F PUSH2 0x80 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x13E DUP6 DUP3 DUP7 ADD PUSH2 0xCE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x14F DUP6 DUP3 DUP7 ADD PUSH2 0x104 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x860 DUP1 PUSH2 0x168 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4115EA08 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x5C40450C EQ PUSH2 0x55 JUMPI DUP1 PUSH4 0xE800044C EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x392 JUMP JUMPDEST PUSH2 0xAB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x77 SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x95 PUSH2 0x313 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8A7D3FA6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP3 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x126 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x193 JUMPI DUP1 CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xA458261B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18A SWAP3 SWAP2 SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC36C0A9 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP3 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF0F0FCE9 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27F SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP DUP1 PUSH1 0xF SIGNEXTEND PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0xEAE3A8CEB0A2895368D0A619E49A705FC9957C7617876B58566DF6468CDB33A8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x352 JUMPI PUSH2 0x351 PUSH2 0x32D JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36F JUMPI PUSH2 0x36E PUSH2 0x332 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x38B JUMPI PUSH2 0x38A PUSH2 0x337 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A9 JUMPI PUSH2 0x3A8 PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C6 PUSH2 0x328 JUMP JUMPDEST JUMPDEST PUSH2 0x3D3 DUP6 DUP3 DUP7 ADD PUSH2 0x33C JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F2 DUP2 PUSH2 0x3DF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x40D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x426 DUP2 PUSH2 0x413 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x441 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x41D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F DUP4 DUP6 PUSH2 0x462 JUMP JUMPDEST SWAP4 POP PUSH2 0x4AC DUP4 DUP6 DUP5 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x4B5 DUP4 PUSH2 0x482 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD DUP5 DUP5 DUP5 PUSH2 0x493 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x502 JUMPI PUSH2 0x501 PUSH2 0x4E0 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A JUMPI PUSH2 0x529 PUSH2 0x4D6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x540 JUMPI PUSH2 0x53F PUSH2 0x4DB JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 DUP4 DUP6 PUSH2 0x447 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP5 MUL DUP6 ADD PUSH2 0x573 DUP5 PUSH2 0x458 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5B9 JUMPI DUP5 DUP5 SUB DUP10 MSTORE PUSH2 0x58E DUP3 DUP5 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x599 DUP7 DUP3 DUP5 PUSH2 0x4C0 JUMP JUMPDEST SWAP6 POP PUSH2 0x5A4 DUP5 PUSH2 0x548 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP12 ADD SWAP11 POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x577 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5E6 DUP2 DUP5 DUP7 PUSH2 0x555 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x602 DUP2 PUSH2 0x5EF JUMP JUMPDEST DUP2 EQ PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x61F DUP2 PUSH2 0x5F9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63B JUMPI PUSH2 0x63A PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x649 DUP5 DUP3 DUP6 ADD PUSH2 0x610 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x65B DUP2 PUSH2 0x5EF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x676 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x652 JUMP JUMPDEST PUSH2 0x683 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x652 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6C7 DUP3 PUSH2 0x482 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x6E6 JUMPI PUSH2 0x6E5 PUSH2 0x68F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F9 PUSH2 0x319 JUMP JUMPDEST SWAP1 POP PUSH2 0x705 DUP3 DUP3 PUSH2 0x6BE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x713 DUP2 PUSH2 0x3DF JUMP JUMPDEST DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x730 DUP2 PUSH2 0x70A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x74C DUP2 PUSH2 0x736 JUMP JUMPDEST DUP2 EQ PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x769 DUP2 PUSH2 0x743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x785 JUMPI PUSH2 0x784 PUSH2 0x68A JUMP JUMPDEST JUMPDEST PUSH2 0x78F PUSH1 0x60 PUSH2 0x6EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x79F DUP5 DUP3 DUP6 ADD PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x7B3 DUP5 DUP3 DUP6 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x7C7 DUP5 DUP3 DUP6 ADD PUSH2 0x610 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7E9 JUMPI PUSH2 0x7E8 PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x7F7 DUP5 DUP3 DUP6 ADD PUSH2 0x76F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x736 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x824 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xD1C6 DUP12 LOG4 DUP10 0xBF 0x27 0x26 0x22 0xAD 0xE6 DUP2 0xBB PUSH17 0x5C5105D2D0E61FAD26EA647D5AF13B9E75 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "147:2333:7:-:0;;;912:307;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1161:12;1134:11;;:40;;;;;;;;;;;;;;;;;;1199:13;1184:12;:28;;;;912:307;;147:2333;;88:117:8;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:77::-;882:7;911:5;900:16;;845:77;;;:::o;928:122::-;1001:24;1019:5;1001:24;:::i;:::-;994:5;991:35;981:63;;1040:1;1037;1030:12;981:63;928:122;:::o;1056:143::-;1113:5;1144:6;1138:13;1129:22;;1160:33;1187:5;1160:33;:::i;:::-;1056:143;;;;:::o;1205:507::-;1284:6;1292;1341:2;1329:9;1320:7;1316:23;1312:32;1309:119;;;1347:79;;:::i;:::-;1309:119;1467:1;1492:64;1548:7;1539:6;1528:9;1524:22;1492:64;:::i;:::-;1482:74;;1438:128;1605:2;1631:64;1687:7;1678:6;1667:9;1663:22;1631:64;:::i;:::-;1621:74;;1576:129;1205:507;;;;;:::o;147:2333:7:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@aggregatorId_620": { + "entryPoint": 781, + "id": 620, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@getFeedData_706": { + "entryPoint": 171, + "id": 706, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@latestTemperature_622": { + "entryPoint": 787, + "id": 622, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 828, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_t_bytes32_fromMemory": { + "entryPoint": 1825, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_int128_fromMemory": { + "entryPoint": 1882, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_Update_$465_memory_ptr_fromMemory": { + "entryPoint": 1903, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 1552, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 914, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_struct$_Update_$465_memory_ptr_fromMemory": { + "entryPoint": 2003, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 1573, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encodeUpdatedPos_t_bytes_calldata_ptr_to_t_bytes_memory_ptr": { + "entryPoint": 1216, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 1365, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_t_bytes32_to_t_bytes32_fromStack": { + "entryPoint": 1001, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr": { + "entryPoint": 1171, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_t_int128_to_t_int128_fromStack": { + "entryPoint": 2048, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_int256_to_t_int256_fromStack": { + "entryPoint": 1053, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 1618, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 1483, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": 1016, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_int128__to_t_int128__fromStack_reversed": { + "entryPoint": 2063, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": { + "entryPoint": 1068, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 1633, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 1775, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": 793, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 1112, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": { + "entryPoint": 1352, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 1095, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr": { + "entryPoint": 1122, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "calldata_access_t_bytes_calldata_ptr": { + "entryPoint": 1253, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "cleanup_t_bytes32": { + "entryPoint": 991, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_int128": { + "entryPoint": 1846, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_int256": { + "entryPoint": 1043, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 1519, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_calldata_to_memory_with_cleanup": { + "entryPoint": 1139, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "finalize_allocation": { + "entryPoint": 1726, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 1679, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2": { + "entryPoint": 1238, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { + "entryPoint": 818, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 813, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f": { + "entryPoint": 1674, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20": { + "entryPoint": 1243, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { + "entryPoint": 823, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 808, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4": { + "entryPoint": 1248, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 803, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 1154, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "validator_revert_t_bytes32": { + "entryPoint": 1802, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_int128": { + "entryPoint": 1859, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 1529, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:10961:8", + "nodeType": "YulBlock", + "src": "0:10961:8", + "statements": [ + { + "body": { + "nativeSrc": "47:35:8", + "nodeType": "YulBlock", + "src": "47:35:8", + "statements": [ + { + "nativeSrc": "57:19:8", + "nodeType": "YulAssignment", + "src": "57:19:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73:2:8", + "nodeType": "YulLiteral", + "src": "73:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "67:5:8", + "nodeType": "YulIdentifier", + "src": "67:5:8" + }, + "nativeSrc": "67:9:8", + "nodeType": "YulFunctionCall", + "src": "67:9:8" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "57:6:8", + "nodeType": "YulIdentifier", + "src": "57:6:8" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "7:75:8", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "40:6:8", + "nodeType": "YulTypedName", + "src": "40:6:8", + "type": "" + } + ], + "src": "7:75:8" + }, + { + "body": { + "nativeSrc": "177:28:8", + "nodeType": "YulBlock", + "src": "177:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "194:1:8", + "nodeType": "YulLiteral", + "src": "194:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "197:1:8", + "nodeType": "YulLiteral", + "src": "197:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "187:6:8", + "nodeType": "YulIdentifier", + "src": "187:6:8" + }, + "nativeSrc": "187:12:8", + "nodeType": "YulFunctionCall", + "src": "187:12:8" + }, + "nativeSrc": "187:12:8", + "nodeType": "YulExpressionStatement", + "src": "187:12:8" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "88:117:8", + "nodeType": "YulFunctionDefinition", + "src": "88:117:8" + }, + { + "body": { + "nativeSrc": "300:28:8", + "nodeType": "YulBlock", + "src": "300:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "317:1:8", + "nodeType": "YulLiteral", + "src": "317:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "320:1:8", + "nodeType": "YulLiteral", + "src": "320:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "310:6:8", + "nodeType": "YulIdentifier", + "src": "310:6:8" + }, + "nativeSrc": "310:12:8", + "nodeType": "YulFunctionCall", + "src": "310:12:8" + }, + "nativeSrc": "310:12:8", + "nodeType": "YulExpressionStatement", + "src": "310:12:8" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "211:117:8", + "nodeType": "YulFunctionDefinition", + "src": "211:117:8" + }, + { + "body": { + "nativeSrc": "423:28:8", + "nodeType": "YulBlock", + "src": "423:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "440:1:8", + "nodeType": "YulLiteral", + "src": "440:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "443:1:8", + "nodeType": "YulLiteral", + "src": "443:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "433:6:8", + "nodeType": "YulIdentifier", + "src": "433:6:8" + }, + "nativeSrc": "433:12:8", + "nodeType": "YulFunctionCall", + "src": "433:12:8" + }, + "nativeSrc": "433:12:8", + "nodeType": "YulExpressionStatement", + "src": "433:12:8" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nativeSrc": "334:117:8", + "nodeType": "YulFunctionDefinition", + "src": "334:117:8" + }, + { + "body": { + "nativeSrc": "546:28:8", + "nodeType": "YulBlock", + "src": "546:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "563:1:8", + "nodeType": "YulLiteral", + "src": "563:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "566:1:8", + "nodeType": "YulLiteral", + "src": "566:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "556:6:8", + "nodeType": "YulIdentifier", + "src": "556:6:8" + }, + "nativeSrc": "556:12:8", + "nodeType": "YulFunctionCall", + "src": "556:12:8" + }, + "nativeSrc": "556:12:8", + "nodeType": "YulExpressionStatement", + "src": "556:12:8" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nativeSrc": "457:117:8", + "nodeType": "YulFunctionDefinition", + "src": "457:117:8" + }, + { + "body": { + "nativeSrc": "669:28:8", + "nodeType": "YulBlock", + "src": "669:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "686:1:8", + "nodeType": "YulLiteral", + "src": "686:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "689:1:8", + "nodeType": "YulLiteral", + "src": "689:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "679:6:8", + "nodeType": "YulIdentifier", + "src": "679:6:8" + }, + "nativeSrc": "679:12:8", + "nodeType": "YulFunctionCall", + "src": "679:12:8" + }, + "nativeSrc": "679:12:8", + "nodeType": "YulExpressionStatement", + "src": "679:12:8" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nativeSrc": "580:117:8", + "nodeType": "YulFunctionDefinition", + "src": "580:117:8" + }, + { + "body": { + "nativeSrc": "819:478:8", + "nodeType": "YulBlock", + "src": "819:478:8", + "statements": [ + { + "body": { + "nativeSrc": "868:83:8", + "nodeType": "YulBlock", + "src": "868:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nativeSrc": "870:77:8", + "nodeType": "YulIdentifier", + "src": "870:77:8" + }, + "nativeSrc": "870:79:8", + "nodeType": "YulFunctionCall", + "src": "870:79:8" + }, + "nativeSrc": "870:79:8", + "nodeType": "YulExpressionStatement", + "src": "870:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "847:6:8", + "nodeType": "YulIdentifier", + "src": "847:6:8" + }, + { + "kind": "number", + "nativeSrc": "855:4:8", + "nodeType": "YulLiteral", + "src": "855:4:8", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "843:3:8", + "nodeType": "YulIdentifier", + "src": "843:3:8" + }, + "nativeSrc": "843:17:8", + "nodeType": "YulFunctionCall", + "src": "843:17:8" + }, + { + "name": "end", + "nativeSrc": "862:3:8", + "nodeType": "YulIdentifier", + "src": "862:3:8" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "839:3:8", + "nodeType": "YulIdentifier", + "src": "839:3:8" + }, + "nativeSrc": "839:27:8", + "nodeType": "YulFunctionCall", + "src": "839:27:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "832:6:8", + "nodeType": "YulIdentifier", + "src": "832:6:8" + }, + "nativeSrc": "832:35:8", + "nodeType": "YulFunctionCall", + "src": "832:35:8" + }, + "nativeSrc": "829:122:8", + "nodeType": "YulIf", + "src": "829:122:8" + }, + { + "nativeSrc": "960:30:8", + "nodeType": "YulAssignment", + "src": "960:30:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "983:6:8", + "nodeType": "YulIdentifier", + "src": "983:6:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "970:12:8", + "nodeType": "YulIdentifier", + "src": "970:12:8" + }, + "nativeSrc": "970:20:8", + "nodeType": "YulFunctionCall", + "src": "970:20:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "960:6:8", + "nodeType": "YulIdentifier", + "src": "960:6:8" + } + ] + }, + { + "body": { + "nativeSrc": "1033:83:8", + "nodeType": "YulBlock", + "src": "1033:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nativeSrc": "1035:77:8", + "nodeType": "YulIdentifier", + "src": "1035:77:8" + }, + "nativeSrc": "1035:79:8", + "nodeType": "YulFunctionCall", + "src": "1035:79:8" + }, + "nativeSrc": "1035:79:8", + "nodeType": "YulExpressionStatement", + "src": "1035:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1005:6:8", + "nodeType": "YulIdentifier", + "src": "1005:6:8" + }, + { + "kind": "number", + "nativeSrc": "1013:18:8", + "nodeType": "YulLiteral", + "src": "1013:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1002:2:8", + "nodeType": "YulIdentifier", + "src": "1002:2:8" + }, + "nativeSrc": "1002:30:8", + "nodeType": "YulFunctionCall", + "src": "1002:30:8" + }, + "nativeSrc": "999:117:8", + "nodeType": "YulIf", + "src": "999:117:8" + }, + { + "nativeSrc": "1125:29:8", + "nodeType": "YulAssignment", + "src": "1125:29:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1141:6:8", + "nodeType": "YulIdentifier", + "src": "1141:6:8" + }, + { + "kind": "number", + "nativeSrc": "1149:4:8", + "nodeType": "YulLiteral", + "src": "1149:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1137:3:8", + "nodeType": "YulIdentifier", + "src": "1137:3:8" + }, + "nativeSrc": "1137:17:8", + "nodeType": "YulFunctionCall", + "src": "1137:17:8" + }, + "variableNames": [ + { + "name": "arrayPos", + "nativeSrc": "1125:8:8", + "nodeType": "YulIdentifier", + "src": "1125:8:8" + } + ] + }, + { + "body": { + "nativeSrc": "1208:83:8", + "nodeType": "YulBlock", + "src": "1208:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nativeSrc": "1210:77:8", + "nodeType": "YulIdentifier", + "src": "1210:77:8" + }, + "nativeSrc": "1210:79:8", + "nodeType": "YulFunctionCall", + "src": "1210:79:8" + }, + "nativeSrc": "1210:79:8", + "nodeType": "YulExpressionStatement", + "src": "1210:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nativeSrc": "1173:8:8", + "nodeType": "YulIdentifier", + "src": "1173:8:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1187:6:8", + "nodeType": "YulIdentifier", + "src": "1187:6:8" + }, + { + "kind": "number", + "nativeSrc": "1195:4:8", + "nodeType": "YulLiteral", + "src": "1195:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "1183:3:8", + "nodeType": "YulIdentifier", + "src": "1183:3:8" + }, + "nativeSrc": "1183:17:8", + "nodeType": "YulFunctionCall", + "src": "1183:17:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1169:3:8", + "nodeType": "YulIdentifier", + "src": "1169:3:8" + }, + "nativeSrc": "1169:32:8", + "nodeType": "YulFunctionCall", + "src": "1169:32:8" + }, + { + "name": "end", + "nativeSrc": "1203:3:8", + "nodeType": "YulIdentifier", + "src": "1203:3:8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1166:2:8", + "nodeType": "YulIdentifier", + "src": "1166:2:8" + }, + "nativeSrc": "1166:41:8", + "nodeType": "YulFunctionCall", + "src": "1166:41:8" + }, + "nativeSrc": "1163:128:8", + "nodeType": "YulIf", + "src": "1163:128:8" + } + ] + }, + "name": "abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "718:579:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "786:6:8", + "nodeType": "YulTypedName", + "src": "786:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "794:3:8", + "nodeType": "YulTypedName", + "src": "794:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nativeSrc": "802:8:8", + "nodeType": "YulTypedName", + "src": "802:8:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "812:6:8", + "nodeType": "YulTypedName", + "src": "812:6:8", + "type": "" + } + ], + "src": "718:579:8" + }, + { + "body": { + "nativeSrc": "1415:469:8", + "nodeType": "YulBlock", + "src": "1415:469:8", + "statements": [ + { + "body": { + "nativeSrc": "1461:83:8", + "nodeType": "YulBlock", + "src": "1461:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1463:77:8", + "nodeType": "YulIdentifier", + "src": "1463:77:8" + }, + "nativeSrc": "1463:79:8", + "nodeType": "YulFunctionCall", + "src": "1463:79:8" + }, + "nativeSrc": "1463:79:8", + "nodeType": "YulExpressionStatement", + "src": "1463:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1436:7:8", + "nodeType": "YulIdentifier", + "src": "1436:7:8" + }, + { + "name": "headStart", + "nativeSrc": "1445:9:8", + "nodeType": "YulIdentifier", + "src": "1445:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1432:3:8", + "nodeType": "YulIdentifier", + "src": "1432:3:8" + }, + "nativeSrc": "1432:23:8", + "nodeType": "YulFunctionCall", + "src": "1432:23:8" + }, + { + "kind": "number", + "nativeSrc": "1457:2:8", + "nodeType": "YulLiteral", + "src": "1457:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1428:3:8", + "nodeType": "YulIdentifier", + "src": "1428:3:8" + }, + "nativeSrc": "1428:32:8", + "nodeType": "YulFunctionCall", + "src": "1428:32:8" + }, + "nativeSrc": "1425:119:8", + "nodeType": "YulIf", + "src": "1425:119:8" + }, + { + "nativeSrc": "1554:323:8", + "nodeType": "YulBlock", + "src": "1554:323:8", + "statements": [ + { + "nativeSrc": "1569:45:8", + "nodeType": "YulVariableDeclaration", + "src": "1569:45:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1600:9:8", + "nodeType": "YulIdentifier", + "src": "1600:9:8" + }, + { + "kind": "number", + "nativeSrc": "1611:1:8", + "nodeType": "YulLiteral", + "src": "1611:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1596:3:8", + "nodeType": "YulIdentifier", + "src": "1596:3:8" + }, + "nativeSrc": "1596:17:8", + "nodeType": "YulFunctionCall", + "src": "1596:17:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1583:12:8", + "nodeType": "YulIdentifier", + "src": "1583:12:8" + }, + "nativeSrc": "1583:31:8", + "nodeType": "YulFunctionCall", + "src": "1583:31:8" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1573:6:8", + "nodeType": "YulTypedName", + "src": "1573:6:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1661:83:8", + "nodeType": "YulBlock", + "src": "1661:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "1663:77:8", + "nodeType": "YulIdentifier", + "src": "1663:77:8" + }, + "nativeSrc": "1663:79:8", + "nodeType": "YulFunctionCall", + "src": "1663:79:8" + }, + "nativeSrc": "1663:79:8", + "nodeType": "YulExpressionStatement", + "src": "1663:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1633:6:8", + "nodeType": "YulIdentifier", + "src": "1633:6:8" + }, + { + "kind": "number", + "nativeSrc": "1641:18:8", + "nodeType": "YulLiteral", + "src": "1641:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1630:2:8", + "nodeType": "YulIdentifier", + "src": "1630:2:8" + }, + "nativeSrc": "1630:30:8", + "nodeType": "YulFunctionCall", + "src": "1630:30:8" + }, + "nativeSrc": "1627:117:8", + "nodeType": "YulIf", + "src": "1627:117:8" + }, + { + "nativeSrc": "1758:109:8", + "nodeType": "YulAssignment", + "src": "1758:109:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1839:9:8", + "nodeType": "YulIdentifier", + "src": "1839:9:8" + }, + { + "name": "offset", + "nativeSrc": "1850:6:8", + "nodeType": "YulIdentifier", + "src": "1850:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1835:3:8", + "nodeType": "YulIdentifier", + "src": "1835:3:8" + }, + "nativeSrc": "1835:22:8", + "nodeType": "YulFunctionCall", + "src": "1835:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "1859:7:8", + "nodeType": "YulIdentifier", + "src": "1859:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "1776:58:8", + "nodeType": "YulIdentifier", + "src": "1776:58:8" + }, + "nativeSrc": "1776:91:8", + "nodeType": "YulFunctionCall", + "src": "1776:91:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1758:6:8", + "nodeType": "YulIdentifier", + "src": "1758:6:8" + }, + { + "name": "value1", + "nativeSrc": "1766:6:8", + "nodeType": "YulIdentifier", + "src": "1766:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "1303:581:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1377:9:8", + "nodeType": "YulTypedName", + "src": "1377:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1388:7:8", + "nodeType": "YulTypedName", + "src": "1388:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1400:6:8", + "nodeType": "YulTypedName", + "src": "1400:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1408:6:8", + "nodeType": "YulTypedName", + "src": "1408:6:8", + "type": "" + } + ], + "src": "1303:581:8" + }, + { + "body": { + "nativeSrc": "1935:32:8", + "nodeType": "YulBlock", + "src": "1935:32:8", + "statements": [ + { + "nativeSrc": "1945:16:8", + "nodeType": "YulAssignment", + "src": "1945:16:8", + "value": { + "name": "value", + "nativeSrc": "1956:5:8", + "nodeType": "YulIdentifier", + "src": "1956:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "1945:7:8", + "nodeType": "YulIdentifier", + "src": "1945:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nativeSrc": "1890:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1917:5:8", + "nodeType": "YulTypedName", + "src": "1917:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "1927:7:8", + "nodeType": "YulTypedName", + "src": "1927:7:8", + "type": "" + } + ], + "src": "1890:77:8" + }, + { + "body": { + "nativeSrc": "2038:53:8", + "nodeType": "YulBlock", + "src": "2038:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2055:3:8", + "nodeType": "YulIdentifier", + "src": "2055:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2078:5:8", + "nodeType": "YulIdentifier", + "src": "2078:5:8" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nativeSrc": "2060:17:8", + "nodeType": "YulIdentifier", + "src": "2060:17:8" + }, + "nativeSrc": "2060:24:8", + "nodeType": "YulFunctionCall", + "src": "2060:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2048:6:8", + "nodeType": "YulIdentifier", + "src": "2048:6:8" + }, + "nativeSrc": "2048:37:8", + "nodeType": "YulFunctionCall", + "src": "2048:37:8" + }, + "nativeSrc": "2048:37:8", + "nodeType": "YulExpressionStatement", + "src": "2048:37:8" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nativeSrc": "1973:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2026:5:8", + "nodeType": "YulTypedName", + "src": "2026:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "2033:3:8", + "nodeType": "YulTypedName", + "src": "2033:3:8", + "type": "" + } + ], + "src": "1973:118:8" + }, + { + "body": { + "nativeSrc": "2195:124:8", + "nodeType": "YulBlock", + "src": "2195:124:8", + "statements": [ + { + "nativeSrc": "2205:26:8", + "nodeType": "YulAssignment", + "src": "2205:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2217:9:8", + "nodeType": "YulIdentifier", + "src": "2217:9:8" + }, + { + "kind": "number", + "nativeSrc": "2228:2:8", + "nodeType": "YulLiteral", + "src": "2228:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2213:3:8", + "nodeType": "YulIdentifier", + "src": "2213:3:8" + }, + "nativeSrc": "2213:18:8", + "nodeType": "YulFunctionCall", + "src": "2213:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2205:4:8", + "nodeType": "YulIdentifier", + "src": "2205:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2285:6:8", + "nodeType": "YulIdentifier", + "src": "2285:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2298:9:8", + "nodeType": "YulIdentifier", + "src": "2298:9:8" + }, + { + "kind": "number", + "nativeSrc": "2309:1:8", + "nodeType": "YulLiteral", + "src": "2309:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2294:3:8", + "nodeType": "YulIdentifier", + "src": "2294:3:8" + }, + "nativeSrc": "2294:17:8", + "nodeType": "YulFunctionCall", + "src": "2294:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nativeSrc": "2241:43:8", + "nodeType": "YulIdentifier", + "src": "2241:43:8" + }, + "nativeSrc": "2241:71:8", + "nodeType": "YulFunctionCall", + "src": "2241:71:8" + }, + "nativeSrc": "2241:71:8", + "nodeType": "YulExpressionStatement", + "src": "2241:71:8" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "2097:222:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2167:9:8", + "nodeType": "YulTypedName", + "src": "2167:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2179:6:8", + "nodeType": "YulTypedName", + "src": "2179:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2190:4:8", + "nodeType": "YulTypedName", + "src": "2190:4:8", + "type": "" + } + ], + "src": "2097:222:8" + }, + { + "body": { + "nativeSrc": "2369:32:8", + "nodeType": "YulBlock", + "src": "2369:32:8", + "statements": [ + { + "nativeSrc": "2379:16:8", + "nodeType": "YulAssignment", + "src": "2379:16:8", + "value": { + "name": "value", + "nativeSrc": "2390:5:8", + "nodeType": "YulIdentifier", + "src": "2390:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2379:7:8", + "nodeType": "YulIdentifier", + "src": "2379:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_int256", + "nativeSrc": "2325:76:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2351:5:8", + "nodeType": "YulTypedName", + "src": "2351:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2361:7:8", + "nodeType": "YulTypedName", + "src": "2361:7:8", + "type": "" + } + ], + "src": "2325:76:8" + }, + { + "body": { + "nativeSrc": "2470:52:8", + "nodeType": "YulBlock", + "src": "2470:52:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2487:3:8", + "nodeType": "YulIdentifier", + "src": "2487:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2509:5:8", + "nodeType": "YulIdentifier", + "src": "2509:5:8" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nativeSrc": "2492:16:8", + "nodeType": "YulIdentifier", + "src": "2492:16:8" + }, + "nativeSrc": "2492:23:8", + "nodeType": "YulFunctionCall", + "src": "2492:23:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2480:6:8", + "nodeType": "YulIdentifier", + "src": "2480:6:8" + }, + "nativeSrc": "2480:36:8", + "nodeType": "YulFunctionCall", + "src": "2480:36:8" + }, + "nativeSrc": "2480:36:8", + "nodeType": "YulExpressionStatement", + "src": "2480:36:8" + } + ] + }, + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nativeSrc": "2407:115:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2458:5:8", + "nodeType": "YulTypedName", + "src": "2458:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "2465:3:8", + "nodeType": "YulTypedName", + "src": "2465:3:8", + "type": "" + } + ], + "src": "2407:115:8" + }, + { + "body": { + "nativeSrc": "2624:122:8", + "nodeType": "YulBlock", + "src": "2624:122:8", + "statements": [ + { + "nativeSrc": "2634:26:8", + "nodeType": "YulAssignment", + "src": "2634:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2646:9:8", + "nodeType": "YulIdentifier", + "src": "2646:9:8" + }, + { + "kind": "number", + "nativeSrc": "2657:2:8", + "nodeType": "YulLiteral", + "src": "2657:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2642:3:8", + "nodeType": "YulIdentifier", + "src": "2642:3:8" + }, + "nativeSrc": "2642:18:8", + "nodeType": "YulFunctionCall", + "src": "2642:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2634:4:8", + "nodeType": "YulIdentifier", + "src": "2634:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2712:6:8", + "nodeType": "YulIdentifier", + "src": "2712:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2725:9:8", + "nodeType": "YulIdentifier", + "src": "2725:9:8" + }, + { + "kind": "number", + "nativeSrc": "2736:1:8", + "nodeType": "YulLiteral", + "src": "2736:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2721:3:8", + "nodeType": "YulIdentifier", + "src": "2721:3:8" + }, + "nativeSrc": "2721:17:8", + "nodeType": "YulFunctionCall", + "src": "2721:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nativeSrc": "2670:41:8", + "nodeType": "YulIdentifier", + "src": "2670:41:8" + }, + "nativeSrc": "2670:69:8", + "nodeType": "YulFunctionCall", + "src": "2670:69:8" + }, + "nativeSrc": "2670:69:8", + "nodeType": "YulExpressionStatement", + "src": "2670:69:8" + } + ] + }, + "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed", + "nativeSrc": "2528:218:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2596:9:8", + "nodeType": "YulTypedName", + "src": "2596:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2608:6:8", + "nodeType": "YulTypedName", + "src": "2608:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2619:4:8", + "nodeType": "YulTypedName", + "src": "2619:4:8", + "type": "" + } + ], + "src": "2528:218:8" + }, + { + "body": { + "nativeSrc": "2872:73:8", + "nodeType": "YulBlock", + "src": "2872:73:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2889:3:8", + "nodeType": "YulIdentifier", + "src": "2889:3:8" + }, + { + "name": "length", + "nativeSrc": "2894:6:8", + "nodeType": "YulIdentifier", + "src": "2894:6:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2882:6:8", + "nodeType": "YulIdentifier", + "src": "2882:6:8" + }, + "nativeSrc": "2882:19:8", + "nodeType": "YulFunctionCall", + "src": "2882:19:8" + }, + "nativeSrc": "2882:19:8", + "nodeType": "YulExpressionStatement", + "src": "2882:19:8" + }, + { + "nativeSrc": "2910:29:8", + "nodeType": "YulAssignment", + "src": "2910:29:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2929:3:8", + "nodeType": "YulIdentifier", + "src": "2929:3:8" + }, + { + "kind": "number", + "nativeSrc": "2934:4:8", + "nodeType": "YulLiteral", + "src": "2934:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2925:3:8", + "nodeType": "YulIdentifier", + "src": "2925:3:8" + }, + "nativeSrc": "2925:14:8", + "nodeType": "YulFunctionCall", + "src": "2925:14:8" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "2910:11:8", + "nodeType": "YulIdentifier", + "src": "2910:11:8" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack", + "nativeSrc": "2752:193:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "2844:3:8", + "nodeType": "YulTypedName", + "src": "2844:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "2849:6:8", + "nodeType": "YulTypedName", + "src": "2849:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "2860:11:8", + "nodeType": "YulTypedName", + "src": "2860:11:8", + "type": "" + } + ], + "src": "2752:193:8" + }, + { + "body": { + "nativeSrc": "3036:28:8", + "nodeType": "YulBlock", + "src": "3036:28:8", + "statements": [ + { + "nativeSrc": "3046:11:8", + "nodeType": "YulAssignment", + "src": "3046:11:8", + "value": { + "name": "ptr", + "nativeSrc": "3054:3:8", + "nodeType": "YulIdentifier", + "src": "3054:3:8" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "3046:4:8", + "nodeType": "YulIdentifier", + "src": "3046:4:8" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "2951:113:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "3023:3:8", + "nodeType": "YulTypedName", + "src": "3023:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "3031:4:8", + "nodeType": "YulTypedName", + "src": "3031:4:8", + "type": "" + } + ], + "src": "2951:113:8" + }, + { + "body": { + "nativeSrc": "3155:73:8", + "nodeType": "YulBlock", + "src": "3155:73:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3172:3:8", + "nodeType": "YulIdentifier", + "src": "3172:3:8" + }, + { + "name": "length", + "nativeSrc": "3177:6:8", + "nodeType": "YulIdentifier", + "src": "3177:6:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3165:6:8", + "nodeType": "YulIdentifier", + "src": "3165:6:8" + }, + "nativeSrc": "3165:19:8", + "nodeType": "YulFunctionCall", + "src": "3165:19:8" + }, + "nativeSrc": "3165:19:8", + "nodeType": "YulExpressionStatement", + "src": "3165:19:8" + }, + { + "nativeSrc": "3193:29:8", + "nodeType": "YulAssignment", + "src": "3193:29:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3212:3:8", + "nodeType": "YulIdentifier", + "src": "3212:3:8" + }, + { + "kind": "number", + "nativeSrc": "3217:4:8", + "nodeType": "YulLiteral", + "src": "3217:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3208:3:8", + "nodeType": "YulIdentifier", + "src": "3208:3:8" + }, + "nativeSrc": "3208:14:8", + "nodeType": "YulFunctionCall", + "src": "3208:14:8" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "3193:11:8", + "nodeType": "YulIdentifier", + "src": "3193:11:8" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nativeSrc": "3070:158:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "3127:3:8", + "nodeType": "YulTypedName", + "src": "3127:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "3132:6:8", + "nodeType": "YulTypedName", + "src": "3132:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "3143:11:8", + "nodeType": "YulTypedName", + "src": "3143:11:8", + "type": "" + } + ], + "src": "3070:158:8" + }, + { + "body": { + "nativeSrc": "3298:82:8", + "nodeType": "YulBlock", + "src": "3298:82:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "3321:3:8", + "nodeType": "YulIdentifier", + "src": "3321:3:8" + }, + { + "name": "src", + "nativeSrc": "3326:3:8", + "nodeType": "YulIdentifier", + "src": "3326:3:8" + }, + { + "name": "length", + "nativeSrc": "3331:6:8", + "nodeType": "YulIdentifier", + "src": "3331:6:8" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3308:12:8", + "nodeType": "YulIdentifier", + "src": "3308:12:8" + }, + "nativeSrc": "3308:30:8", + "nodeType": "YulFunctionCall", + "src": "3308:30:8" + }, + "nativeSrc": "3308:30:8", + "nodeType": "YulExpressionStatement", + "src": "3308:30:8" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "3358:3:8", + "nodeType": "YulIdentifier", + "src": "3358:3:8" + }, + { + "name": "length", + "nativeSrc": "3363:6:8", + "nodeType": "YulIdentifier", + "src": "3363:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3354:3:8", + "nodeType": "YulIdentifier", + "src": "3354:3:8" + }, + "nativeSrc": "3354:16:8", + "nodeType": "YulFunctionCall", + "src": "3354:16:8" + }, + { + "kind": "number", + "nativeSrc": "3372:1:8", + "nodeType": "YulLiteral", + "src": "3372:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3347:6:8", + "nodeType": "YulIdentifier", + "src": "3347:6:8" + }, + "nativeSrc": "3347:27:8", + "nodeType": "YulFunctionCall", + "src": "3347:27:8" + }, + "nativeSrc": "3347:27:8", + "nodeType": "YulExpressionStatement", + "src": "3347:27:8" + } + ] + }, + "name": "copy_calldata_to_memory_with_cleanup", + "nativeSrc": "3234:146:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "3280:3:8", + "nodeType": "YulTypedName", + "src": "3280:3:8", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "3285:3:8", + "nodeType": "YulTypedName", + "src": "3285:3:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "3290:6:8", + "nodeType": "YulTypedName", + "src": "3290:6:8", + "type": "" + } + ], + "src": "3234:146:8" + }, + { + "body": { + "nativeSrc": "3434:54:8", + "nodeType": "YulBlock", + "src": "3434:54:8", + "statements": [ + { + "nativeSrc": "3444:38:8", + "nodeType": "YulAssignment", + "src": "3444:38:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3462:5:8", + "nodeType": "YulIdentifier", + "src": "3462:5:8" + }, + { + "kind": "number", + "nativeSrc": "3469:2:8", + "nodeType": "YulLiteral", + "src": "3469:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3458:3:8", + "nodeType": "YulIdentifier", + "src": "3458:3:8" + }, + "nativeSrc": "3458:14:8", + "nodeType": "YulFunctionCall", + "src": "3458:14:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3478:2:8", + "nodeType": "YulLiteral", + "src": "3478:2:8", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3474:3:8", + "nodeType": "YulIdentifier", + "src": "3474:3:8" + }, + "nativeSrc": "3474:7:8", + "nodeType": "YulFunctionCall", + "src": "3474:7:8" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3454:3:8", + "nodeType": "YulIdentifier", + "src": "3454:3:8" + }, + "nativeSrc": "3454:28:8", + "nodeType": "YulFunctionCall", + "src": "3454:28:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3444:6:8", + "nodeType": "YulIdentifier", + "src": "3444:6:8" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nativeSrc": "3386:102:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3417:5:8", + "nodeType": "YulTypedName", + "src": "3417:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "3427:6:8", + "nodeType": "YulTypedName", + "src": "3427:6:8", + "type": "" + } + ], + "src": "3386:102:8" + }, + { + "body": { + "nativeSrc": "3606:204:8", + "nodeType": "YulBlock", + "src": "3606:204:8", + "statements": [ + { + "nativeSrc": "3616:67:8", + "nodeType": "YulAssignment", + "src": "3616:67:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3671:3:8", + "nodeType": "YulIdentifier", + "src": "3671:3:8" + }, + { + "name": "length", + "nativeSrc": "3676:6:8", + "nodeType": "YulIdentifier", + "src": "3676:6:8" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nativeSrc": "3623:47:8", + "nodeType": "YulIdentifier", + "src": "3623:47:8" + }, + "nativeSrc": "3623:60:8", + "nodeType": "YulFunctionCall", + "src": "3623:60:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "3616:3:8", + "nodeType": "YulIdentifier", + "src": "3616:3:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "3730:5:8", + "nodeType": "YulIdentifier", + "src": "3730:5:8" + }, + { + "name": "pos", + "nativeSrc": "3737:3:8", + "nodeType": "YulIdentifier", + "src": "3737:3:8" + }, + { + "name": "length", + "nativeSrc": "3742:6:8", + "nodeType": "YulIdentifier", + "src": "3742:6:8" + } + ], + "functionName": { + "name": "copy_calldata_to_memory_with_cleanup", + "nativeSrc": "3693:36:8", + "nodeType": "YulIdentifier", + "src": "3693:36:8" + }, + "nativeSrc": "3693:56:8", + "nodeType": "YulFunctionCall", + "src": "3693:56:8" + }, + "nativeSrc": "3693:56:8", + "nodeType": "YulExpressionStatement", + "src": "3693:56:8" + }, + { + "nativeSrc": "3758:46:8", + "nodeType": "YulAssignment", + "src": "3758:46:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3769:3:8", + "nodeType": "YulIdentifier", + "src": "3769:3:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "3796:6:8", + "nodeType": "YulIdentifier", + "src": "3796:6:8" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nativeSrc": "3774:21:8", + "nodeType": "YulIdentifier", + "src": "3774:21:8" + }, + "nativeSrc": "3774:29:8", + "nodeType": "YulFunctionCall", + "src": "3774:29:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3765:3:8", + "nodeType": "YulIdentifier", + "src": "3765:3:8" + }, + "nativeSrc": "3765:39:8", + "nodeType": "YulFunctionCall", + "src": "3765:39:8" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "3758:3:8", + "nodeType": "YulIdentifier", + "src": "3758:3:8" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr", + "nativeSrc": "3516:294:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nativeSrc": "3579:5:8", + "nodeType": "YulTypedName", + "src": "3579:5:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "3586:6:8", + "nodeType": "YulTypedName", + "src": "3586:6:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3594:3:8", + "nodeType": "YulTypedName", + "src": "3594:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "3602:3:8", + "nodeType": "YulTypedName", + "src": "3602:3:8", + "type": "" + } + ], + "src": "3516:294:8" + }, + { + "body": { + "nativeSrc": "3924:104:8", + "nodeType": "YulBlock", + "src": "3924:104:8", + "statements": [ + { + "nativeSrc": "3934:88:8", + "nodeType": "YulAssignment", + "src": "3934:88:8", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4002:6:8", + "nodeType": "YulIdentifier", + "src": "4002:6:8" + }, + { + "name": "value1", + "nativeSrc": "4010:6:8", + "nodeType": "YulIdentifier", + "src": "4010:6:8" + }, + { + "name": "pos", + "nativeSrc": "4018:3:8", + "nodeType": "YulIdentifier", + "src": "4018:3:8" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr", + "nativeSrc": "3948:53:8", + "nodeType": "YulIdentifier", + "src": "3948:53:8" + }, + "nativeSrc": "3948:74:8", + "nodeType": "YulFunctionCall", + "src": "3948:74:8" + }, + "variableNames": [ + { + "name": "updatedPos", + "nativeSrc": "3934:10:8", + "nodeType": "YulIdentifier", + "src": "3934:10:8" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_bytes_calldata_ptr_to_t_bytes_memory_ptr", + "nativeSrc": "3816:212:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nativeSrc": "3889:6:8", + "nodeType": "YulTypedName", + "src": "3889:6:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3897:6:8", + "nodeType": "YulTypedName", + "src": "3897:6:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3905:3:8", + "nodeType": "YulTypedName", + "src": "3905:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nativeSrc": "3913:10:8", + "nodeType": "YulTypedName", + "src": "3913:10:8", + "type": "" + } + ], + "src": "3816:212:8" + }, + { + "body": { + "nativeSrc": "4123:28:8", + "nodeType": "YulBlock", + "src": "4123:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4140:1:8", + "nodeType": "YulLiteral", + "src": "4140:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4143:1:8", + "nodeType": "YulLiteral", + "src": "4143:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4133:6:8", + "nodeType": "YulIdentifier", + "src": "4133:6:8" + }, + "nativeSrc": "4133:12:8", + "nodeType": "YulFunctionCall", + "src": "4133:12:8" + }, + "nativeSrc": "4133:12:8", + "nodeType": "YulExpressionStatement", + "src": "4133:12:8" + } + ] + }, + "name": "revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2", + "nativeSrc": "4034:117:8", + "nodeType": "YulFunctionDefinition", + "src": "4034:117:8" + }, + { + "body": { + "nativeSrc": "4246:28:8", + "nodeType": "YulBlock", + "src": "4246:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4263:1:8", + "nodeType": "YulLiteral", + "src": "4263:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4266:1:8", + "nodeType": "YulLiteral", + "src": "4266:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4256:6:8", + "nodeType": "YulIdentifier", + "src": "4256:6:8" + }, + "nativeSrc": "4256:12:8", + "nodeType": "YulFunctionCall", + "src": "4256:12:8" + }, + "nativeSrc": "4256:12:8", + "nodeType": "YulExpressionStatement", + "src": "4256:12:8" + } + ] + }, + "name": "revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20", + "nativeSrc": "4157:117:8", + "nodeType": "YulFunctionDefinition", + "src": "4157:117:8" + }, + { + "body": { + "nativeSrc": "4369:28:8", + "nodeType": "YulBlock", + "src": "4369:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4386:1:8", + "nodeType": "YulLiteral", + "src": "4386:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4389:1:8", + "nodeType": "YulLiteral", + "src": "4389:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4379:6:8", + "nodeType": "YulIdentifier", + "src": "4379:6:8" + }, + "nativeSrc": "4379:12:8", + "nodeType": "YulFunctionCall", + "src": "4379:12:8" + }, + "nativeSrc": "4379:12:8", + "nodeType": "YulExpressionStatement", + "src": "4379:12:8" + } + ] + }, + "name": "revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4", + "nativeSrc": "4280:117:8", + "nodeType": "YulFunctionDefinition", + "src": "4280:117:8" + }, + { + "body": { + "nativeSrc": "4481:633:8", + "nodeType": "YulBlock", + "src": "4481:633:8", + "statements": [ + { + "nativeSrc": "4491:43:8", + "nodeType": "YulVariableDeclaration", + "src": "4491:43:8", + "value": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "4530:3:8", + "nodeType": "YulIdentifier", + "src": "4530:3:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4517:12:8", + "nodeType": "YulIdentifier", + "src": "4517:12:8" + }, + "nativeSrc": "4517:17:8", + "nodeType": "YulFunctionCall", + "src": "4517:17:8" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nativeSrc": "4495:18:8", + "nodeType": "YulTypedName", + "src": "4495:18:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4628:83:8", + "nodeType": "YulBlock", + "src": "4628:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4", + "nativeSrc": "4630:77:8", + "nodeType": "YulIdentifier", + "src": "4630:77:8" + }, + "nativeSrc": "4630:79:8", + "nodeType": "YulFunctionCall", + "src": "4630:79:8" + }, + "nativeSrc": "4630:79:8", + "nodeType": "YulExpressionStatement", + "src": "4630:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nativeSrc": "4557:18:8", + "nodeType": "YulIdentifier", + "src": "4557:18:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "4585:12:8", + "nodeType": "YulIdentifier", + "src": "4585:12:8" + }, + "nativeSrc": "4585:14:8", + "nodeType": "YulFunctionCall", + "src": "4585:14:8" + }, + { + "name": "base_ref", + "nativeSrc": "4601:8:8", + "nodeType": "YulIdentifier", + "src": "4601:8:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4581:3:8", + "nodeType": "YulIdentifier", + "src": "4581:3:8" + }, + "nativeSrc": "4581:29:8", + "nodeType": "YulFunctionCall", + "src": "4581:29:8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4616:4:8", + "nodeType": "YulLiteral", + "src": "4616:4:8", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "4622:1:8", + "nodeType": "YulLiteral", + "src": "4622:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4612:3:8", + "nodeType": "YulIdentifier", + "src": "4612:3:8" + }, + "nativeSrc": "4612:12:8", + "nodeType": "YulFunctionCall", + "src": "4612:12:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4577:3:8", + "nodeType": "YulIdentifier", + "src": "4577:3:8" + }, + "nativeSrc": "4577:48:8", + "nodeType": "YulFunctionCall", + "src": "4577:48:8" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4553:3:8", + "nodeType": "YulIdentifier", + "src": "4553:3:8" + }, + "nativeSrc": "4553:73:8", + "nodeType": "YulFunctionCall", + "src": "4553:73:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4546:6:8", + "nodeType": "YulIdentifier", + "src": "4546:6:8" + }, + "nativeSrc": "4546:81:8", + "nodeType": "YulFunctionCall", + "src": "4546:81:8" + }, + "nativeSrc": "4543:168:8", + "nodeType": "YulIf", + "src": "4543:168:8" + }, + { + "nativeSrc": "4720:42:8", + "nodeType": "YulAssignment", + "src": "4720:42:8", + "value": { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nativeSrc": "4733:18:8", + "nodeType": "YulIdentifier", + "src": "4733:18:8" + }, + { + "name": "base_ref", + "nativeSrc": "4753:8:8", + "nodeType": "YulIdentifier", + "src": "4753:8:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4729:3:8", + "nodeType": "YulIdentifier", + "src": "4729:3:8" + }, + "nativeSrc": "4729:33:8", + "nodeType": "YulFunctionCall", + "src": "4729:33:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "4720:5:8", + "nodeType": "YulIdentifier", + "src": "4720:5:8" + } + ] + }, + { + "nativeSrc": "4772:29:8", + "nodeType": "YulAssignment", + "src": "4772:29:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4795:5:8", + "nodeType": "YulIdentifier", + "src": "4795:5:8" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4782:12:8", + "nodeType": "YulIdentifier", + "src": "4782:12:8" + }, + "nativeSrc": "4782:19:8", + "nodeType": "YulFunctionCall", + "src": "4782:19:8" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "4772:6:8", + "nodeType": "YulIdentifier", + "src": "4772:6:8" + } + ] + }, + { + "nativeSrc": "4810:25:8", + "nodeType": "YulAssignment", + "src": "4810:25:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4823:5:8", + "nodeType": "YulIdentifier", + "src": "4823:5:8" + }, + { + "kind": "number", + "nativeSrc": "4830:4:8", + "nodeType": "YulLiteral", + "src": "4830:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4819:3:8", + "nodeType": "YulIdentifier", + "src": "4819:3:8" + }, + "nativeSrc": "4819:16:8", + "nodeType": "YulFunctionCall", + "src": "4819:16:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "4810:5:8", + "nodeType": "YulIdentifier", + "src": "4810:5:8" + } + ] + }, + { + "body": { + "nativeSrc": "4878:83:8", + "nodeType": "YulBlock", + "src": "4878:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2", + "nativeSrc": "4880:77:8", + "nodeType": "YulIdentifier", + "src": "4880:77:8" + }, + "nativeSrc": "4880:79:8", + "nodeType": "YulFunctionCall", + "src": "4880:79:8" + }, + "nativeSrc": "4880:79:8", + "nodeType": "YulExpressionStatement", + "src": "4880:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "4850:6:8", + "nodeType": "YulIdentifier", + "src": "4850:6:8" + }, + { + "kind": "number", + "nativeSrc": "4858:18:8", + "nodeType": "YulLiteral", + "src": "4858:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4847:2:8", + "nodeType": "YulIdentifier", + "src": "4847:2:8" + }, + "nativeSrc": "4847:30:8", + "nodeType": "YulFunctionCall", + "src": "4847:30:8" + }, + "nativeSrc": "4844:117:8", + "nodeType": "YulIf", + "src": "4844:117:8" + }, + { + "body": { + "nativeSrc": "5024:83:8", + "nodeType": "YulBlock", + "src": "5024:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20", + "nativeSrc": "5026:77:8", + "nodeType": "YulIdentifier", + "src": "5026:77:8" + }, + "nativeSrc": "5026:79:8", + "nodeType": "YulFunctionCall", + "src": "5026:79:8" + }, + "nativeSrc": "5026:79:8", + "nodeType": "YulExpressionStatement", + "src": "5026:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4977:5:8", + "nodeType": "YulIdentifier", + "src": "4977:5:8" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "4988:12:8", + "nodeType": "YulIdentifier", + "src": "4988:12:8" + }, + "nativeSrc": "4988:14:8", + "nodeType": "YulFunctionCall", + "src": "4988:14:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "5008:6:8", + "nodeType": "YulIdentifier", + "src": "5008:6:8" + }, + { + "kind": "number", + "nativeSrc": "5016:4:8", + "nodeType": "YulLiteral", + "src": "5016:4:8", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "5004:3:8", + "nodeType": "YulIdentifier", + "src": "5004:3:8" + }, + "nativeSrc": "5004:17:8", + "nodeType": "YulFunctionCall", + "src": "5004:17:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4984:3:8", + "nodeType": "YulIdentifier", + "src": "4984:3:8" + }, + "nativeSrc": "4984:38:8", + "nodeType": "YulFunctionCall", + "src": "4984:38:8" + } + ], + "functionName": { + "name": "sgt", + "nativeSrc": "4973:3:8", + "nodeType": "YulIdentifier", + "src": "4973:3:8" + }, + "nativeSrc": "4973:50:8", + "nodeType": "YulFunctionCall", + "src": "4973:50:8" + }, + "nativeSrc": "4970:137:8", + "nodeType": "YulIf", + "src": "4970:137:8" + } + ] + }, + "name": "calldata_access_t_bytes_calldata_ptr", + "nativeSrc": "4403:711:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base_ref", + "nativeSrc": "4449:8:8", + "nodeType": "YulTypedName", + "src": "4449:8:8", + "type": "" + }, + { + "name": "ptr", + "nativeSrc": "4459:3:8", + "nodeType": "YulTypedName", + "src": "4459:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "4467:5:8", + "nodeType": "YulTypedName", + "src": "4467:5:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "4474:6:8", + "nodeType": "YulTypedName", + "src": "4474:6:8", + "type": "" + } + ], + "src": "4403:711:8" + }, + { + "body": { + "nativeSrc": "5208:38:8", + "nodeType": "YulBlock", + "src": "5208:38:8", + "statements": [ + { + "nativeSrc": "5218:22:8", + "nodeType": "YulAssignment", + "src": "5218:22:8", + "value": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "5230:3:8", + "nodeType": "YulIdentifier", + "src": "5230:3:8" + }, + { + "kind": "number", + "nativeSrc": "5235:4:8", + "nodeType": "YulLiteral", + "src": "5235:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5226:3:8", + "nodeType": "YulIdentifier", + "src": "5226:3:8" + }, + "nativeSrc": "5226:14:8", + "nodeType": "YulFunctionCall", + "src": "5226:14:8" + }, + "variableNames": [ + { + "name": "next", + "nativeSrc": "5218:4:8", + "nodeType": "YulIdentifier", + "src": "5218:4:8" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "5120:126:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "5195:3:8", + "nodeType": "YulTypedName", + "src": "5195:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nativeSrc": "5203:4:8", + "nodeType": "YulTypedName", + "src": "5203:4:8", + "type": "" + } + ], + "src": "5120:126:8" + }, + { + "body": { + "nativeSrc": "5432:836:8", + "nodeType": "YulBlock", + "src": "5432:836:8", + "statements": [ + { + "nativeSrc": "5443:102:8", + "nodeType": "YulAssignment", + "src": "5443:102:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5533:3:8", + "nodeType": "YulIdentifier", + "src": "5533:3:8" + }, + { + "name": "length", + "nativeSrc": "5538:6:8", + "nodeType": "YulIdentifier", + "src": "5538:6:8" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack", + "nativeSrc": "5450:82:8", + "nodeType": "YulIdentifier", + "src": "5450:82:8" + }, + "nativeSrc": "5450:95:8", + "nodeType": "YulFunctionCall", + "src": "5450:95:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "5443:3:8", + "nodeType": "YulIdentifier", + "src": "5443:3:8" + } + ] + }, + { + "nativeSrc": "5554:20:8", + "nodeType": "YulVariableDeclaration", + "src": "5554:20:8", + "value": { + "name": "pos", + "nativeSrc": "5571:3:8", + "nodeType": "YulIdentifier", + "src": "5571:3:8" + }, + "variables": [ + { + "name": "headStart", + "nativeSrc": "5558:9:8", + "nodeType": "YulTypedName", + "src": "5558:9:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5583:39:8", + "nodeType": "YulVariableDeclaration", + "src": "5583:39:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5599:3:8", + "nodeType": "YulIdentifier", + "src": "5599:3:8" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "5608:6:8", + "nodeType": "YulIdentifier", + "src": "5608:6:8" + }, + { + "kind": "number", + "nativeSrc": "5616:4:8", + "nodeType": "YulLiteral", + "src": "5616:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "5604:3:8", + "nodeType": "YulIdentifier", + "src": "5604:3:8" + }, + "nativeSrc": "5604:17:8", + "nodeType": "YulFunctionCall", + "src": "5604:17:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5595:3:8", + "nodeType": "YulIdentifier", + "src": "5595:3:8" + }, + "nativeSrc": "5595:27:8", + "nodeType": "YulFunctionCall", + "src": "5595:27:8" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "5587:4:8", + "nodeType": "YulTypedName", + "src": "5587:4:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5631:84:8", + "nodeType": "YulVariableDeclaration", + "src": "5631:84:8", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5709:5:8", + "nodeType": "YulIdentifier", + "src": "5709:5:8" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "5646:62:8", + "nodeType": "YulIdentifier", + "src": "5646:62:8" + }, + "nativeSrc": "5646:69:8", + "nodeType": "YulFunctionCall", + "src": "5646:69:8" + }, + "variables": [ + { + "name": "baseRef", + "nativeSrc": "5635:7:8", + "nodeType": "YulTypedName", + "src": "5635:7:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5724:21:8", + "nodeType": "YulVariableDeclaration", + "src": "5724:21:8", + "value": { + "name": "baseRef", + "nativeSrc": "5738:7:8", + "nodeType": "YulIdentifier", + "src": "5738:7:8" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "5728:6:8", + "nodeType": "YulTypedName", + "src": "5728:6:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5814:409:8", + "nodeType": "YulBlock", + "src": "5814:409:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5835:3:8", + "nodeType": "YulIdentifier", + "src": "5835:3:8" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "5844:4:8", + "nodeType": "YulIdentifier", + "src": "5844:4:8" + }, + { + "name": "headStart", + "nativeSrc": "5850:9:8", + "nodeType": "YulIdentifier", + "src": "5850:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5840:3:8", + "nodeType": "YulIdentifier", + "src": "5840:3:8" + }, + "nativeSrc": "5840:20:8", + "nodeType": "YulFunctionCall", + "src": "5840:20:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5828:6:8", + "nodeType": "YulIdentifier", + "src": "5828:6:8" + }, + "nativeSrc": "5828:33:8", + "nodeType": "YulFunctionCall", + "src": "5828:33:8" + }, + "nativeSrc": "5828:33:8", + "nodeType": "YulExpressionStatement", + "src": "5828:33:8" + }, + { + "nativeSrc": "5874:89:8", + "nodeType": "YulVariableDeclaration", + "src": "5874:89:8", + "value": { + "arguments": [ + { + "name": "baseRef", + "nativeSrc": "5947:7:8", + "nodeType": "YulIdentifier", + "src": "5947:7:8" + }, + { + "name": "srcPtr", + "nativeSrc": "5956:6:8", + "nodeType": "YulIdentifier", + "src": "5956:6:8" + } + ], + "functionName": { + "name": "calldata_access_t_bytes_calldata_ptr", + "nativeSrc": "5910:36:8", + "nodeType": "YulIdentifier", + "src": "5910:36:8" + }, + "nativeSrc": "5910:53:8", + "nodeType": "YulFunctionCall", + "src": "5910:53:8" + }, + "variables": [ + { + "name": "elementValue0", + "nativeSrc": "5878:13:8", + "nodeType": "YulTypedName", + "src": "5878:13:8", + "type": "" + }, + { + "name": "elementValue1", + "nativeSrc": "5893:13:8", + "nodeType": "YulTypedName", + "src": "5893:13:8", + "type": "" + } + ] + }, + { + "nativeSrc": "5976:107:8", + "nodeType": "YulAssignment", + "src": "5976:107:8", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nativeSrc": "6048:13:8", + "nodeType": "YulIdentifier", + "src": "6048:13:8" + }, + { + "name": "elementValue1", + "nativeSrc": "6063:13:8", + "nodeType": "YulIdentifier", + "src": "6063:13:8" + }, + { + "name": "tail", + "nativeSrc": "6078:4:8", + "nodeType": "YulIdentifier", + "src": "6078:4:8" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_bytes_calldata_ptr_to_t_bytes_memory_ptr", + "nativeSrc": "5984:63:8", + "nodeType": "YulIdentifier", + "src": "5984:63:8" + }, + "nativeSrc": "5984:99:8", + "nodeType": "YulFunctionCall", + "src": "5984:99:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5976:4:8", + "nodeType": "YulIdentifier", + "src": "5976:4:8" + } + ] + }, + { + "nativeSrc": "6096:83:8", + "nodeType": "YulAssignment", + "src": "6096:83:8", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6172:6:8", + "nodeType": "YulIdentifier", + "src": "6172:6:8" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "nativeSrc": "6106:65:8", + "nodeType": "YulIdentifier", + "src": "6106:65:8" + }, + "nativeSrc": "6106:73:8", + "nodeType": "YulFunctionCall", + "src": "6106:73:8" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "6096:6:8", + "nodeType": "YulIdentifier", + "src": "6096:6:8" + } + ] + }, + { + "nativeSrc": "6192:21:8", + "nodeType": "YulAssignment", + "src": "6192:21:8", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6203:3:8", + "nodeType": "YulIdentifier", + "src": "6203:3:8" + }, + { + "kind": "number", + "nativeSrc": "6208:4:8", + "nodeType": "YulLiteral", + "src": "6208:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6199:3:8", + "nodeType": "YulIdentifier", + "src": "6199:3:8" + }, + "nativeSrc": "6199:14:8", + "nodeType": "YulFunctionCall", + "src": "6199:14:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6192:3:8", + "nodeType": "YulIdentifier", + "src": "6192:3:8" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5776:1:8", + "nodeType": "YulIdentifier", + "src": "5776:1:8" + }, + { + "name": "length", + "nativeSrc": "5779:6:8", + "nodeType": "YulIdentifier", + "src": "5779:6:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5773:2:8", + "nodeType": "YulIdentifier", + "src": "5773:2:8" + }, + "nativeSrc": "5773:13:8", + "nodeType": "YulFunctionCall", + "src": "5773:13:8" + }, + "nativeSrc": "5754:469:8", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5787:18:8", + "nodeType": "YulBlock", + "src": "5787:18:8", + "statements": [ + { + "nativeSrc": "5789:14:8", + "nodeType": "YulAssignment", + "src": "5789:14:8", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5798:1:8", + "nodeType": "YulIdentifier", + "src": "5798:1:8" + }, + { + "kind": "number", + "nativeSrc": "5801:1:8", + "nodeType": "YulLiteral", + "src": "5801:1:8", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5794:3:8", + "nodeType": "YulIdentifier", + "src": "5794:3:8" + }, + "nativeSrc": "5794:9:8", + "nodeType": "YulFunctionCall", + "src": "5794:9:8" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5789:1:8", + "nodeType": "YulIdentifier", + "src": "5789:1:8" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5758:14:8", + "nodeType": "YulBlock", + "src": "5758:14:8", + "statements": [ + { + "nativeSrc": "5760:10:8", + "nodeType": "YulVariableDeclaration", + "src": "5760:10:8", + "value": { + "kind": "number", + "nativeSrc": "5769:1:8", + "nodeType": "YulLiteral", + "src": "5769:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "5764:1:8", + "nodeType": "YulTypedName", + "src": "5764:1:8", + "type": "" + } + ] + } + ] + }, + "src": "5754:469:8" + }, + { + "nativeSrc": "6232:11:8", + "nodeType": "YulAssignment", + "src": "6232:11:8", + "value": { + "name": "tail", + "nativeSrc": "6239:4:8", + "nodeType": "YulIdentifier", + "src": "6239:4:8" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6232:3:8", + "nodeType": "YulIdentifier", + "src": "6232:3:8" + } + ] + }, + { + "nativeSrc": "6252:10:8", + "nodeType": "YulAssignment", + "src": "6252:10:8", + "value": { + "name": "pos", + "nativeSrc": "6259:3:8", + "nodeType": "YulIdentifier", + "src": "6259:3:8" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "6252:3:8", + "nodeType": "YulIdentifier", + "src": "6252:3:8" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack", + "nativeSrc": "5278:990:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "5403:5:8", + "nodeType": "YulTypedName", + "src": "5403:5:8", + "type": "" + }, + { + "name": "length", + "nativeSrc": "5410:6:8", + "nodeType": "YulTypedName", + "src": "5410:6:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "5418:3:8", + "nodeType": "YulTypedName", + "src": "5418:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "5427:3:8", + "nodeType": "YulTypedName", + "src": "5427:3:8", + "type": "" + } + ], + "src": "5278:990:8" + }, + { + "body": { + "nativeSrc": "6452:255:8", + "nodeType": "YulBlock", + "src": "6452:255:8", + "statements": [ + { + "nativeSrc": "6462:26:8", + "nodeType": "YulAssignment", + "src": "6462:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6474:9:8", + "nodeType": "YulIdentifier", + "src": "6474:9:8" + }, + { + "kind": "number", + "nativeSrc": "6485:2:8", + "nodeType": "YulLiteral", + "src": "6485:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6470:3:8", + "nodeType": "YulIdentifier", + "src": "6470:3:8" + }, + "nativeSrc": "6470:18:8", + "nodeType": "YulFunctionCall", + "src": "6470:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6462:4:8", + "nodeType": "YulIdentifier", + "src": "6462:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6509:9:8", + "nodeType": "YulIdentifier", + "src": "6509:9:8" + }, + { + "kind": "number", + "nativeSrc": "6520:1:8", + "nodeType": "YulLiteral", + "src": "6520:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6505:3:8", + "nodeType": "YulIdentifier", + "src": "6505:3:8" + }, + "nativeSrc": "6505:17:8", + "nodeType": "YulFunctionCall", + "src": "6505:17:8" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "6528:4:8", + "nodeType": "YulIdentifier", + "src": "6528:4:8" + }, + { + "name": "headStart", + "nativeSrc": "6534:9:8", + "nodeType": "YulIdentifier", + "src": "6534:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6524:3:8", + "nodeType": "YulIdentifier", + "src": "6524:3:8" + }, + "nativeSrc": "6524:20:8", + "nodeType": "YulFunctionCall", + "src": "6524:20:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6498:6:8", + "nodeType": "YulIdentifier", + "src": "6498:6:8" + }, + "nativeSrc": "6498:47:8", + "nodeType": "YulFunctionCall", + "src": "6498:47:8" + }, + "nativeSrc": "6498:47:8", + "nodeType": "YulExpressionStatement", + "src": "6498:47:8" + }, + { + "nativeSrc": "6554:146:8", + "nodeType": "YulAssignment", + "src": "6554:146:8", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6678:6:8", + "nodeType": "YulIdentifier", + "src": "6678:6:8" + }, + { + "name": "value1", + "nativeSrc": "6686:6:8", + "nodeType": "YulIdentifier", + "src": "6686:6:8" + }, + { + "name": "tail", + "nativeSrc": "6695:4:8", + "nodeType": "YulIdentifier", + "src": "6695:4:8" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack", + "nativeSrc": "6562:115:8", + "nodeType": "YulIdentifier", + "src": "6562:115:8" + }, + "nativeSrc": "6562:138:8", + "nodeType": "YulFunctionCall", + "src": "6562:138:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6554:4:8", + "nodeType": "YulIdentifier", + "src": "6554:4:8" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6274:433:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6416:9:8", + "nodeType": "YulTypedName", + "src": "6416:9:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6428:6:8", + "nodeType": "YulTypedName", + "src": "6428:6:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6436:6:8", + "nodeType": "YulTypedName", + "src": "6436:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6447:4:8", + "nodeType": "YulTypedName", + "src": "6447:4:8", + "type": "" + } + ], + "src": "6274:433:8" + }, + { + "body": { + "nativeSrc": "6758:32:8", + "nodeType": "YulBlock", + "src": "6758:32:8", + "statements": [ + { + "nativeSrc": "6768:16:8", + "nodeType": "YulAssignment", + "src": "6768:16:8", + "value": { + "name": "value", + "nativeSrc": "6779:5:8", + "nodeType": "YulIdentifier", + "src": "6779:5:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "6768:7:8", + "nodeType": "YulIdentifier", + "src": "6768:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "6713:77:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6740:5:8", + "nodeType": "YulTypedName", + "src": "6740:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "6750:7:8", + "nodeType": "YulTypedName", + "src": "6750:7:8", + "type": "" + } + ], + "src": "6713:77:8" + }, + { + "body": { + "nativeSrc": "6839:79:8", + "nodeType": "YulBlock", + "src": "6839:79:8", + "statements": [ + { + "body": { + "nativeSrc": "6896:16:8", + "nodeType": "YulBlock", + "src": "6896:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6905:1:8", + "nodeType": "YulLiteral", + "src": "6905:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6908:1:8", + "nodeType": "YulLiteral", + "src": "6908:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6898:6:8", + "nodeType": "YulIdentifier", + "src": "6898:6:8" + }, + "nativeSrc": "6898:12:8", + "nodeType": "YulFunctionCall", + "src": "6898:12:8" + }, + "nativeSrc": "6898:12:8", + "nodeType": "YulExpressionStatement", + "src": "6898:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6862:5:8", + "nodeType": "YulIdentifier", + "src": "6862:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6887:5:8", + "nodeType": "YulIdentifier", + "src": "6887:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "6869:17:8", + "nodeType": "YulIdentifier", + "src": "6869:17:8" + }, + "nativeSrc": "6869:24:8", + "nodeType": "YulFunctionCall", + "src": "6869:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "6859:2:8", + "nodeType": "YulIdentifier", + "src": "6859:2:8" + }, + "nativeSrc": "6859:35:8", + "nodeType": "YulFunctionCall", + "src": "6859:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6852:6:8", + "nodeType": "YulIdentifier", + "src": "6852:6:8" + }, + "nativeSrc": "6852:43:8", + "nodeType": "YulFunctionCall", + "src": "6852:43:8" + }, + "nativeSrc": "6849:63:8", + "nodeType": "YulIf", + "src": "6849:63:8" + } + ] + }, + "name": "validator_revert_t_uint256", + "nativeSrc": "6796:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6832:5:8", + "nodeType": "YulTypedName", + "src": "6832:5:8", + "type": "" + } + ], + "src": "6796:122:8" + }, + { + "body": { + "nativeSrc": "6987:80:8", + "nodeType": "YulBlock", + "src": "6987:80:8", + "statements": [ + { + "nativeSrc": "6997:22:8", + "nodeType": "YulAssignment", + "src": "6997:22:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "7012:6:8", + "nodeType": "YulIdentifier", + "src": "7012:6:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7006:5:8", + "nodeType": "YulIdentifier", + "src": "7006:5:8" + }, + "nativeSrc": "7006:13:8", + "nodeType": "YulFunctionCall", + "src": "7006:13:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "6997:5:8", + "nodeType": "YulIdentifier", + "src": "6997:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7055:5:8", + "nodeType": "YulIdentifier", + "src": "7055:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nativeSrc": "7028:26:8", + "nodeType": "YulIdentifier", + "src": "7028:26:8" + }, + "nativeSrc": "7028:33:8", + "nodeType": "YulFunctionCall", + "src": "7028:33:8" + }, + "nativeSrc": "7028:33:8", + "nodeType": "YulExpressionStatement", + "src": "7028:33:8" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nativeSrc": "6924:143:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "6965:6:8", + "nodeType": "YulTypedName", + "src": "6965:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "6973:3:8", + "nodeType": "YulTypedName", + "src": "6973:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "6981:5:8", + "nodeType": "YulTypedName", + "src": "6981:5:8", + "type": "" + } + ], + "src": "6924:143:8" + }, + { + "body": { + "nativeSrc": "7150:274:8", + "nodeType": "YulBlock", + "src": "7150:274:8", + "statements": [ + { + "body": { + "nativeSrc": "7196:83:8", + "nodeType": "YulBlock", + "src": "7196:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "7198:77:8", + "nodeType": "YulIdentifier", + "src": "7198:77:8" + }, + "nativeSrc": "7198:79:8", + "nodeType": "YulFunctionCall", + "src": "7198:79:8" + }, + "nativeSrc": "7198:79:8", + "nodeType": "YulExpressionStatement", + "src": "7198:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7171:7:8", + "nodeType": "YulIdentifier", + "src": "7171:7:8" + }, + { + "name": "headStart", + "nativeSrc": "7180:9:8", + "nodeType": "YulIdentifier", + "src": "7180:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7167:3:8", + "nodeType": "YulIdentifier", + "src": "7167:3:8" + }, + "nativeSrc": "7167:23:8", + "nodeType": "YulFunctionCall", + "src": "7167:23:8" + }, + { + "kind": "number", + "nativeSrc": "7192:2:8", + "nodeType": "YulLiteral", + "src": "7192:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7163:3:8", + "nodeType": "YulIdentifier", + "src": "7163:3:8" + }, + "nativeSrc": "7163:32:8", + "nodeType": "YulFunctionCall", + "src": "7163:32:8" + }, + "nativeSrc": "7160:119:8", + "nodeType": "YulIf", + "src": "7160:119:8" + }, + { + "nativeSrc": "7289:128:8", + "nodeType": "YulBlock", + "src": "7289:128:8", + "statements": [ + { + "nativeSrc": "7304:15:8", + "nodeType": "YulVariableDeclaration", + "src": "7304:15:8", + "value": { + "kind": "number", + "nativeSrc": "7318:1:8", + "nodeType": "YulLiteral", + "src": "7318:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7308:6:8", + "nodeType": "YulTypedName", + "src": "7308:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "7333:74:8", + "nodeType": "YulAssignment", + "src": "7333:74:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7379:9:8", + "nodeType": "YulIdentifier", + "src": "7379:9:8" + }, + { + "name": "offset", + "nativeSrc": "7390:6:8", + "nodeType": "YulIdentifier", + "src": "7390:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7375:3:8", + "nodeType": "YulIdentifier", + "src": "7375:3:8" + }, + "nativeSrc": "7375:22:8", + "nodeType": "YulFunctionCall", + "src": "7375:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "7399:7:8", + "nodeType": "YulIdentifier", + "src": "7399:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nativeSrc": "7343:31:8", + "nodeType": "YulIdentifier", + "src": "7343:31:8" + }, + "nativeSrc": "7343:64:8", + "nodeType": "YulFunctionCall", + "src": "7343:64:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7333:6:8", + "nodeType": "YulIdentifier", + "src": "7333:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "7073:351:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7120:9:8", + "nodeType": "YulTypedName", + "src": "7120:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7131:7:8", + "nodeType": "YulTypedName", + "src": "7131:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7143:6:8", + "nodeType": "YulTypedName", + "src": "7143:6:8", + "type": "" + } + ], + "src": "7073:351:8" + }, + { + "body": { + "nativeSrc": "7495:53:8", + "nodeType": "YulBlock", + "src": "7495:53:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7512:3:8", + "nodeType": "YulIdentifier", + "src": "7512:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "7535:5:8", + "nodeType": "YulIdentifier", + "src": "7535:5:8" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "7517:17:8", + "nodeType": "YulIdentifier", + "src": "7517:17:8" + }, + "nativeSrc": "7517:24:8", + "nodeType": "YulFunctionCall", + "src": "7517:24:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7505:6:8", + "nodeType": "YulIdentifier", + "src": "7505:6:8" + }, + "nativeSrc": "7505:37:8", + "nodeType": "YulFunctionCall", + "src": "7505:37:8" + }, + "nativeSrc": "7505:37:8", + "nodeType": "YulExpressionStatement", + "src": "7505:37:8" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "7430:118:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "7483:5:8", + "nodeType": "YulTypedName", + "src": "7483:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "7490:3:8", + "nodeType": "YulTypedName", + "src": "7490:3:8", + "type": "" + } + ], + "src": "7430:118:8" + }, + { + "body": { + "nativeSrc": "7680:206:8", + "nodeType": "YulBlock", + "src": "7680:206:8", + "statements": [ + { + "nativeSrc": "7690:26:8", + "nodeType": "YulAssignment", + "src": "7690:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7702:9:8", + "nodeType": "YulIdentifier", + "src": "7702:9:8" + }, + { + "kind": "number", + "nativeSrc": "7713:2:8", + "nodeType": "YulLiteral", + "src": "7713:2:8", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7698:3:8", + "nodeType": "YulIdentifier", + "src": "7698:3:8" + }, + "nativeSrc": "7698:18:8", + "nodeType": "YulFunctionCall", + "src": "7698:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7690:4:8", + "nodeType": "YulIdentifier", + "src": "7690:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7770:6:8", + "nodeType": "YulIdentifier", + "src": "7770:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7783:9:8", + "nodeType": "YulIdentifier", + "src": "7783:9:8" + }, + { + "kind": "number", + "nativeSrc": "7794:1:8", + "nodeType": "YulLiteral", + "src": "7794:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7779:3:8", + "nodeType": "YulIdentifier", + "src": "7779:3:8" + }, + "nativeSrc": "7779:17:8", + "nodeType": "YulFunctionCall", + "src": "7779:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "7726:43:8", + "nodeType": "YulIdentifier", + "src": "7726:43:8" + }, + "nativeSrc": "7726:71:8", + "nodeType": "YulFunctionCall", + "src": "7726:71:8" + }, + "nativeSrc": "7726:71:8", + "nodeType": "YulExpressionStatement", + "src": "7726:71:8" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "7851:6:8", + "nodeType": "YulIdentifier", + "src": "7851:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7864:9:8", + "nodeType": "YulIdentifier", + "src": "7864:9:8" + }, + { + "kind": "number", + "nativeSrc": "7875:2:8", + "nodeType": "YulLiteral", + "src": "7875:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7860:3:8", + "nodeType": "YulIdentifier", + "src": "7860:3:8" + }, + "nativeSrc": "7860:18:8", + "nodeType": "YulFunctionCall", + "src": "7860:18:8" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "7807:43:8", + "nodeType": "YulIdentifier", + "src": "7807:43:8" + }, + "nativeSrc": "7807:72:8", + "nodeType": "YulFunctionCall", + "src": "7807:72:8" + }, + "nativeSrc": "7807:72:8", + "nodeType": "YulExpressionStatement", + "src": "7807:72:8" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "7554:332:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7644:9:8", + "nodeType": "YulTypedName", + "src": "7644:9:8", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7656:6:8", + "nodeType": "YulTypedName", + "src": "7656:6:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7664:6:8", + "nodeType": "YulTypedName", + "src": "7664:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "7675:4:8", + "nodeType": "YulTypedName", + "src": "7675:4:8", + "type": "" + } + ], + "src": "7554:332:8" + }, + { + "body": { + "nativeSrc": "7981:28:8", + "nodeType": "YulBlock", + "src": "7981:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7998:1:8", + "nodeType": "YulLiteral", + "src": "7998:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8001:1:8", + "nodeType": "YulLiteral", + "src": "8001:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7991:6:8", + "nodeType": "YulIdentifier", + "src": "7991:6:8" + }, + "nativeSrc": "7991:12:8", + "nodeType": "YulFunctionCall", + "src": "7991:12:8" + }, + "nativeSrc": "7991:12:8", + "nodeType": "YulExpressionStatement", + "src": "7991:12:8" + } + ] + }, + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nativeSrc": "7892:117:8", + "nodeType": "YulFunctionDefinition", + "src": "7892:117:8" + }, + { + "body": { + "nativeSrc": "8043:152:8", + "nodeType": "YulBlock", + "src": "8043:152:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8060:1:8", + "nodeType": "YulLiteral", + "src": "8060:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8063:77:8", + "nodeType": "YulLiteral", + "src": "8063:77:8", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8053:6:8", + "nodeType": "YulIdentifier", + "src": "8053:6:8" + }, + "nativeSrc": "8053:88:8", + "nodeType": "YulFunctionCall", + "src": "8053:88:8" + }, + "nativeSrc": "8053:88:8", + "nodeType": "YulExpressionStatement", + "src": "8053:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8157:1:8", + "nodeType": "YulLiteral", + "src": "8157:1:8", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8160:4:8", + "nodeType": "YulLiteral", + "src": "8160:4:8", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8150:6:8", + "nodeType": "YulIdentifier", + "src": "8150:6:8" + }, + "nativeSrc": "8150:15:8", + "nodeType": "YulFunctionCall", + "src": "8150:15:8" + }, + "nativeSrc": "8150:15:8", + "nodeType": "YulExpressionStatement", + "src": "8150:15:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8181:1:8", + "nodeType": "YulLiteral", + "src": "8181:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8184:4:8", + "nodeType": "YulLiteral", + "src": "8184:4:8", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8174:6:8", + "nodeType": "YulIdentifier", + "src": "8174:6:8" + }, + "nativeSrc": "8174:15:8", + "nodeType": "YulFunctionCall", + "src": "8174:15:8" + }, + "nativeSrc": "8174:15:8", + "nodeType": "YulExpressionStatement", + "src": "8174:15:8" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "8015:180:8", + "nodeType": "YulFunctionDefinition", + "src": "8015:180:8" + }, + { + "body": { + "nativeSrc": "8244:238:8", + "nodeType": "YulBlock", + "src": "8244:238:8", + "statements": [ + { + "nativeSrc": "8254:58:8", + "nodeType": "YulVariableDeclaration", + "src": "8254:58:8", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "8276:6:8", + "nodeType": "YulIdentifier", + "src": "8276:6:8" + }, + { + "arguments": [ + { + "name": "size", + "nativeSrc": "8306:4:8", + "nodeType": "YulIdentifier", + "src": "8306:4:8" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nativeSrc": "8284:21:8", + "nodeType": "YulIdentifier", + "src": "8284:21:8" + }, + "nativeSrc": "8284:27:8", + "nodeType": "YulFunctionCall", + "src": "8284:27:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8272:3:8", + "nodeType": "YulIdentifier", + "src": "8272:3:8" + }, + "nativeSrc": "8272:40:8", + "nodeType": "YulFunctionCall", + "src": "8272:40:8" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "8258:10:8", + "nodeType": "YulTypedName", + "src": "8258:10:8", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8423:22:8", + "nodeType": "YulBlock", + "src": "8423:22:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "8425:16:8", + "nodeType": "YulIdentifier", + "src": "8425:16:8" + }, + "nativeSrc": "8425:18:8", + "nodeType": "YulFunctionCall", + "src": "8425:18:8" + }, + "nativeSrc": "8425:18:8", + "nodeType": "YulExpressionStatement", + "src": "8425:18:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "8366:10:8", + "nodeType": "YulIdentifier", + "src": "8366:10:8" + }, + { + "kind": "number", + "nativeSrc": "8378:18:8", + "nodeType": "YulLiteral", + "src": "8378:18:8", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8363:2:8", + "nodeType": "YulIdentifier", + "src": "8363:2:8" + }, + "nativeSrc": "8363:34:8", + "nodeType": "YulFunctionCall", + "src": "8363:34:8" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "8402:10:8", + "nodeType": "YulIdentifier", + "src": "8402:10:8" + }, + { + "name": "memPtr", + "nativeSrc": "8414:6:8", + "nodeType": "YulIdentifier", + "src": "8414:6:8" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8399:2:8", + "nodeType": "YulIdentifier", + "src": "8399:2:8" + }, + "nativeSrc": "8399:22:8", + "nodeType": "YulFunctionCall", + "src": "8399:22:8" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "8360:2:8", + "nodeType": "YulIdentifier", + "src": "8360:2:8" + }, + "nativeSrc": "8360:62:8", + "nodeType": "YulFunctionCall", + "src": "8360:62:8" + }, + "nativeSrc": "8357:88:8", + "nodeType": "YulIf", + "src": "8357:88:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8461:2:8", + "nodeType": "YulLiteral", + "src": "8461:2:8", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "8465:10:8", + "nodeType": "YulIdentifier", + "src": "8465:10:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8454:6:8", + "nodeType": "YulIdentifier", + "src": "8454:6:8" + }, + "nativeSrc": "8454:22:8", + "nodeType": "YulFunctionCall", + "src": "8454:22:8" + }, + "nativeSrc": "8454:22:8", + "nodeType": "YulExpressionStatement", + "src": "8454:22:8" + } + ] + }, + "name": "finalize_allocation", + "nativeSrc": "8201:281:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "8230:6:8", + "nodeType": "YulTypedName", + "src": "8230:6:8", + "type": "" + }, + { + "name": "size", + "nativeSrc": "8238:4:8", + "nodeType": "YulTypedName", + "src": "8238:4:8", + "type": "" + } + ], + "src": "8201:281:8" + }, + { + "body": { + "nativeSrc": "8529:88:8", + "nodeType": "YulBlock", + "src": "8529:88:8", + "statements": [ + { + "nativeSrc": "8539:30:8", + "nodeType": "YulAssignment", + "src": "8539:30:8", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nativeSrc": "8549:18:8", + "nodeType": "YulIdentifier", + "src": "8549:18:8" + }, + "nativeSrc": "8549:20:8", + "nodeType": "YulFunctionCall", + "src": "8549:20:8" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "8539:6:8", + "nodeType": "YulIdentifier", + "src": "8539:6:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "8598:6:8", + "nodeType": "YulIdentifier", + "src": "8598:6:8" + }, + { + "name": "size", + "nativeSrc": "8606:4:8", + "nodeType": "YulIdentifier", + "src": "8606:4:8" + } + ], + "functionName": { + "name": "finalize_allocation", + "nativeSrc": "8578:19:8", + "nodeType": "YulIdentifier", + "src": "8578:19:8" + }, + "nativeSrc": "8578:33:8", + "nodeType": "YulFunctionCall", + "src": "8578:33:8" + }, + "nativeSrc": "8578:33:8", + "nodeType": "YulExpressionStatement", + "src": "8578:33:8" + } + ] + }, + "name": "allocate_memory", + "nativeSrc": "8488:129:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nativeSrc": "8513:4:8", + "nodeType": "YulTypedName", + "src": "8513:4:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "8522:6:8", + "nodeType": "YulTypedName", + "src": "8522:6:8", + "type": "" + } + ], + "src": "8488:129:8" + }, + { + "body": { + "nativeSrc": "8712:28:8", + "nodeType": "YulBlock", + "src": "8712:28:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8729:1:8", + "nodeType": "YulLiteral", + "src": "8729:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8732:1:8", + "nodeType": "YulLiteral", + "src": "8732:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8722:6:8", + "nodeType": "YulIdentifier", + "src": "8722:6:8" + }, + "nativeSrc": "8722:12:8", + "nodeType": "YulFunctionCall", + "src": "8722:12:8" + }, + "nativeSrc": "8722:12:8", + "nodeType": "YulExpressionStatement", + "src": "8722:12:8" + } + ] + }, + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nativeSrc": "8623:117:8", + "nodeType": "YulFunctionDefinition", + "src": "8623:117:8" + }, + { + "body": { + "nativeSrc": "8789:79:8", + "nodeType": "YulBlock", + "src": "8789:79:8", + "statements": [ + { + "body": { + "nativeSrc": "8846:16:8", + "nodeType": "YulBlock", + "src": "8846:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8855:1:8", + "nodeType": "YulLiteral", + "src": "8855:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8858:1:8", + "nodeType": "YulLiteral", + "src": "8858:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8848:6:8", + "nodeType": "YulIdentifier", + "src": "8848:6:8" + }, + "nativeSrc": "8848:12:8", + "nodeType": "YulFunctionCall", + "src": "8848:12:8" + }, + "nativeSrc": "8848:12:8", + "nodeType": "YulExpressionStatement", + "src": "8848:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8812:5:8", + "nodeType": "YulIdentifier", + "src": "8812:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8837:5:8", + "nodeType": "YulIdentifier", + "src": "8837:5:8" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nativeSrc": "8819:17:8", + "nodeType": "YulIdentifier", + "src": "8819:17:8" + }, + "nativeSrc": "8819:24:8", + "nodeType": "YulFunctionCall", + "src": "8819:24:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8809:2:8", + "nodeType": "YulIdentifier", + "src": "8809:2:8" + }, + "nativeSrc": "8809:35:8", + "nodeType": "YulFunctionCall", + "src": "8809:35:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8802:6:8", + "nodeType": "YulIdentifier", + "src": "8802:6:8" + }, + "nativeSrc": "8802:43:8", + "nodeType": "YulFunctionCall", + "src": "8802:43:8" + }, + "nativeSrc": "8799:63:8", + "nodeType": "YulIf", + "src": "8799:63:8" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nativeSrc": "8746:122:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "8782:5:8", + "nodeType": "YulTypedName", + "src": "8782:5:8", + "type": "" + } + ], + "src": "8746:122:8" + }, + { + "body": { + "nativeSrc": "8937:80:8", + "nodeType": "YulBlock", + "src": "8937:80:8", + "statements": [ + { + "nativeSrc": "8947:22:8", + "nodeType": "YulAssignment", + "src": "8947:22:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8962:6:8", + "nodeType": "YulIdentifier", + "src": "8962:6:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8956:5:8", + "nodeType": "YulIdentifier", + "src": "8956:5:8" + }, + "nativeSrc": "8956:13:8", + "nodeType": "YulFunctionCall", + "src": "8956:13:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "8947:5:8", + "nodeType": "YulIdentifier", + "src": "8947:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9005:5:8", + "nodeType": "YulIdentifier", + "src": "9005:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nativeSrc": "8978:26:8", + "nodeType": "YulIdentifier", + "src": "8978:26:8" + }, + "nativeSrc": "8978:33:8", + "nodeType": "YulFunctionCall", + "src": "8978:33:8" + }, + "nativeSrc": "8978:33:8", + "nodeType": "YulExpressionStatement", + "src": "8978:33:8" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nativeSrc": "8874:143:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "8915:6:8", + "nodeType": "YulTypedName", + "src": "8915:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "8923:3:8", + "nodeType": "YulTypedName", + "src": "8923:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "8931:5:8", + "nodeType": "YulTypedName", + "src": "8931:5:8", + "type": "" + } + ], + "src": "8874:143:8" + }, + { + "body": { + "nativeSrc": "9067:48:8", + "nodeType": "YulBlock", + "src": "9067:48:8", + "statements": [ + { + "nativeSrc": "9077:32:8", + "nodeType": "YulAssignment", + "src": "9077:32:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9099:2:8", + "nodeType": "YulLiteral", + "src": "9099:2:8", + "type": "", + "value": "15" + }, + { + "name": "value", + "nativeSrc": "9103:5:8", + "nodeType": "YulIdentifier", + "src": "9103:5:8" + } + ], + "functionName": { + "name": "signextend", + "nativeSrc": "9088:10:8", + "nodeType": "YulIdentifier", + "src": "9088:10:8" + }, + "nativeSrc": "9088:21:8", + "nodeType": "YulFunctionCall", + "src": "9088:21:8" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "9077:7:8", + "nodeType": "YulIdentifier", + "src": "9077:7:8" + } + ] + } + ] + }, + "name": "cleanup_t_int128", + "nativeSrc": "9023:92:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "9049:5:8", + "nodeType": "YulTypedName", + "src": "9049:5:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "9059:7:8", + "nodeType": "YulTypedName", + "src": "9059:7:8", + "type": "" + } + ], + "src": "9023:92:8" + }, + { + "body": { + "nativeSrc": "9163:78:8", + "nodeType": "YulBlock", + "src": "9163:78:8", + "statements": [ + { + "body": { + "nativeSrc": "9219:16:8", + "nodeType": "YulBlock", + "src": "9219:16:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9228:1:8", + "nodeType": "YulLiteral", + "src": "9228:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9231:1:8", + "nodeType": "YulLiteral", + "src": "9231:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9221:6:8", + "nodeType": "YulIdentifier", + "src": "9221:6:8" + }, + "nativeSrc": "9221:12:8", + "nodeType": "YulFunctionCall", + "src": "9221:12:8" + }, + "nativeSrc": "9221:12:8", + "nodeType": "YulExpressionStatement", + "src": "9221:12:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "9186:5:8", + "nodeType": "YulIdentifier", + "src": "9186:5:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "9210:5:8", + "nodeType": "YulIdentifier", + "src": "9210:5:8" + } + ], + "functionName": { + "name": "cleanup_t_int128", + "nativeSrc": "9193:16:8", + "nodeType": "YulIdentifier", + "src": "9193:16:8" + }, + "nativeSrc": "9193:23:8", + "nodeType": "YulFunctionCall", + "src": "9193:23:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "9183:2:8", + "nodeType": "YulIdentifier", + "src": "9183:2:8" + }, + "nativeSrc": "9183:34:8", + "nodeType": "YulFunctionCall", + "src": "9183:34:8" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "9176:6:8", + "nodeType": "YulIdentifier", + "src": "9176:6:8" + }, + "nativeSrc": "9176:42:8", + "nodeType": "YulFunctionCall", + "src": "9176:42:8" + }, + "nativeSrc": "9173:62:8", + "nodeType": "YulIf", + "src": "9173:62:8" + } + ] + }, + "name": "validator_revert_t_int128", + "nativeSrc": "9121:120:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "9156:5:8", + "nodeType": "YulTypedName", + "src": "9156:5:8", + "type": "" + } + ], + "src": "9121:120:8" + }, + { + "body": { + "nativeSrc": "9309:79:8", + "nodeType": "YulBlock", + "src": "9309:79:8", + "statements": [ + { + "nativeSrc": "9319:22:8", + "nodeType": "YulAssignment", + "src": "9319:22:8", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "9334:6:8", + "nodeType": "YulIdentifier", + "src": "9334:6:8" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9328:5:8", + "nodeType": "YulIdentifier", + "src": "9328:5:8" + }, + "nativeSrc": "9328:13:8", + "nodeType": "YulFunctionCall", + "src": "9328:13:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "9319:5:8", + "nodeType": "YulIdentifier", + "src": "9319:5:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9376:5:8", + "nodeType": "YulIdentifier", + "src": "9376:5:8" + } + ], + "functionName": { + "name": "validator_revert_t_int128", + "nativeSrc": "9350:25:8", + "nodeType": "YulIdentifier", + "src": "9350:25:8" + }, + "nativeSrc": "9350:32:8", + "nodeType": "YulFunctionCall", + "src": "9350:32:8" + }, + "nativeSrc": "9350:32:8", + "nodeType": "YulExpressionStatement", + "src": "9350:32:8" + } + ] + }, + "name": "abi_decode_t_int128_fromMemory", + "nativeSrc": "9247:141:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "9287:6:8", + "nodeType": "YulTypedName", + "src": "9287:6:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "9295:3:8", + "nodeType": "YulTypedName", + "src": "9295:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "9303:5:8", + "nodeType": "YulTypedName", + "src": "9303:5:8", + "type": "" + } + ], + "src": "9247:141:8" + }, + { + "body": { + "nativeSrc": "9512:698:8", + "nodeType": "YulBlock", + "src": "9512:698:8", + "statements": [ + { + "body": { + "nativeSrc": "9556:83:8", + "nodeType": "YulBlock", + "src": "9556:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nativeSrc": "9558:77:8", + "nodeType": "YulIdentifier", + "src": "9558:77:8" + }, + "nativeSrc": "9558:79:8", + "nodeType": "YulFunctionCall", + "src": "9558:79:8" + }, + "nativeSrc": "9558:79:8", + "nodeType": "YulExpressionStatement", + "src": "9558:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "9533:3:8", + "nodeType": "YulIdentifier", + "src": "9533:3:8" + }, + { + "name": "headStart", + "nativeSrc": "9538:9:8", + "nodeType": "YulIdentifier", + "src": "9538:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9529:3:8", + "nodeType": "YulIdentifier", + "src": "9529:3:8" + }, + "nativeSrc": "9529:19:8", + "nodeType": "YulFunctionCall", + "src": "9529:19:8" + }, + { + "kind": "number", + "nativeSrc": "9550:4:8", + "nodeType": "YulLiteral", + "src": "9550:4:8", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9525:3:8", + "nodeType": "YulIdentifier", + "src": "9525:3:8" + }, + "nativeSrc": "9525:30:8", + "nodeType": "YulFunctionCall", + "src": "9525:30:8" + }, + "nativeSrc": "9522:117:8", + "nodeType": "YulIf", + "src": "9522:117:8" + }, + { + "nativeSrc": "9648:30:8", + "nodeType": "YulAssignment", + "src": "9648:30:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9673:4:8", + "nodeType": "YulLiteral", + "src": "9673:4:8", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "9657:15:8", + "nodeType": "YulIdentifier", + "src": "9657:15:8" + }, + "nativeSrc": "9657:21:8", + "nodeType": "YulFunctionCall", + "src": "9657:21:8" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "9648:5:8", + "nodeType": "YulIdentifier", + "src": "9648:5:8" + } + ] + }, + { + "nativeSrc": "9688:165:8", + "nodeType": "YulBlock", + "src": "9688:165:8", + "statements": [ + { + "nativeSrc": "9727:15:8", + "nodeType": "YulVariableDeclaration", + "src": "9727:15:8", + "value": { + "kind": "number", + "nativeSrc": "9741:1:8", + "nodeType": "YulLiteral", + "src": "9741:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "9731:6:8", + "nodeType": "YulTypedName", + "src": "9731:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "9767:5:8", + "nodeType": "YulIdentifier", + "src": "9767:5:8" + }, + { + "kind": "number", + "nativeSrc": "9774:4:8", + "nodeType": "YulLiteral", + "src": "9774:4:8", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9763:3:8", + "nodeType": "YulIdentifier", + "src": "9763:3:8" + }, + "nativeSrc": "9763:16:8", + "nodeType": "YulFunctionCall", + "src": "9763:16:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9817:9:8", + "nodeType": "YulIdentifier", + "src": "9817:9:8" + }, + { + "name": "offset", + "nativeSrc": "9828:6:8", + "nodeType": "YulIdentifier", + "src": "9828:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9813:3:8", + "nodeType": "YulIdentifier", + "src": "9813:3:8" + }, + "nativeSrc": "9813:22:8", + "nodeType": "YulFunctionCall", + "src": "9813:22:8" + }, + { + "name": "end", + "nativeSrc": "9837:3:8", + "nodeType": "YulIdentifier", + "src": "9837:3:8" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nativeSrc": "9781:31:8", + "nodeType": "YulIdentifier", + "src": "9781:31:8" + }, + "nativeSrc": "9781:60:8", + "nodeType": "YulFunctionCall", + "src": "9781:60:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9756:6:8", + "nodeType": "YulIdentifier", + "src": "9756:6:8" + }, + "nativeSrc": "9756:86:8", + "nodeType": "YulFunctionCall", + "src": "9756:86:8" + }, + "nativeSrc": "9756:86:8", + "nodeType": "YulExpressionStatement", + "src": "9756:86:8" + } + ] + }, + { + "nativeSrc": "9863:163:8", + "nodeType": "YulBlock", + "src": "9863:163:8", + "statements": [ + { + "nativeSrc": "9900:16:8", + "nodeType": "YulVariableDeclaration", + "src": "9900:16:8", + "value": { + "kind": "number", + "nativeSrc": "9914:2:8", + "nodeType": "YulLiteral", + "src": "9914:2:8", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "9904:6:8", + "nodeType": "YulTypedName", + "src": "9904:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "9941:5:8", + "nodeType": "YulIdentifier", + "src": "9941:5:8" + }, + { + "kind": "number", + "nativeSrc": "9948:4:8", + "nodeType": "YulLiteral", + "src": "9948:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9937:3:8", + "nodeType": "YulIdentifier", + "src": "9937:3:8" + }, + "nativeSrc": "9937:16:8", + "nodeType": "YulFunctionCall", + "src": "9937:16:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9990:9:8", + "nodeType": "YulIdentifier", + "src": "9990:9:8" + }, + { + "name": "offset", + "nativeSrc": "10001:6:8", + "nodeType": "YulIdentifier", + "src": "10001:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9986:3:8", + "nodeType": "YulIdentifier", + "src": "9986:3:8" + }, + "nativeSrc": "9986:22:8", + "nodeType": "YulFunctionCall", + "src": "9986:22:8" + }, + { + "name": "end", + "nativeSrc": "10010:3:8", + "nodeType": "YulIdentifier", + "src": "10010:3:8" + } + ], + "functionName": { + "name": "abi_decode_t_int128_fromMemory", + "nativeSrc": "9955:30:8", + "nodeType": "YulIdentifier", + "src": "9955:30:8" + }, + "nativeSrc": "9955:59:8", + "nodeType": "YulFunctionCall", + "src": "9955:59:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9930:6:8", + "nodeType": "YulIdentifier", + "src": "9930:6:8" + }, + "nativeSrc": "9930:85:8", + "nodeType": "YulFunctionCall", + "src": "9930:85:8" + }, + "nativeSrc": "9930:85:8", + "nodeType": "YulExpressionStatement", + "src": "9930:85:8" + } + ] + }, + { + "nativeSrc": "10036:167:8", + "nodeType": "YulBlock", + "src": "10036:167:8", + "statements": [ + { + "nativeSrc": "10076:16:8", + "nodeType": "YulVariableDeclaration", + "src": "10076:16:8", + "value": { + "kind": "number", + "nativeSrc": "10090:2:8", + "nodeType": "YulLiteral", + "src": "10090:2:8", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10080:6:8", + "nodeType": "YulTypedName", + "src": "10080:6:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10117:5:8", + "nodeType": "YulIdentifier", + "src": "10117:5:8" + }, + { + "kind": "number", + "nativeSrc": "10124:4:8", + "nodeType": "YulLiteral", + "src": "10124:4:8", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10113:3:8", + "nodeType": "YulIdentifier", + "src": "10113:3:8" + }, + "nativeSrc": "10113:16:8", + "nodeType": "YulFunctionCall", + "src": "10113:16:8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10167:9:8", + "nodeType": "YulIdentifier", + "src": "10167:9:8" + }, + { + "name": "offset", + "nativeSrc": "10178:6:8", + "nodeType": "YulIdentifier", + "src": "10178:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10163:3:8", + "nodeType": "YulIdentifier", + "src": "10163:3:8" + }, + "nativeSrc": "10163:22:8", + "nodeType": "YulFunctionCall", + "src": "10163:22:8" + }, + { + "name": "end", + "nativeSrc": "10187:3:8", + "nodeType": "YulIdentifier", + "src": "10187:3:8" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nativeSrc": "10131:31:8", + "nodeType": "YulIdentifier", + "src": "10131:31:8" + }, + "nativeSrc": "10131:60:8", + "nodeType": "YulFunctionCall", + "src": "10131:60:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10106:6:8", + "nodeType": "YulIdentifier", + "src": "10106:6:8" + }, + "nativeSrc": "10106:86:8", + "nodeType": "YulFunctionCall", + "src": "10106:86:8" + }, + "nativeSrc": "10106:86:8", + "nodeType": "YulExpressionStatement", + "src": "10106:86:8" + } + ] + } + ] + }, + "name": "abi_decode_t_struct$_Update_$465_memory_ptr_fromMemory", + "nativeSrc": "9423:787:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9487:9:8", + "nodeType": "YulTypedName", + "src": "9487:9:8", + "type": "" + }, + { + "name": "end", + "nativeSrc": "9498:3:8", + "nodeType": "YulTypedName", + "src": "9498:3:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "9506:5:8", + "nodeType": "YulTypedName", + "src": "9506:5:8", + "type": "" + } + ], + "src": "9423:787:8" + }, + { + "body": { + "nativeSrc": "10316:297:8", + "nodeType": "YulBlock", + "src": "10316:297:8", + "statements": [ + { + "body": { + "nativeSrc": "10362:83:8", + "nodeType": "YulBlock", + "src": "10362:83:8", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "10364:77:8", + "nodeType": "YulIdentifier", + "src": "10364:77:8" + }, + "nativeSrc": "10364:79:8", + "nodeType": "YulFunctionCall", + "src": "10364:79:8" + }, + "nativeSrc": "10364:79:8", + "nodeType": "YulExpressionStatement", + "src": "10364:79:8" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10337:7:8", + "nodeType": "YulIdentifier", + "src": "10337:7:8" + }, + { + "name": "headStart", + "nativeSrc": "10346:9:8", + "nodeType": "YulIdentifier", + "src": "10346:9:8" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10333:3:8", + "nodeType": "YulIdentifier", + "src": "10333:3:8" + }, + "nativeSrc": "10333:23:8", + "nodeType": "YulFunctionCall", + "src": "10333:23:8" + }, + { + "kind": "number", + "nativeSrc": "10358:2:8", + "nodeType": "YulLiteral", + "src": "10358:2:8", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10329:3:8", + "nodeType": "YulIdentifier", + "src": "10329:3:8" + }, + "nativeSrc": "10329:32:8", + "nodeType": "YulFunctionCall", + "src": "10329:32:8" + }, + "nativeSrc": "10326:119:8", + "nodeType": "YulIf", + "src": "10326:119:8" + }, + { + "nativeSrc": "10455:151:8", + "nodeType": "YulBlock", + "src": "10455:151:8", + "statements": [ + { + "nativeSrc": "10470:15:8", + "nodeType": "YulVariableDeclaration", + "src": "10470:15:8", + "value": { + "kind": "number", + "nativeSrc": "10484:1:8", + "nodeType": "YulLiteral", + "src": "10484:1:8", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10474:6:8", + "nodeType": "YulTypedName", + "src": "10474:6:8", + "type": "" + } + ] + }, + { + "nativeSrc": "10499:97:8", + "nodeType": "YulAssignment", + "src": "10499:97:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10568:9:8", + "nodeType": "YulIdentifier", + "src": "10568:9:8" + }, + { + "name": "offset", + "nativeSrc": "10579:6:8", + "nodeType": "YulIdentifier", + "src": "10579:6:8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10564:3:8", + "nodeType": "YulIdentifier", + "src": "10564:3:8" + }, + "nativeSrc": "10564:22:8", + "nodeType": "YulFunctionCall", + "src": "10564:22:8" + }, + { + "name": "dataEnd", + "nativeSrc": "10588:7:8", + "nodeType": "YulIdentifier", + "src": "10588:7:8" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_Update_$465_memory_ptr_fromMemory", + "nativeSrc": "10509:54:8", + "nodeType": "YulIdentifier", + "src": "10509:54:8" + }, + "nativeSrc": "10509:87:8", + "nodeType": "YulFunctionCall", + "src": "10509:87:8" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10499:6:8", + "nodeType": "YulIdentifier", + "src": "10499:6:8" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_Update_$465_memory_ptr_fromMemory", + "nativeSrc": "10216:397:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10286:9:8", + "nodeType": "YulTypedName", + "src": "10286:9:8", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10297:7:8", + "nodeType": "YulTypedName", + "src": "10297:7:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10309:6:8", + "nodeType": "YulTypedName", + "src": "10309:6:8", + "type": "" + } + ], + "src": "10216:397:8" + }, + { + "body": { + "nativeSrc": "10682:52:8", + "nodeType": "YulBlock", + "src": "10682:52:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "10699:3:8", + "nodeType": "YulIdentifier", + "src": "10699:3:8" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10721:5:8", + "nodeType": "YulIdentifier", + "src": "10721:5:8" + } + ], + "functionName": { + "name": "cleanup_t_int128", + "nativeSrc": "10704:16:8", + "nodeType": "YulIdentifier", + "src": "10704:16:8" + }, + "nativeSrc": "10704:23:8", + "nodeType": "YulFunctionCall", + "src": "10704:23:8" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10692:6:8", + "nodeType": "YulIdentifier", + "src": "10692:6:8" + }, + "nativeSrc": "10692:36:8", + "nodeType": "YulFunctionCall", + "src": "10692:36:8" + }, + "nativeSrc": "10692:36:8", + "nodeType": "YulExpressionStatement", + "src": "10692:36:8" + } + ] + }, + "name": "abi_encode_t_int128_to_t_int128_fromStack", + "nativeSrc": "10619:115:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "10670:5:8", + "nodeType": "YulTypedName", + "src": "10670:5:8", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "10677:3:8", + "nodeType": "YulTypedName", + "src": "10677:3:8", + "type": "" + } + ], + "src": "10619:115:8" + }, + { + "body": { + "nativeSrc": "10836:122:8", + "nodeType": "YulBlock", + "src": "10836:122:8", + "statements": [ + { + "nativeSrc": "10846:26:8", + "nodeType": "YulAssignment", + "src": "10846:26:8", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10858:9:8", + "nodeType": "YulIdentifier", + "src": "10858:9:8" + }, + { + "kind": "number", + "nativeSrc": "10869:2:8", + "nodeType": "YulLiteral", + "src": "10869:2:8", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10854:3:8", + "nodeType": "YulIdentifier", + "src": "10854:3:8" + }, + "nativeSrc": "10854:18:8", + "nodeType": "YulFunctionCall", + "src": "10854:18:8" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10846:4:8", + "nodeType": "YulIdentifier", + "src": "10846:4:8" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "10924:6:8", + "nodeType": "YulIdentifier", + "src": "10924:6:8" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10937:9:8", + "nodeType": "YulIdentifier", + "src": "10937:9:8" + }, + { + "kind": "number", + "nativeSrc": "10948:1:8", + "nodeType": "YulLiteral", + "src": "10948:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10933:3:8", + "nodeType": "YulIdentifier", + "src": "10933:3:8" + }, + "nativeSrc": "10933:17:8", + "nodeType": "YulFunctionCall", + "src": "10933:17:8" + } + ], + "functionName": { + "name": "abi_encode_t_int128_to_t_int128_fromStack", + "nativeSrc": "10882:41:8", + "nodeType": "YulIdentifier", + "src": "10882:41:8" + }, + "nativeSrc": "10882:69:8", + "nodeType": "YulFunctionCall", + "src": "10882:69:8" + }, + "nativeSrc": "10882:69:8", + "nodeType": "YulExpressionStatement", + "src": "10882:69:8" + } + ] + }, + "name": "abi_encode_tuple_t_int128__to_t_int128__fromStack_reversed", + "nativeSrc": "10740:218:8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10808:9:8", + "nodeType": "YulTypedName", + "src": "10808:9:8", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10820:6:8", + "nodeType": "YulTypedName", + "src": "10820:6:8", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10831:4:8", + "nodeType": "YulTypedName", + "src": "10831:4:8", + "type": "" + } + ], + "src": "10740:218:8" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes[]\n function abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encodeUpdatedPos_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(value0, value1, pos) -> updatedPos {\n updatedPos := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(value0, value1, pos)\n }\n\n function revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() {\n revert(0, 0)\n }\n\n function revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() {\n revert(0, 0)\n }\n\n function revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() {\n revert(0, 0)\n }\n\n function calldata_access_t_bytes_calldata_ptr(base_ref, ptr) -> value, length {\n let rel_offset_of_tail := calldataload(ptr)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() }\n value := add(rel_offset_of_tail, base_ref)\n\n length := calldataload(value)\n value := add(value, 0x20)\n if gt(length, 0xffffffffffffffff) { revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() }\n if sgt(value, sub(calldatasize(), mul(length, 0x01))) { revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() }\n\n }\n\n function array_nextElement_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes[] -> bytes[]\n function abi_encode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack(value, length, pos) -> end {\n\n pos := array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0, elementValue1 := calldata_access_t_bytes_calldata_ptr(baseRef, srcPtr)\n tail := abi_encodeUpdatedPos_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(elementValue0, elementValue1, tail)\n srcPtr := array_nextElement_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function cleanup_t_int128(value) -> cleaned {\n cleaned := signextend(15, value)\n }\n\n function validator_revert_t_int128(value) {\n if iszero(eq(value, cleanup_t_int128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int128_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int128(value)\n }\n\n // struct Structs.Update\n function abi_decode_t_struct$_Update_$465_memory_ptr_fromMemory(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x60)\n\n {\n // oracleId\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // result\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_int128_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // timestamp\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_uint256_fromMemory(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_struct$_Update_$465_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_struct$_Update_$465_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_int128_to_t_int128_fromStack(value, pos) {\n mstore(pos, cleanup_t_int128(value))\n }\n\n function abi_encode_tuple_t_int128__to_t_int128__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int128_to_t_int128_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 8, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100345760003560e01c80634115ea08146100395780635c40450c14610055578063e800044c14610080575b600080fd5b610053600480360381019061004e9190610392565b6100ab565b005b34801561006157600080fd5b5061006a61030d565b60405161007791906103f8565b60405180910390f35b34801561008c57600080fd5b50610095610313565b6040516100a2919061042c565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a7d3fa684846040518363ffffffff1660e01b81526004016101099291906105cb565b602060405180830381865afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a9190610625565b9050803410156101935780346040517fa458261b00000000000000000000000000000000000000000000000000000000815260040161018a929190610661565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc36c0a98285856040518463ffffffff1660e01b81526004016101ef9291906105cb565b6000604051808303818588803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f0fce96001546040518263ffffffff1660e01b815260040161027f91906103f8565b606060405180830381865afa15801561029c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c091906107d3565b60200151905080600f0b6002819055507feae3a8ceb0a2895368d0a619e49a705fc9957c7617876b58566df6468cdb33a8816040516102ff919061080f565b60405180910390a150505050565b60015481565b60025481565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126103525761035161032d565b5b8235905067ffffffffffffffff81111561036f5761036e610332565b5b60208301915083602082028301111561038b5761038a610337565b5b9250929050565b600080602083850312156103a9576103a8610323565b5b600083013567ffffffffffffffff8111156103c7576103c6610328565b5b6103d38582860161033c565b92509250509250929050565b6000819050919050565b6103f2816103df565b82525050565b600060208201905061040d60008301846103e9565b92915050565b6000819050919050565b61042681610413565b82525050565b6000602082019050610441600083018461041d565b92915050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061049f8385610462565b93506104ac838584610473565b6104b583610482565b840190509392505050565b60006104cd848484610493565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610502576105016104e0565b5b83810192508235915060208301925067ffffffffffffffff82111561052a576105296104d6565b5b6001820236038313156105405761053f6104db565b5b509250929050565b6000602082019050919050565b60006105618385610447565b93508360208402850161057384610458565b8060005b878110156105b957848403895261058e82846104e5565b6105998682846104c0565b95506105a484610548565b935060208b019a505050600181019050610577565b50829750879450505050509392505050565b600060208201905081810360008301526105e6818486610555565b90509392505050565b6000819050919050565b610602816105ef565b811461060d57600080fd5b50565b60008151905061061f816105f9565b92915050565b60006020828403121561063b5761063a610323565b5b600061064984828501610610565b91505092915050565b61065b816105ef565b82525050565b60006040820190506106766000830185610652565b6106836020830184610652565b9392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106c782610482565b810181811067ffffffffffffffff821117156106e6576106e561068f565b5b80604052505050565b60006106f9610319565b905061070582826106be565b919050565b610713816103df565b811461071e57600080fd5b50565b6000815190506107308161070a565b92915050565b600081600f0b9050919050565b61074c81610736565b811461075757600080fd5b50565b60008151905061076981610743565b92915050565b6000606082840312156107855761078461068a565b5b61078f60606106ef565b9050600061079f84828501610721565b60008301525060206107b38482850161075a565b60208301525060406107c784828501610610565b60408301525092915050565b6000606082840312156107e9576107e8610323565b5b60006107f78482850161076f565b91505092915050565b61080981610736565b82525050565b60006020820190506108246000830184610800565b9291505056fea264697066735822122061d1c68ba489bf272622ade681bb705c5105d2d0e61fad26ea647d5af13b9e7564736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4115EA08 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0x5C40450C EQ PUSH2 0x55 JUMPI DUP1 PUSH4 0xE800044C EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E SWAP2 SWAP1 PUSH2 0x392 JUMP JUMPDEST PUSH2 0xAB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A PUSH2 0x30D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x77 SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x95 PUSH2 0x313 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8A7D3FA6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x109 SWAP3 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x126 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x193 JUMPI DUP1 CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xA458261B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18A SWAP3 SWAP2 SWAP1 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC36C0A9 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP3 SWAP2 SWAP1 PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF0F0FCE9 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27F SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0 SWAP2 SWAP1 PUSH2 0x7D3 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP DUP1 PUSH1 0xF SIGNEXTEND PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH32 0xEAE3A8CEB0A2895368D0A619E49A705FC9957C7617876B58566DF6468CDB33A8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x352 JUMPI PUSH2 0x351 PUSH2 0x32D JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36F JUMPI PUSH2 0x36E PUSH2 0x332 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x38B JUMPI PUSH2 0x38A PUSH2 0x337 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3A9 JUMPI PUSH2 0x3A8 PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C6 PUSH2 0x328 JUMP JUMPDEST JUMPDEST PUSH2 0x3D3 DUP6 DUP3 DUP7 ADD PUSH2 0x33C JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F2 DUP2 PUSH2 0x3DF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x40D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x426 DUP2 PUSH2 0x413 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x441 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x41D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49F DUP4 DUP6 PUSH2 0x462 JUMP JUMPDEST SWAP4 POP PUSH2 0x4AC DUP4 DUP6 DUP5 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x4B5 DUP4 PUSH2 0x482 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CD DUP5 DUP5 DUP5 PUSH2 0x493 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x502 JUMPI PUSH2 0x501 PUSH2 0x4E0 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A JUMPI PUSH2 0x529 PUSH2 0x4D6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x540 JUMPI PUSH2 0x53F PUSH2 0x4DB JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 DUP4 DUP6 PUSH2 0x447 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP5 MUL DUP6 ADD PUSH2 0x573 DUP5 PUSH2 0x458 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5B9 JUMPI DUP5 DUP5 SUB DUP10 MSTORE PUSH2 0x58E DUP3 DUP5 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x599 DUP7 DUP3 DUP5 PUSH2 0x4C0 JUMP JUMPDEST SWAP6 POP PUSH2 0x5A4 DUP5 PUSH2 0x548 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP12 ADD SWAP11 POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x577 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5E6 DUP2 DUP5 DUP7 PUSH2 0x555 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x602 DUP2 PUSH2 0x5EF JUMP JUMPDEST DUP2 EQ PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x61F DUP2 PUSH2 0x5F9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63B JUMPI PUSH2 0x63A PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x649 DUP5 DUP3 DUP6 ADD PUSH2 0x610 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x65B DUP2 PUSH2 0x5EF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x676 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x652 JUMP JUMPDEST PUSH2 0x683 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x652 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6C7 DUP3 PUSH2 0x482 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x6E6 JUMPI PUSH2 0x6E5 PUSH2 0x68F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F9 PUSH2 0x319 JUMP JUMPDEST SWAP1 POP PUSH2 0x705 DUP3 DUP3 PUSH2 0x6BE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x713 DUP2 PUSH2 0x3DF JUMP JUMPDEST DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x730 DUP2 PUSH2 0x70A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x74C DUP2 PUSH2 0x736 JUMP JUMPDEST DUP2 EQ PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x769 DUP2 PUSH2 0x743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x785 JUMPI PUSH2 0x784 PUSH2 0x68A JUMP JUMPDEST JUMPDEST PUSH2 0x78F PUSH1 0x60 PUSH2 0x6EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x79F DUP5 DUP3 DUP6 ADD PUSH2 0x721 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x7B3 DUP5 DUP3 DUP6 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x7C7 DUP5 DUP3 DUP6 ADD PUSH2 0x610 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7E9 JUMPI PUSH2 0x7E8 PUSH2 0x323 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x7F7 DUP5 DUP3 DUP6 ADD PUSH2 0x76F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x809 DUP2 PUSH2 0x736 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x824 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x800 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xD1C6 DUP12 LOG4 DUP10 0xBF 0x27 0x26 0x22 0xAD 0xE6 DUP2 0xBB PUSH17 0x5C5105D2D0E61FAD26EA647D5AF13B9E75 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "147:2333:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:898;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;266:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;344:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1580:898;1757:11;1771;;;;;;;;;;;:18;;;1790:7;;1771:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1757:41;;1824:3;1812:9;:15;1808:84;;;1866:3;1871:9;1850:31;;;;;;;;;;;;:::i;:::-;;;;;;;;1808:84;1960:11;;;;;;;;;;:23;;;1991:3;1996:7;;1960:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:13;2309:11;;;;;;;;;;;:24;;;2334:12;;2309:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;2293:61;;2385:6;2365:26;;:17;:26;;;;2455:16;2464:6;2455:16;;;;;;:::i;:::-;;;;;;;;1642:836;;1580:898;;:::o;266:27::-;;;;:::o;344:31::-;;;;:::o;7:75:8:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;718:579;802:8;812:6;862:3;855:4;847:6;843:17;839:27;829:122;;870:79;;:::i;:::-;829:122;983:6;970:20;960:30;;1013:18;1005:6;1002:30;999:117;;;1035:79;;:::i;:::-;999:117;1149:4;1141:6;1137:17;1125:29;;1203:3;1195:4;1187:6;1183:17;1173:8;1169:32;1166:41;1163:128;;;1210:79;;:::i;:::-;1163:128;718:579;;;;;:::o;1303:581::-;1400:6;1408;1457:2;1445:9;1436:7;1432:23;1428:32;1425:119;;;1463:79;;:::i;:::-;1425:119;1611:1;1600:9;1596:17;1583:31;1641:18;1633:6;1630:30;1627:117;;;1663:79;;:::i;:::-;1627:117;1776:91;1859:7;1850:6;1839:9;1835:22;1776:91;:::i;:::-;1758:109;;;;1554:323;1303:581;;;;;:::o;1890:77::-;1927:7;1956:5;1945:16;;1890:77;;;:::o;1973:118::-;2060:24;2078:5;2060:24;:::i;:::-;2055:3;2048:37;1973:118;;:::o;2097:222::-;2190:4;2228:2;2217:9;2213:18;2205:26;;2241:71;2309:1;2298:9;2294:17;2285:6;2241:71;:::i;:::-;2097:222;;;;:::o;2325:76::-;2361:7;2390:5;2379:16;;2325:76;;;:::o;2407:115::-;2492:23;2509:5;2492:23;:::i;:::-;2487:3;2480:36;2407:115;;:::o;2528:218::-;2619:4;2657:2;2646:9;2642:18;2634:26;;2670:69;2736:1;2725:9;2721:17;2712:6;2670:69;:::i;:::-;2528:218;;;;:::o;2752:193::-;2860:11;2894:6;2889:3;2882:19;2934:4;2929:3;2925:14;2910:29;;2752:193;;;;:::o;2951:113::-;3031:4;3054:3;3046:11;;2951:113;;;:::o;3070:158::-;3143:11;3177:6;3172:3;3165:19;3217:4;3212:3;3208:14;3193:29;;3070:158;;;;:::o;3234:146::-;3331:6;3326:3;3321;3308:30;3372:1;3363:6;3358:3;3354:16;3347:27;3234:146;;;:::o;3386:102::-;3427:6;3478:2;3474:7;3469:2;3462:5;3458:14;3454:28;3444:38;;3386:102;;;:::o;3516:294::-;3602:3;3623:60;3676:6;3671:3;3623:60;:::i;:::-;3616:67;;3693:56;3742:6;3737:3;3730:5;3693:56;:::i;:::-;3774:29;3796:6;3774:29;:::i;:::-;3769:3;3765:39;3758:46;;3516:294;;;;;:::o;3816:212::-;3913:10;3948:74;4018:3;4010:6;4002;3948:74;:::i;:::-;3934:88;;3816:212;;;;;:::o;4034:117::-;4143:1;4140;4133:12;4157:117;4266:1;4263;4256:12;4280:117;4389:1;4386;4379:12;4403:711;4467:5;4474:6;4530:3;4517:17;4622:1;4616:4;4612:12;4601:8;4585:14;4581:29;4577:48;4557:18;4553:73;4543:168;;4630:79;;:::i;:::-;4543:168;4753:8;4733:18;4729:33;4720:42;;4795:5;4782:19;4772:29;;4830:4;4823:5;4819:16;4810:25;;4858:18;4850:6;4847:30;4844:117;;;4880:79;;:::i;:::-;4844:117;5016:4;5008:6;5004:17;4988:14;4984:38;4977:5;4973:50;4970:137;;;5026:79;;:::i;:::-;4970:137;4481:633;4403:711;;;;;:::o;5120:126::-;5203:4;5235;5230:3;5226:14;5218:22;;5120:126;;;:::o;5278:990::-;5427:3;5450:95;5538:6;5533:3;5450:95;:::i;:::-;5443:102;;5571:3;5616:4;5608:6;5604:17;5599:3;5595:27;5646:69;5709:5;5646:69;:::i;:::-;5738:7;5769:1;5754:469;5779:6;5776:1;5773:13;5754:469;;;5850:9;5844:4;5840:20;5835:3;5828:33;5910:53;5956:6;5947:7;5910:53;:::i;:::-;5984:99;6078:4;6063:13;6048;5984:99;:::i;:::-;5976:107;;6106:73;6172:6;6106:73;:::i;:::-;6096:83;;6208:4;6203:3;6199:14;6192:21;;5814:409;;5801:1;5798;5794:9;5789:14;;5754:469;;;5758:14;6239:4;6232:11;;6259:3;6252:10;;5432:836;;;;5278:990;;;;;:::o;6274:433::-;6447:4;6485:2;6474:9;6470:18;6462:26;;6534:9;6528:4;6524:20;6520:1;6509:9;6505:17;6498:47;6562:138;6695:4;6686:6;6678;6562:138;:::i;:::-;6554:146;;6274:433;;;;;:::o;6713:77::-;6750:7;6779:5;6768:16;;6713:77;;;:::o;6796:122::-;6869:24;6887:5;6869:24;:::i;:::-;6862:5;6859:35;6849:63;;6908:1;6905;6898:12;6849:63;6796:122;:::o;6924:143::-;6981:5;7012:6;7006:13;6997:22;;7028:33;7055:5;7028:33;:::i;:::-;6924:143;;;;:::o;7073:351::-;7143:6;7192:2;7180:9;7171:7;7167:23;7163:32;7160:119;;;7198:79;;:::i;:::-;7160:119;7318:1;7343:64;7399:7;7390:6;7379:9;7375:22;7343:64;:::i;:::-;7333:74;;7289:128;7073:351;;;;:::o;7430:118::-;7517:24;7535:5;7517:24;:::i;:::-;7512:3;7505:37;7430:118;;:::o;7554:332::-;7675:4;7713:2;7702:9;7698:18;7690:26;;7726:71;7794:1;7783:9;7779:17;7770:6;7726:71;:::i;:::-;7807:72;7875:2;7864:9;7860:18;7851:6;7807:72;:::i;:::-;7554:332;;;;;:::o;7892:117::-;8001:1;7998;7991:12;8015:180;8063:77;8060:1;8053:88;8160:4;8157:1;8150:15;8184:4;8181:1;8174:15;8201:281;8284:27;8306:4;8284:27;:::i;:::-;8276:6;8272:40;8414:6;8402:10;8399:22;8378:18;8366:10;8363:34;8360:62;8357:88;;;8425:18;;:::i;:::-;8357:88;8465:10;8461:2;8454:22;8244:238;8201:281;;:::o;8488:129::-;8522:6;8549:20;;:::i;:::-;8539:30;;8578:33;8606:4;8598:6;8578:33;:::i;:::-;8488:129;;;:::o;8746:122::-;8819:24;8837:5;8819:24;:::i;:::-;8812:5;8809:35;8799:63;;8858:1;8855;8848:12;8799:63;8746:122;:::o;8874:143::-;8931:5;8962:6;8956:13;8947:22;;8978:33;9005:5;8978:33;:::i;:::-;8874:143;;;;:::o;9023:92::-;9059:7;9103:5;9099:2;9088:21;9077:32;;9023:92;;;:::o;9121:120::-;9193:23;9210:5;9193:23;:::i;:::-;9186:5;9183:34;9173:62;;9231:1;9228;9221:12;9173:62;9121:120;:::o;9247:141::-;9303:5;9334:6;9328:13;9319:22;;9350:32;9376:5;9350:32;:::i;:::-;9247:141;;;;:::o;9423:787::-;9506:5;9550:4;9538:9;9533:3;9529:19;9525:30;9522:117;;;9558:79;;:::i;:::-;9522:117;9657:21;9673:4;9657:21;:::i;:::-;9648:30;;9741:1;9781:60;9837:3;9828:6;9817:9;9813:22;9781:60;:::i;:::-;9774:4;9767:5;9763:16;9756:86;9688:165;9914:2;9955:59;10010:3;10001:6;9990:9;9986:22;9955:59;:::i;:::-;9948:4;9941:5;9937:16;9930:85;9863:163;10090:2;10131:60;10187:3;10178:6;10167:9;10163:22;10131:60;:::i;:::-;10124:4;10117:5;10113:16;10106:86;10036:167;9423:787;;;;:::o;10216:397::-;10309:6;10358:2;10346:9;10337:7;10333:23;10329:32;10326:119;;;10364:79;;:::i;:::-;10326:119;10484:1;10509:87;10588:7;10579:6;10568:9;10564:22;10509:87;:::i;:::-;10499:97;;10455:151;10216:397;;;;:::o;10619:115::-;10704:23;10721:5;10704:23;:::i;:::-;10699:3;10692:36;10619:115;;:::o;10740:218::-;10831:4;10869:2;10858:9;10854:18;10846:26;;10882:69;10948:1;10937:9;10933:17;10924:6;10882:69;:::i;:::-;10740:218;;;;:::o" + }, + "methodIdentifiers": { + "aggregatorId()": "5c40450c", + "getFeedData(bytes[])": "4115ea08", + "latestTemperature()": "e800044c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_switchboard\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_aggregatorId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"}],\"name\":\"InsufficientFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"result\",\"type\":\"int128\"}],\"name\":\"InvalidResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"temperature\",\"type\":\"int128\"}],\"name\":\"FeedData\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"aggregatorId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"updates\",\"type\":\"bytes[]\"}],\"name\":\"getFeedData\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestTemperature\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_aggregatorId\":\"The feed ID for the feed you want to query\",\"_switchboard\":\"The address of the Switchboard contract\"}},\"getFeedData(bytes[])\":{\"params\":{\"updates\":\"Encoded feed updates to update the contract with the latest result\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getFeedData(bytes[])\":{\"notice\":\"getFeedData is a function that uses an encoded Switchboard update If the update is successful, it will read the latest temperature from the feed See below for fetching encoded updates (e.g., using the Switchboard Typescript SDK)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TemperatureFeed.sol\":\"TemperatureFeed\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@switchboard-xyz/on-demand-solidity/ISwitchboard.sol\":{\"keccak256\":\"0x917c1c895984e531a6941f84397abe8282bd43483491644886e208afe179a677\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2970229e842ce6965e65a60b30346329114682db8033c7f821f7b9ac44bdf07e\",\"dweb:/ipfs/QmVDKARNY7xr18Khz25E5jwSkoFhf4syJFSxKtkMTu5iDq\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IAggregatorModule.sol\":{\"keccak256\":\"0x680978b88274eddf6aa7c5a210e296b3d13bac7964e63cc0da2140007ba26882\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://277c1390cc387e254fd7c36cbb156c183d3bc17394a7015b09d605faeb301dfc\",\"dweb:/ipfs/QmWEg7uDz8JVgyyCxXWwTWj999j54nk7E9Gk4isqN7tgmb\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IOracleModule.sol\":{\"keccak256\":\"0xc958d6038bdbfd8d12661263db9bcb5788e156b743a8b3c9f8b7ea71d47217fe\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a1813ec94a6a160aa36b4a9a7fae3f522bcce59dc62ae846a024d02a034ebc7\",\"dweb:/ipfs/QmcDxsoYmUEpMfv6H56n71Qhx7hJCAJj81DvGXZzRUtbKK\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IQueueModule.sol\":{\"keccak256\":\"0x69d16e9924475e2d019ea5f10aa8496ab777dd749342a6d391c0b9a8296701d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ab057024f9c59570164511285a06e7a9f033563a3699de863a60c8a106808c65\",\"dweb:/ipfs/QmTz9Xv4Ykfzk67e6Wfy8v7CppWj8phkkdkmkAfsn9kQmx\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/IRandomnessModule.sol\":{\"keccak256\":\"0xdb92bc4ecc7a23bf47558712cb61e99208c3dc68cfe30fcab15841c9e746371f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://853223c4b829e6516f6801d73bfb125e0dec3f4be7dafbfc707b95e581e92f45\",\"dweb:/ipfs/QmR1nB5Nv5y6nyJuAhqGkeKq3UfcGhAwu5kxAED7b6YBp4\"]},\"@switchboard-xyz/on-demand-solidity/interfaces/ISwitchboardModule.sol\":{\"keccak256\":\"0xf3ade458a150d41b861500f326c5ea4f3ac2f3d408961b4cb0afc2eb9ef0fe90\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a4bb4b61d7ea45a7ac7d6b77cdfb18ba53933d47ecc2b515f90d0b2f81a82e6a\",\"dweb:/ipfs/QmQrF7DsAk7sqY28xxGngi3VXZY6AjSdVZDHAv2TwEqh9k\"]},\"@switchboard-xyz/on-demand-solidity/structs/Structs.sol\":{\"keccak256\":\"0xf4df26289c2798c0314d14305e96fc3d3043b0fb8d8ce94f398b8ddb3e8fe1f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://506651724e90e3b96c469a7bd92b86ed4d0cdf1eb2908f292058ede36c66316a\",\"dweb:/ipfs/Qmc6x6W7ARdcgHmf4Uuh6CX1zgSgaDC9yJE9ntFmCiMhf1\"]},\"contracts/TemperatureFeed.sol\":{\"keccak256\":\"0x033039295bd85e90d05d4c93d44676dde4282848c982373cc65f7d2f70553c82\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6995005997bbefc8a3c70ccfe94a10bf1b4861d1e7706522b63384c761d8b563\",\"dweb:/ipfs/QmVgRTHD1oJw6WeKt35jgBQN8ya1oCUGcWMskJhcsmpe64\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/temperature-feed/ignition/deployments/chain-42161/deployed_addresses.json b/temperature-feed/ignition/deployments/chain-42161/deployed_addresses.json new file mode 100644 index 0000000..8206c94 --- /dev/null +++ b/temperature-feed/ignition/deployments/chain-42161/deployed_addresses.json @@ -0,0 +1,3 @@ +{ + "TemperatureFeedModule#TemperatureFeed": "0x0739C2739EfC27f58c94bcc85F2c0e4D7Eb8e29d" +} diff --git a/temperature-feed/ignition/deployments/chain-42161/journal.jsonl b/temperature-feed/ignition/deployments/chain-42161/journal.jsonl new file mode 100644 index 0000000..8229118 --- /dev/null +++ b/temperature-feed/ignition/deployments/chain-42161/journal.jsonl @@ -0,0 +1,7 @@ + +{"chainId":42161,"type":"DEPLOYMENT_INITIALIZE"} +{"artifactId":"TemperatureFeedModule#TemperatureFeed","constructorArgs":["0xAd9b8604b6B97187CDe9E826cDeB7033C8C37198","0x4c31f917ff41cbaad0b018771df374e665982505d3ff9b55b21529aedff5cefe"],"contractName":"TemperatureFeed","dependencies":[],"from":"0x127f24013caadf770f4b514c86344dd4f38d80c2","futureId":"TemperatureFeedModule#TemperatureFeed","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"TemperatureFeedModule#TemperatureFeed","networkInteraction":{"data":"0x608060405234801561001057600080fd5b506040516109c83803806109c883398181016040528101906100329190610119565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055505050610159565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100b082610085565b9050919050565b6100c0816100a5565b81146100cb57600080fd5b50565b6000815190506100dd816100b7565b92915050565b6000819050919050565b6100f6816100e3565b811461010157600080fd5b50565b600081519050610113816100ed565b92915050565b600080604083850312156101305761012f610080565b5b600061013e858286016100ce565b925050602061014f85828601610104565b9150509250929050565b610860806101686000396000f3fe6080604052600436106100345760003560e01c80634115ea08146100395780635c40450c14610055578063e800044c14610080575b600080fd5b610053600480360381019061004e9190610392565b6100ab565b005b34801561006157600080fd5b5061006a61030d565b60405161007791906103f8565b60405180910390f35b34801561008c57600080fd5b50610095610313565b6040516100a2919061042c565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a7d3fa684846040518363ffffffff1660e01b81526004016101099291906105cb565b602060405180830381865afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a9190610625565b9050803410156101935780346040517fa458261b00000000000000000000000000000000000000000000000000000000815260040161018a929190610661565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc36c0a98285856040518463ffffffff1660e01b81526004016101ef9291906105cb565b6000604051808303818588803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f0fce96001546040518263ffffffff1660e01b815260040161027f91906103f8565b606060405180830381865afa15801561029c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c091906107d3565b60200151905080600f0b6002819055507feae3a8ceb0a2895368d0a619e49a705fc9957c7617876b58566df6468cdb33a8816040516102ff919061080f565b60405180910390a150505050565b60015481565b60025481565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126103525761035161032d565b5b8235905067ffffffffffffffff81111561036f5761036e610332565b5b60208301915083602082028301111561038b5761038a610337565b5b9250929050565b600080602083850312156103a9576103a8610323565b5b600083013567ffffffffffffffff8111156103c7576103c6610328565b5b6103d38582860161033c565b92509250509250929050565b6000819050919050565b6103f2816103df565b82525050565b600060208201905061040d60008301846103e9565b92915050565b6000819050919050565b61042681610413565b82525050565b6000602082019050610441600083018461041d565b92915050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061049f8385610462565b93506104ac838584610473565b6104b583610482565b840190509392505050565b60006104cd848484610493565b90509392505050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610502576105016104e0565b5b83810192508235915060208301925067ffffffffffffffff82111561052a576105296104d6565b5b6001820236038313156105405761053f6104db565b5b509250929050565b6000602082019050919050565b60006105618385610447565b93508360208402850161057384610458565b8060005b878110156105b957848403895261058e82846104e5565b6105998682846104c0565b95506105a484610548565b935060208b019a505050600181019050610577565b50829750879450505050509392505050565b600060208201905081810360008301526105e6818486610555565b90509392505050565b6000819050919050565b610602816105ef565b811461060d57600080fd5b50565b60008151905061061f816105f9565b92915050565b60006020828403121561063b5761063a610323565b5b600061064984828501610610565b91505092915050565b61065b816105ef565b82525050565b60006040820190506106766000830185610652565b6106836020830184610652565b9392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106c782610482565b810181811067ffffffffffffffff821117156106e6576106e561068f565b5b80604052505050565b60006106f9610319565b905061070582826106be565b919050565b610713816103df565b811461071e57600080fd5b50565b6000815190506107308161070a565b92915050565b600081600f0b9050919050565b61074c81610736565b811461075757600080fd5b50565b60008151905061076981610743565b92915050565b6000606082840312156107855761078461068a565b5b61078f60606106ef565b9050600061079f84828501610721565b60008301525060206107b38482850161075a565b60208301525060406107c784828501610610565b60408301525092915050565b6000606082840312156107e9576107e8610323565b5b60006107f78482850161076f565b91505092915050565b61080981610736565b82525050565b60006020820190506108246000830184610800565b9291505056fea264697066735822122061d1c68ba489bf272622ade681bb705c5105d2d0e61fad26ea647d5af13b9e7564736f6c63430008180033000000000000000000000000ad9b8604b6b97187cde9e826cdeb7033c8c371984c31f917ff41cbaad0b018771df374e665982505d3ff9b55b21529aedff5cefe","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"TemperatureFeedModule#TemperatureFeed","networkInteractionId":1,"nonce":207,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"20000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0xd9a7c642b9915b229dba48bbbb80e7b9191dba9a46de2bb469f679931c0e322d"},"type":"TRANSACTION_SEND"} +{"futureId":"TemperatureFeedModule#TemperatureFeed","hash":"0xd9a7c642b9915b229dba48bbbb80e7b9191dba9a46de2bb469f679931c0e322d","networkInteractionId":1,"receipt":{"blockHash":"0x65dfe0cdfcfa0b75e50d03959813806060e88f56116e59a35a23056d26831be8","blockNumber":238427228,"contractAddress":"0x0739C2739EfC27f58c94bcc85F2c0e4D7Eb8e29d","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"TemperatureFeedModule#TemperatureFeed","result":{"address":"0x0739C2739EfC27f58c94bcc85F2c0e4D7Eb8e29d","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} \ No newline at end of file diff --git a/temperature-feed/ignition/modules/TemperatureFeed.cts b/temperature-feed/ignition/modules/TemperatureFeed.cts new file mode 100644 index 0000000..ea845a0 --- /dev/null +++ b/temperature-feed/ignition/modules/TemperatureFeed.cts @@ -0,0 +1,20 @@ +import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; + +const SWITCHBOARD_CONTRACT_ADDRESS = process.env.SWITCHBOARD_CONTRACT_ADDRESS; +if (!SWITCHBOARD_CONTRACT_ADDRESS) { + throw new Error("Missing SWITCHBOARD_CONTRACT_ADDRESS"); +} + +const AGGREGATOR_ID = process.env.AGGREGATOR_ID; +if (!AGGREGATOR_ID) { + throw new Error("Missing AGGREGATOR_ID"); +} + +export default buildModule("TemperatureFeedModule", (m) => { + const temperatureFeed = m.contract("TemperatureFeed", [ + SWITCHBOARD_CONTRACT_ADDRESS, + AGGREGATOR_ID, + ]); + + return { temperatureFeed }; +}); diff --git a/temperature-feed/index.ts b/temperature-feed/index.ts new file mode 100644 index 0000000..3f913e7 --- /dev/null +++ b/temperature-feed/index.ts @@ -0,0 +1,55 @@ +import { CrossbarClient } from "@switchboard-xyz/on-demand"; +import * as ethers from "ethers"; +import * as fs from "fs"; + +const chainId = process.env.CHAIN_ID as string; +if (!chainId) { + throw new Error("Missing CHAIN_ID"); +} + +const address = process.env.DEPLOYED_CONTRACT_ADDRESS as string; +if (!address) { + throw new Error("Missing DEPLOYED_CONTRACT_ADDRESS"); +} + +const privateKey = process.env.PRIVATE_KEY as string; +if (!privateKey) { + throw new Error("Missing PRIVATE_KEY"); +} + +const rpcURL = process.env.RPC_URL as string; +if (!rpcURL) { + throw new Error("Missing RPC_URL"); +} + +const provider = new ethers.JsonRpcProvider(rpcURL); + +const signerWithProvider = new ethers.Wallet(privateKey, provider); + +const ABI = [ + "function getFeedData(bytes[] calldata updates) public payable", + "function aggregatorId() public view returns (bytes32)", + "function latestTemperature() public view returns (int256)", +]; + +const crossbar = new CrossbarClient(`https://crossbar.switchboard.xyz`); + +const exampleContract = new ethers.Contract(address, ABI, signerWithProvider); + +const { results, encoded } = await crossbar.fetchEVMResults({ + chainId: parseInt(chainId), + aggregatorIds: [await exampleContract.aggregatorId()], +}); + +console.log(results); + +const tx = await exampleContract.getFeedData(encoded); + +console.log(tx); + +console.log("Transaction completed!"); + +console.log( + "Value stored in contract: ", + await exampleContract.latestTemperature() +); diff --git a/temperature-feed/package.json b/temperature-feed/package.json new file mode 100644 index 0000000..b96dd10 --- /dev/null +++ b/temperature-feed/package.json @@ -0,0 +1,13 @@ +{ + "name": "hardhat-project", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@switchboard-xyz/on-demand-solidity": "^0.0.4", + "hardhat": "^2.22.7" + }, + "dependencies": { + "@switchboard-xyz/on-demand": "^1.2.16", + "dotenv": "^16.4.5" + } +} diff --git a/temperature-feed/tsconfig.json b/temperature-feed/tsconfig.json new file mode 100644 index 0000000..d767ed3 --- /dev/null +++ b/temperature-feed/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "es2022", + "module": "node16", + "moduleDetection": "auto", + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + // Use node16 or nodenext for modern module resolution + "moduleResolution": "node16", + "noEmit": true, + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + }, + "ts-node": { + "experimentalResolver": true + } +}