diff --git a/.env.example b/.env.example index 09c97515..168d405a 100644 --- a/.env.example +++ b/.env.example @@ -3,3 +3,7 @@ RINKEBY_URL= GOERLI_URL= PRIVATE_KEY= REPORT_GAS=true + +# Get an API key here if you want to see USD prices in test reports +# https://pro.coinmarketcap.com/signup +COINMARKETCAP_API_KEY=abcdefg-1234-5678-90ab-cdefghijklmn diff --git a/contracts/GoldenBounty.sol b/contracts/GoldenBounty.sol new file mode 100644 index 00000000..a493a751 --- /dev/null +++ b/contracts/GoldenBounty.sol @@ -0,0 +1,323 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.16; + +import '@openzeppelin/contracts/access/Ownable.sol'; +import '@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol'; + +import './GoldenToken.sol'; +import './libraries/AddressSet.sol'; + +/// @custom:security-contact security@golden.com +contract GoldenBounty is Ownable { + using SafeERC20Upgradeable for GoldenToken; + GoldenToken tokenContract; + uint256 public minimumVotes; + + event QuestionCreated( + address indexed questionAddress, + bytes16 subjectUUID, + bytes16 predicateUUID + ); + + constructor(address goldenTokenAddress, uint256 _minimumVotes) Ownable() { + tokenContract = GoldenToken(goldenTokenAddress); + minimumVotes = _minimumVotes; + } + + function setMinimumVotes(uint256 _minimumVotes) public onlyOwner { + minimumVotes = _minimumVotes; + } + + // TODO: Figure out something more appropriate for a decentralized bounty contract treasury. + function withdraw(uint256 amount) public onlyOwner { + tokenContract.transfer(msg.sender, amount); + } + + function createQuestion( + bytes16 subjectUUID, + bytes16 predicateUUID, + uint256 bounty + ) public returns (address) { + require( + bounty % 10**tokenContract.decimals() == 0, + 'GoldenBounty: Bounty must be a multiple of 1 GoldenToken' + ); + require( + tokenContract.allowance(_msgSender(), address(this)) >= bounty, + 'GoldenBounty: insufficient allowance' + ); + GoldenBountyQuestion newQuestion = new GoldenBountyQuestion( + address(tokenContract), + _msgSender(), + subjectUUID, + predicateUUID + ); + address newQuestionAddress = address(newQuestion); + tokenContract.safeTransferFrom( + _msgSender(), + newQuestionAddress, + bounty + ); + emit QuestionCreated(newQuestionAddress, subjectUUID, predicateUUID); + return newQuestionAddress; + } +} + +contract GoldenBountyQuestion is Ownable { + using SafeERC20Upgradeable for GoldenToken; + GoldenToken tokenContract; + + using AddressSet for AddressSet.Set; + + address public asker; + bytes16 public subjectUUID; + bytes16 public predicateUUID; + + // Helper struct for consensus/payout algorithms + struct Answer { + string answer; + address answerer; + AddressSet.Set yesVoters; + AddressSet.Set noVoters; + } + + struct AnswerPublic { + string answer; + address answerer; + address[] yesVoters; + address[] noVoters; + } + + // Mapping of answerer address to their answer + mapping(address => Answer) answerByAnswerer; + AddressSet.Set answerers; + + enum AnswerStatus { + Pending, + Accepted, + Rejected + } + + event AnswerAdded( + bytes16 subjectUUID, + bytes16 predicateUUID, + string answer, + uint256 index + ); + + constructor( + address goldenTokenAddress, + address _asker, + bytes16 _subjectUUID, + bytes16 _predicateUUID + ) Ownable() { + require( + _asker != address(0), + 'GoldenBountyQuestion: asker is the zero address' + ); + tokenContract = GoldenToken(goldenTokenAddress); + asker = _asker; + subjectUUID = _subjectUUID; + predicateUUID = _predicateUUID; + } + + modifier onlyAsker() { + require(_msgSender() == asker, 'GoldenBountyQuestion: onlyAsker'); + _; + } + + function bounty() public view returns (uint256) { + return tokenContract.balanceOf(address(this)); + } + + function addAnswer(string calldata _answer) public { + require( + bytes(_answer).length > 0, + 'GoldenBountyQuestion: answer is empty' + ); + address answerer = _msgSender(); + Answer storage a = answerByAnswerer[answerer]; + a.answer = _answer; + a.answerer = answerer; + answerers.upsert(answerer); + + emit AnswerAdded( + subjectUUID, + predicateUUID, + _answer, + answerers.indexOfKey(answerer) + ); + } + + function answers() public view returns (AnswerPublic[] memory) { + AnswerPublic[] memory _ans = new AnswerPublic[](answerers.count()); + for (uint256 i = 0; i < answerers.count(); i++) { + address answerer = answerers.keyAtIndex(i); + Answer storage a = answerByAnswerer[answerer]; + _ans[i] = AnswerPublic( + a.answer, + a.answerer, + a.yesVoters.keyList, + a.noVoters.keyList + ); + } + return _ans; + } + + function answers(AnswerStatus status) + public + view + returns (AnswerPublic[] memory) + { + AnswerPublic[] memory _ans = new AnswerPublic[](answerers.count()); + uint256 acceptedAnswersCount = 0; + for (uint256 i = 0; i < answerers.count(); i++) { + address answerer = answerers.keyAtIndex(i); + Answer storage a = answerByAnswerer[answerer]; + AnswerStatus answerStatus = _answerStatus(a); + if (answerStatus == status) { + _ans[acceptedAnswersCount] = AnswerPublic( + a.answer, + a.answerer, + a.yesVoters.keyList, + a.noVoters.keyList + ); + acceptedAnswersCount++; + } + } + return _ans; + } + + function acceptedAnswers() public view returns (AnswerPublic[] memory) { + return answers(AnswerStatus.Accepted); + } + + function rejectedAnswers() public view returns (AnswerPublic[] memory) { + return answers(AnswerStatus.Rejected); + } + + function pendingAnswers() public view returns (AnswerPublic[] memory) { + return answers(AnswerStatus.Pending); + } + + function vote(uint256 index, bool isCorrect) public { + require( + answerers.count() > index, + 'GoldenBountyQuestion: there is no answer at that index' + ); + + Answer storage answer = answerByAnswerer[answerers.keyAtIndex(index)]; + address voter = _msgSender(); + + require( + answer.yesVoters.exists(voter) == false && + answer.noVoters.exists(voter) == false, + 'GoldenBountyQuestion: you have already voted' + ); + + if (isCorrect) { + answer.yesVoters.insert(voter); + } else { + answer.noVoters.insert(voter); + } + } + + function topAnswer() public view returns (AnswerPublic memory) { + Answer storage a = _topAnswer(); + return + AnswerPublic( + a.answer, + a.answerer, + a.yesVoters.keyList, + a.noVoters.keyList + ); + } + + function _topAnswer() internal view returns (Answer storage) { + uint256 maxVotes = 0; + uint256 maxIndex = 0; + for (uint256 i = 0; i < answerers.count(); i++) { + Answer storage answer = answerByAnswerer[answerers.keyAtIndex(i)]; + AnswerStatus answerStatus = _answerStatus(answer); + if (answerStatus == AnswerStatus.Accepted) { + uint256 votes = answer.yesVoters.count(); + if (votes > maxVotes) { + maxVotes = votes; + maxIndex = i; + } + } + } + return answerByAnswerer[answerers.keyAtIndex(maxIndex)]; + } + + function payout() public onlyAsker { + AnswerPublic[] memory _acceptedAnswers = acceptedAnswers(); + address[] memory answerersToPay = new address[]( + _acceptedAnswers.length + ); + + uint256 votersLength = 0; + for (uint256 i = 0; i < _acceptedAnswers.length; i++) { + answerersToPay[i] = _acceptedAnswers[i].answerer; + votersLength += _acceptedAnswers[i].yesVoters.length; + } + + address[] memory votersToPay = new address[](votersLength); + uint256 voterIndex = 0; + for (uint256 i = 0; i < _acceptedAnswers.length; i++) { + for (uint256 j = 0; j < _acceptedAnswers[i].yesVoters.length; j++) { + votersToPay[voterIndex] = _acceptedAnswers[i].yesVoters[j]; + voterIndex++; + } + } + + // `bounty()` value is in the order of `tokenContract.decimals()` (10^18) + // so should be divisible by 10 + // let's pay: + // - 6/10 to the answerer + // - 3/10 to the voters + // - 1/10 and any rounding remainders to the protocol + uint256 _bounty = bounty(); + _payoutAmountToAddresses((_bounty / 10) * 6, answerersToPay); + _payoutAmountToAddresses((_bounty / 10) * 3, votersToPay); + // Send any left over to the protocol + tokenContract.safeTransfer(owner(), bounty()); + } + + // Utils + function _answerStatus(Answer storage answer) + internal + view + returns (AnswerStatus) + { + int256 voteDiff = int256(answer.yesVoters.count()) - + int256(answer.noVoters.count()); + int256 minimumVotes = int256(GoldenBounty(owner()).minimumVotes()); + + if (voteDiff >= minimumVotes) { + return AnswerStatus.Accepted; + } + + if (voteDiff <= -minimumVotes) { + return AnswerStatus.Rejected; + } + + return AnswerStatus.Pending; + } + + function _payoutAmountToAddresses( + uint256 amount, + address[] memory addresses + ) internal { + uint256 amountPaid = 0; + uint256 amountPerAddress = amount / addresses.length; + for (uint256 i = 0; i < addresses.length; i++) { + tokenContract.safeTransfer(addresses[i], amountPerAddress); + amountPaid += amountPerAddress; + } + // Send any left over to the protocol + if (amountPaid < amount) { + tokenContract.safeTransfer(owner(), amount - amountPaid); + } + } +} diff --git a/contracts/GoldenToken.sol b/contracts/GoldenToken.sol index 527730ac..076d61ba 100644 --- a/contracts/GoldenToken.sol +++ b/contracts/GoldenToken.sol @@ -27,13 +27,13 @@ contract GoldenToken is { super._beforeTokenTransfer(from, to, amount); - require( - (from == address(0) || - from == owner() || - from == address(this) || - to == address(this)), - 'ERC20: Not allowed to transfer' - ); + // require( + // (from == address(0) || + // from == owner() || + // from == address(this) || + // to == address(this)), + // 'ERC20: Not allowed to transfer' + // ); } // ============ Staking ============ diff --git a/contracts/libraries/AddressSet.sol b/contracts/libraries/AddressSet.sol new file mode 100644 index 00000000..3b7efc9a --- /dev/null +++ b/contracts/libraries/AddressSet.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: Unlicensed +pragma solidity ^0.8.16; + +// Based on: https://github.com/rob-Hitchens/UnorderedKeySet/blob/master/contracts/HitchensUnorderedAddressSet.sol + +library AddressSet { + struct Set { + mapping(address => uint256) keyPointers; + address[] keyList; + } + + function insert(Set storage self, address key) internal { + require(key != address(0), 'UnorderedKeySet(100) - Key cannot be 0x0'); + require( + !exists(self, key), + 'UnorderedAddressSet(101) - Address (key) already exists in the set.' + ); + self.keyList.push(key); + self.keyPointers[key] = self.keyList.length - 1; + } + + function upsert(Set storage self, address key) internal { + if (!exists(self, key)) { + insert(self, key); + } + } + + function remove(Set storage self, address key) internal { + require( + exists(self, key), + 'UnorderedKeySet(102) - Address (key) does not exist in the set.' + ); + address keyToMove = self.keyList[count(self) - 1]; + uint256 rowToReplace = self.keyPointers[key]; + self.keyPointers[keyToMove] = rowToReplace; + self.keyList[rowToReplace] = keyToMove; + delete self.keyPointers[key]; + self.keyList.pop(); + } + + function count(Set storage self) internal view returns (uint256) { + return (self.keyList.length); + } + + function exists(Set storage self, address key) + internal + view + returns (bool) + { + if (self.keyList.length == 0) return false; + return self.keyList[self.keyPointers[key]] == key; + } + + function keyAtIndex(Set storage self, uint256 index) + internal + view + returns (address) + { + return self.keyList[index]; + } + + function indexOfKey(Set storage self, address key) + internal + view + returns (uint256) + { + return self.keyPointers[key]; + } +} diff --git a/deploy/999_GoldenBounty.ts b/deploy/999_GoldenBounty.ts new file mode 100644 index 00000000..509860ea --- /dev/null +++ b/deploy/999_GoldenBounty.ts @@ -0,0 +1,23 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { DeployFunction } from 'hardhat-deploy/types'; + +const deploy: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const { deployments, getNamedAccounts } = hre; + + const { deployer } = await getNamedAccounts(); + + const GoldenTokenDeployment = await deployments.get('GoldenToken'); + + await deployments.deploy('GoldenBounty', { + from: deployer, + // skipIfAlreadyDeployed: true, + args: [GoldenTokenDeployment.address, 3], + log: true, + }); +}; + +deploy.id = 'deploy_golden_protocol'; +deploy.tags = ['GoldenBounty']; +deploy.dependencies = ['GoldenToken']; + +export default deploy; diff --git a/hardhat.config.ts b/hardhat.config.ts index a60096ea..707b3eb2 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -65,6 +65,7 @@ const config: HardhatUserConfig = { }, gasReporter: { enabled: process.env.REPORT_GAS !== undefined, + coinmarketcap: process.env.COINMARKETCAP_API_KEY, currency: 'USD', }, etherscan: { diff --git a/test/GoldenBounty.ts b/test/GoldenBounty.ts new file mode 100644 index 00000000..2dfeaa94 --- /dev/null +++ b/test/GoldenBounty.ts @@ -0,0 +1,209 @@ +import { expect } from 'chai'; +import { + deployments, + ethers, + getNamedAccounts, + getUnnamedAccounts, +} from 'hardhat'; + +import { setupUsers, setupUser, User, Contracts as _Contracts } from './utils'; +import getRandomBytesHexString from './utils/getRandomBytesHexString'; +import { + GoldenBounty as GoldenBountyContract, + GoldenBountyQuestion as GoldenBountyQuestionContract, +} from '../typechain/contracts/GoldenBounty.sol'; +import { QuestionCreatedEvent } from '../typechain/contracts/GoldenBounty.sol/GoldenBounty'; +import { AnswerAddedEvent } from '../typechain/contracts/GoldenBounty.sol/GoldenBountyQuestion'; +import { GoldenToken as GoldenTokenContract } from '../typechain/'; + +type Contracts = Pick< + _Contracts, + 'GoldenBounty' | 'GoldenBountyQuestion' | 'GoldenToken' +>; + +describe('GoldenBounty', function () { + let GoldenBounty: Contracts['GoldenBounty']; + let GoldenToken: Contracts['GoldenToken']; + let owner: User; + let users: User[]; + let asker: User; + let answerer: User; + let verifier: User; + const answer = 'Profound truth'; + + beforeEach(async function () { + await deployments.fixture(['GoldenBounty']); + GoldenBounty = await ethers.getContract( + 'GoldenBounty' + ); + GoldenToken = await ethers.getContract('GoldenToken'); + const contracts = { GoldenBounty, GoldenToken }; + const { deployer } = await getNamedAccounts(); + owner = await setupUser(deployer, contracts); + users = await setupUsers(await getUnnamedAccounts(), contracts); + asker = users[0]; + answerer = users[1]; + verifier = users[2]; + }); + + describe('Deployment', function () { + it('Should have correct owner', async function () { + expect(await GoldenBounty.owner()).to.equal(owner.address); + }); + }); + + describe('Question', function () { + const subjectUUID = getRandomBytesHexString(16); + const predicateUUID = getRandomBytesHexString(16); + const bounty = ethers.utils.parseUnits('10', 18); + let GoldenBountyQuestion: NonNullable; + + beforeEach(async function () { + // Create question + const anskerBalanceBefore = await GoldenToken.balanceOf(asker.address); + await asker.GoldenToken.approve(GoldenBounty.address, bounty); + const transactionQuestion = await asker.GoldenBounty.createQuestion( + subjectUUID, + predicateUUID, + bounty + ); + const result = await transactionQuestion.wait(); + expect(result.status).to.equal(1); + expect(await GoldenToken.balanceOf(asker.address)).to.equal( + anskerBalanceBefore.sub(bounty) + ); + const createQuestionEvent = ( + await GoldenBounty.queryFilter( + GoldenBounty.filters.QuestionCreated() + ) + )[0]; + GoldenBountyQuestion = + await ethers.getContractAt( + 'GoldenBountyQuestion', + createQuestionEvent.args.questionAddress + ); + expect( + await GoldenToken.balanceOf(createQuestionEvent.args.questionAddress) + ).to.equal(bounty); + }); + + it('emits event when question is created', async function () { + const createQuestionEvent = ( + await GoldenBounty.queryFilter( + GoldenBounty.filters.QuestionCreated() + ) + )[0]; + expect(createQuestionEvent.args.subjectUUID).to.equal(subjectUUID); + expect(createQuestionEvent.args.predicateUUID).to.equal(predicateUUID); + }); + + it('has correct and accessible state', async function () { + expect(await GoldenBountyQuestion.owner()).to.equal(GoldenBounty.address); + expect(await GoldenBountyQuestion.asker()).to.equal(asker.address); + expect(await GoldenBountyQuestion.subjectUUID()).to.equal(subjectUUID); + expect(await GoldenBountyQuestion.predicateUUID()).to.equal( + predicateUUID + ); + expect(await GoldenBountyQuestion.bounty()).to.equal(bounty); + }); + + describe('Answer', function () { + async function upvote() { + const transactionVote = await GoldenBountyQuestion.connect( + await ethers.getSigner(verifier.address) + ).vote(0, true); + const resultVote = await transactionVote.wait(); + expect(resultVote.status).to.equal(1); + } + + beforeEach(async function () { + // Create answer + const transactionAnswer = await GoldenBountyQuestion.connect( + await ethers.getSigner(answerer.address) + ).addAnswer(answer); + const resultAnswer = await transactionAnswer.wait(); + expect(resultAnswer.status).to.equal(1); + }); + + it('emits event when answer is added', async function () { + expect(await GoldenBountyQuestion['answers()']()).to.deep.equal([ + [answer, answerer.address, [], []], + ]); + const addAnswerEvent = ( + await GoldenBountyQuestion.queryFilter( + GoldenBountyQuestion.filters.AnswerAdded() + ) + )[0]; + expect(addAnswerEvent.args.subjectUUID).to.equal(subjectUUID); + expect(addAnswerEvent.args.predicateUUID).to.equal(predicateUUID); + expect(addAnswerEvent.args.answer).to.equal(answer); + expect(addAnswerEvent.args.index).to.equal(ethers.BigNumber.from(0)); + }); + + it('can be voted on', async function () { + await upvote(); + const topAnswer = await GoldenBountyQuestion.topAnswer(); + expect(topAnswer.answerer).to.equal(answerer.address); + expect(topAnswer.answer).to.equal(answer); + expect(topAnswer.yesVoters).to.deep.equal([verifier.address]); + expect(topAnswer.noVoters).to.deep.equal([]); + }); + + it('can not be voted on multiple times', async function () { + await upvote(); + expect( + GoldenBountyQuestion.connect( + await ethers.getSigner(verifier.address) + ).vote(0, true) + ).to.be.revertedWith('GoldenBountyQuestion: you have already voted'); + }); + + it('can not be payed out without enough votes', async function () { + await upvote(); + expect( + GoldenBountyQuestion.connect( + await ethers.getSigner(asker.address) + ).payout() + ).to.be.revertedWith( + 'GoldenBountyQuestion: payout: minimumVotes not met' + ); + }); + + it('can be payed out', async function () { + await upvote(); + expect(asker.GoldenBounty.setMinimumVotes(1)).to.be.revertedWith( + 'Ownable: caller is not the owner' + ); + await owner.GoldenBounty.setMinimumVotes(1); + const answererBalanceBefore = await GoldenToken.balanceOf( + answerer.address + ); + const verifierBalanceBefore = await GoldenToken.balanceOf( + verifier.address + ); + const contractBalanceBefore = await GoldenToken.balanceOf( + GoldenBounty.address + ); + const transactionPayout = await GoldenBountyQuestion.connect( + await ethers.getSigner(asker.address) + ).payout(); + const resultPayout = await transactionPayout.wait(); + expect(resultPayout.status).to.equal(1); + expect( + await GoldenToken.balanceOf(GoldenBountyQuestion.address) + ).to.equal(0); + expect(await GoldenToken.balanceOf(answerer.address)).to.equal( + answererBalanceBefore.add(bounty.div(10).mul(6)) + ); + expect(await GoldenToken.balanceOf(verifier.address)).to.equal( + verifierBalanceBefore.add(bounty.div(10).mul(3)) + ); + expect(await GoldenToken.balanceOf(GoldenBounty.address)).to.equal( + contractBalanceBefore.add(bounty.div(10)) + ); + }); + + // TODO: Test multiple answers and voters + }); + }); +}); diff --git a/test/GoldenSchemaGovernor.ts b/test/GoldenSchemaGovernor.ts index 9ba42290..c1c260de 100644 --- a/test/GoldenSchemaGovernor.ts +++ b/test/GoldenSchemaGovernor.ts @@ -7,9 +7,14 @@ import { network, } from 'hardhat'; -import { setupUsers, setupUser, User, Contracts } from './utils'; +import { setupUsers, setupUser, User, Contracts as _Contracts } from './utils'; import getRandomBytesHexString from './utils/getRandomBytesHexString'; +type Contracts = Pick< + _Contracts, + 'GoldenSchema' | 'GoldenToken' | 'GoldenSchemaGovernor' +>; + describe('GoldenSchemaGovernor - ERC20 token', function () { let GoldenSchemaGovernor: Contracts['GoldenSchemaGovernor']; let GoldenSchema: Contracts['GoldenSchema']; @@ -22,7 +27,7 @@ describe('GoldenSchemaGovernor - ERC20 token', function () { GoldenSchemaGovernor = await ethers.getContract('GoldenSchemaGovernor'); GoldenSchema = await ethers.getContract('GoldenSchema'); GoldenToken = await ethers.getContract('GoldenToken'); - const contracts: Contracts = { + const contracts = { GoldenSchemaGovernor, GoldenSchema, GoldenToken, diff --git a/test/utils/index.ts b/test/utils/index.ts index f846c627..aa62ae4d 100644 --- a/test/utils/index.ts +++ b/test/utils/index.ts @@ -5,11 +5,17 @@ import { Address } from 'hardhat-deploy/types'; import type { GoldenSchemaGovernor } from '../../typechain/contracts/GoldenSchemaGovernor'; import type { GoldenSchema } from '../../typechain/contracts/GoldenSchema'; import type { GoldenToken } from '../../typechain/contracts/GoldenToken'; +import type { + GoldenBounty, + GoldenBountyQuestion, +} from '../../typechain/contracts/GoldenBounty.sol'; export type Contracts = { GoldenSchemaGovernor: GoldenSchemaGovernor; GoldenSchema: GoldenSchema; GoldenToken: GoldenToken; + GoldenBounty: GoldenBounty; + GoldenBountyQuestion?: GoldenBountyQuestion; }; export type User = { address: Address } & T; diff --git a/typechain/contracts/GoldenBounty.sol/GoldenBounty.ts b/typechain/contracts/GoldenBounty.sol/GoldenBounty.ts new file mode 100644 index 00000000..104de6d6 --- /dev/null +++ b/typechain/contracts/GoldenBounty.sol/GoldenBounty.ts @@ -0,0 +1,304 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export interface GoldenBountyInterface extends utils.Interface { + functions: { + "createQuestion(bytes16,bytes16,uint256)": FunctionFragment; + "minimumVotes()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMinimumVotes(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "createQuestion" + | "minimumVotes" + | "owner" + | "renounceOwnership" + | "setMinimumVotes" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "createQuestion", + values: [BytesLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "minimumVotes", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMinimumVotes", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult( + functionFragment: "createQuestion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minimumVotes", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumVotes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "QuestionCreated(address,bytes16,bytes16)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "QuestionCreated"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface QuestionCreatedEventObject { + questionAddress: string; + subjectUUID: string; + predicateUUID: string; +} +export type QuestionCreatedEvent = TypedEvent< + [string, string, string], + QuestionCreatedEventObject +>; + +export type QuestionCreatedEventFilter = TypedEventFilter; + +export interface GoldenBounty extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: GoldenBountyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: CallOverrides + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + + "QuestionCreated(address,bytes16,bytes16)"( + questionAddress?: string | null, + subjectUUID?: null, + predicateUUID?: null + ): QuestionCreatedEventFilter; + QuestionCreated( + questionAddress?: string | null, + subjectUUID?: null, + predicateUUID?: null + ): QuestionCreatedEventFilter; + }; + + estimateGas: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/typechain/contracts/GoldenBounty.sol/GoldenBountyQuestion.ts b/typechain/contracts/GoldenBounty.sol/GoldenBountyQuestion.ts new file mode 100644 index 00000000..6282aafc --- /dev/null +++ b/typechain/contracts/GoldenBounty.sol/GoldenBountyQuestion.ts @@ -0,0 +1,534 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export declare namespace GoldenBountyQuestion { + export type AnswerPublicStruct = { + answer: string; + answerer: string; + yesVoters: string[]; + noVoters: string[]; + }; + + export type AnswerPublicStructOutput = [ + string, + string, + string[], + string[] + ] & { + answer: string; + answerer: string; + yesVoters: string[]; + noVoters: string[]; + }; +} + +export interface GoldenBountyQuestionInterface extends utils.Interface { + functions: { + "acceptedAnswers()": FunctionFragment; + "addAnswer(string)": FunctionFragment; + "answers(uint8)": FunctionFragment; + "answers()": FunctionFragment; + "asker()": FunctionFragment; + "bounty()": FunctionFragment; + "owner()": FunctionFragment; + "payout()": FunctionFragment; + "pendingAnswers()": FunctionFragment; + "predicateUUID()": FunctionFragment; + "rejectedAnswers()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "subjectUUID()": FunctionFragment; + "topAnswer()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "vote(uint256,bool)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "acceptedAnswers" + | "addAnswer" + | "answers(uint8)" + | "answers()" + | "asker" + | "bounty" + | "owner" + | "payout" + | "pendingAnswers" + | "predicateUUID" + | "rejectedAnswers" + | "renounceOwnership" + | "subjectUUID" + | "topAnswer" + | "transferOwnership" + | "vote" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "acceptedAnswers", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "addAnswer", values: [string]): string; + encodeFunctionData( + functionFragment: "answers(uint8)", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "answers()", values?: undefined): string; + encodeFunctionData(functionFragment: "asker", values?: undefined): string; + encodeFunctionData(functionFragment: "bounty", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "payout", values?: undefined): string; + encodeFunctionData( + functionFragment: "pendingAnswers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "predicateUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "rejectedAnswers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "subjectUUID", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "topAnswer", values?: undefined): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "vote", + values: [BigNumberish, boolean] + ): string; + + decodeFunctionResult( + functionFragment: "acceptedAnswers", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "addAnswer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "answers(uint8)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "answers()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "asker", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "bounty", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "payout", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pendingAnswers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "predicateUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "rejectedAnswers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "subjectUUID", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "topAnswer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "vote", data: BytesLike): Result; + + events: { + "AnswerAdded(bytes16,bytes16,string,uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AnswerAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface AnswerAddedEventObject { + subjectUUID: string; + predicateUUID: string; + answer: string; + index: BigNumber; +} +export type AnswerAddedEvent = TypedEvent< + [string, string, string, BigNumber], + AnswerAddedEventObject +>; + +export type AnswerAddedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface GoldenBountyQuestion extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: GoldenBountyQuestionInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + acceptedAnswers( + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput[]]>; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "answers(uint8)"( + status: BigNumberish, + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput[]]>; + + "answers()"( + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput[]]>; + + asker(overrides?: CallOverrides): Promise<[string]>; + + bounty(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + pendingAnswers( + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput[]]>; + + predicateUUID(overrides?: CallOverrides): Promise<[string]>; + + rejectedAnswers( + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput[]]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise<[string]>; + + topAnswer( + overrides?: CallOverrides + ): Promise<[GoldenBountyQuestion.AnswerPublicStructOutput]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + vote( + index: BigNumberish, + isCorrect: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + acceptedAnswers( + overrides?: CallOverrides + ): Promise; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "answers(uint8)"( + status: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "answers()"( + overrides?: CallOverrides + ): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + pendingAnswers( + overrides?: CallOverrides + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + rejectedAnswers( + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + vote( + index: BigNumberish, + isCorrect: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + acceptedAnswers( + overrides?: CallOverrides + ): Promise; + + addAnswer(_answer: string, overrides?: CallOverrides): Promise; + + "answers(uint8)"( + status: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "answers()"( + overrides?: CallOverrides + ): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout(overrides?: CallOverrides): Promise; + + pendingAnswers( + overrides?: CallOverrides + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + rejectedAnswers( + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + vote( + index: BigNumberish, + isCorrect: boolean, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AnswerAdded(bytes16,bytes16,string,uint256)"( + subjectUUID?: null, + predicateUUID?: null, + answer?: null, + index?: null + ): AnswerAddedEventFilter; + AnswerAdded( + subjectUUID?: null, + predicateUUID?: null, + answer?: null, + index?: null + ): AnswerAddedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + acceptedAnswers(overrides?: CallOverrides): Promise; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "answers(uint8)"( + status: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "answers()"(overrides?: CallOverrides): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + pendingAnswers(overrides?: CallOverrides): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + rejectedAnswers(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + vote( + index: BigNumberish, + isCorrect: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + acceptedAnswers(overrides?: CallOverrides): Promise; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "answers(uint8)"( + status: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "answers()"(overrides?: CallOverrides): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + pendingAnswers(overrides?: CallOverrides): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + rejectedAnswers(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + vote( + index: BigNumberish, + isCorrect: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/typechain/contracts/GoldenBounty.sol/index.ts b/typechain/contracts/GoldenBounty.sol/index.ts new file mode 100644 index 00000000..501f9304 --- /dev/null +++ b/typechain/contracts/GoldenBounty.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { GoldenBounty } from "./GoldenBounty"; +export type { GoldenBountyQuestion } from "./GoldenBountyQuestion"; diff --git a/typechain/contracts/GoldenProtocol.sol/GoldenProtocol.ts b/typechain/contracts/GoldenProtocol.sol/GoldenProtocol.ts new file mode 100644 index 00000000..d16dd291 --- /dev/null +++ b/typechain/contracts/GoldenProtocol.sol/GoldenProtocol.ts @@ -0,0 +1,304 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export interface GoldenProtocolInterface extends utils.Interface { + functions: { + "createQuestion(bytes16,bytes16,uint256)": FunctionFragment; + "minimumVotes()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMinimumVotes(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "createQuestion" + | "minimumVotes" + | "owner" + | "renounceOwnership" + | "setMinimumVotes" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "createQuestion", + values: [BytesLike, BytesLike, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "minimumVotes", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMinimumVotes", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult( + functionFragment: "createQuestion", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minimumVotes", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumVotes", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "QuestionCreated(address,bytes16,bytes16)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "QuestionCreated"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface QuestionCreatedEventObject { + questionAddress: string; + subjectUUID: string; + predicateUUID: string; +} +export type QuestionCreatedEvent = TypedEvent< + [string, string, string], + QuestionCreatedEventObject +>; + +export type QuestionCreatedEventFilter = TypedEventFilter; + +export interface GoldenProtocol extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: GoldenProtocolInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: CallOverrides + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + + "QuestionCreated(address,bytes16,bytes16)"( + questionAddress?: string | null, + subjectUUID?: null, + predicateUUID?: null + ): QuestionCreatedEventFilter; + QuestionCreated( + questionAddress?: string | null, + subjectUUID?: null, + predicateUUID?: null + ): QuestionCreatedEventFilter; + }; + + estimateGas: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + createQuestion( + subjectUUID: BytesLike, + predicateUUID: BytesLike, + bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + minimumVotes(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setMinimumVotes( + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/typechain/contracts/GoldenProtocol.sol/GoldenProtocolQuestion.ts b/typechain/contracts/GoldenProtocol.sol/GoldenProtocolQuestion.ts new file mode 100644 index 00000000..1d43549b --- /dev/null +++ b/typechain/contracts/GoldenProtocol.sol/GoldenProtocolQuestion.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export declare namespace GoldenProtocolQuestion { + export type AnswerStruct = { + answerer: string; + answer: string; + voteCount: BigNumberish; + }; + + export type AnswerStructOutput = [string, string, BigNumber] & { + answerer: string; + answer: string; + voteCount: BigNumber; + }; +} + +export interface GoldenProtocolQuestionInterface extends utils.Interface { + functions: { + "addAnswer(string)": FunctionFragment; + "answer()": FunctionFragment; + "answers()": FunctionFragment; + "asker()": FunctionFragment; + "bounty()": FunctionFragment; + "hashAnswer(address,string)": FunctionFragment; + "owner()": FunctionFragment; + "payout()": FunctionFragment; + "predicateUUID()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "subjectUUID()": FunctionFragment; + "topAnswer()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "upvote(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addAnswer" + | "answer" + | "answers" + | "asker" + | "bounty" + | "hashAnswer" + | "owner" + | "payout" + | "predicateUUID" + | "renounceOwnership" + | "subjectUUID" + | "topAnswer" + | "transferOwnership" + | "upvote" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "addAnswer", values: [string]): string; + encodeFunctionData(functionFragment: "answer", values?: undefined): string; + encodeFunctionData(functionFragment: "answers", values?: undefined): string; + encodeFunctionData(functionFragment: "asker", values?: undefined): string; + encodeFunctionData(functionFragment: "bounty", values?: undefined): string; + encodeFunctionData( + functionFragment: "hashAnswer", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "payout", values?: undefined): string; + encodeFunctionData( + functionFragment: "predicateUUID", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "subjectUUID", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "topAnswer", values?: undefined): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "upvote", + values: [BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "addAnswer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "answer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "answers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "asker", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "bounty", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hashAnswer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "payout", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "predicateUUID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "subjectUUID", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "topAnswer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upvote", data: BytesLike): Result; + + events: { + "AnswerAdded(bytes16,bytes16,string,uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AnswerAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface AnswerAddedEventObject { + subjectUUID: string; + predicateUUID: string; + answer: string; + index: BigNumber; +} +export type AnswerAddedEvent = TypedEvent< + [string, string, string, BigNumber], + AnswerAddedEventObject +>; + +export type AnswerAddedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface GoldenProtocolQuestion extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: GoldenProtocolQuestionInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answer(overrides?: CallOverrides): Promise<[string]>; + + answers( + overrides?: CallOverrides + ): Promise<[GoldenProtocolQuestion.AnswerStructOutput[]]>; + + asker(overrides?: CallOverrides): Promise<[string]>; + + bounty(overrides?: CallOverrides): Promise<[BigNumber]>; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise<[string]>; + + topAnswer( + overrides?: CallOverrides + ): Promise<[GoldenProtocolQuestion.AnswerStructOutput]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answer(overrides?: CallOverrides): Promise; + + answers( + overrides?: CallOverrides + ): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + addAnswer(_answer: string, overrides?: CallOverrides): Promise; + + answer(overrides?: CallOverrides): Promise; + + answers( + overrides?: CallOverrides + ): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout(overrides?: CallOverrides): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + upvote(index: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + "AnswerAdded(bytes16,bytes16,string,uint256)"( + subjectUUID?: null, + predicateUUID?: null, + answer?: null, + index?: null + ): AnswerAddedEventFilter; + AnswerAdded( + subjectUUID?: null, + predicateUUID?: null, + answer?: null, + index?: null + ): AnswerAddedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answer(overrides?: CallOverrides): Promise; + + answers(overrides?: CallOverrides): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answer(overrides?: CallOverrides): Promise; + + answers(overrides?: CallOverrides): Promise; + + asker(overrides?: CallOverrides): Promise; + + bounty(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + predicateUUID(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + subjectUUID(overrides?: CallOverrides): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/typechain/contracts/GoldenProtocol.sol/Question.ts b/typechain/contracts/GoldenProtocol.sol/Question.ts new file mode 100644 index 00000000..8b4370a5 --- /dev/null +++ b/typechain/contracts/GoldenProtocol.sol/Question.ts @@ -0,0 +1,245 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../common"; + +export declare namespace Question { + export type AnswerStruct = { + answerer: string; + answer: string; + voteCount: BigNumberish; + }; + + export type AnswerStructOutput = [string, string, BigNumber] & { + answerer: string; + answer: string; + voteCount: BigNumber; + }; +} + +export interface QuestionInterface extends utils.Interface { + functions: { + "addAnswer(string)": FunctionFragment; + "answers()": FunctionFragment; + "hashAnswer(address,string)": FunctionFragment; + "payout()": FunctionFragment; + "topAnswer()": FunctionFragment; + "upvote(uint256)": FunctionFragment; + "votes()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addAnswer" + | "answers" + | "hashAnswer" + | "payout" + | "topAnswer" + | "upvote" + | "votes" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "addAnswer", values: [string]): string; + encodeFunctionData(functionFragment: "answers", values?: undefined): string; + encodeFunctionData( + functionFragment: "hashAnswer", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "payout", values?: undefined): string; + encodeFunctionData(functionFragment: "topAnswer", values?: undefined): string; + encodeFunctionData( + functionFragment: "upvote", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "votes", values?: undefined): string; + + decodeFunctionResult(functionFragment: "addAnswer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "answers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hashAnswer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "payout", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "topAnswer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "upvote", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "votes", data: BytesLike): Result; + + events: {}; +} + +export interface Question extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: QuestionInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answers(overrides?: CallOverrides): Promise<[string[]]>; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + topAnswer( + overrides?: CallOverrides + ): Promise<[Question.AnswerStructOutput]>; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + votes(overrides?: CallOverrides): Promise<[BigNumber[]]>; + }; + + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answers(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + votes(overrides?: CallOverrides): Promise; + + callStatic: { + addAnswer(_answer: string, overrides?: CallOverrides): Promise; + + answers(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + payout(overrides?: CallOverrides): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + upvote(index: BigNumberish, overrides?: CallOverrides): Promise; + + votes(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answers(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + votes(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + addAnswer( + _answer: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + answers(overrides?: CallOverrides): Promise; + + hashAnswer( + answerer: string, + value: string, + overrides?: CallOverrides + ): Promise; + + payout( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + topAnswer(overrides?: CallOverrides): Promise; + + upvote( + index: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + votes(overrides?: CallOverrides): Promise; + }; +} diff --git a/typechain/contracts/GoldenProtocol.sol/index.ts b/typechain/contracts/GoldenProtocol.sol/index.ts new file mode 100644 index 00000000..6b5927a5 --- /dev/null +++ b/typechain/contracts/GoldenProtocol.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { GoldenProtocol } from "./GoldenProtocol"; +export type { GoldenProtocolQuestion } from "./GoldenProtocolQuestion"; diff --git a/typechain/contracts/index.ts b/typechain/contracts/index.ts index 96b4ce5c..c3feb857 100644 --- a/typechain/contracts/index.ts +++ b/typechain/contracts/index.ts @@ -1,6 +1,8 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as goldenBountySol from "./GoldenBounty.sol"; +export type { goldenBountySol }; import type * as nft from "./nft"; export type { nft }; export type { GoldenSchema } from "./GoldenSchema"; diff --git a/typechain/factories/contracts/GoldenBounty.sol/GoldenBountyQuestion__factory.ts b/typechain/factories/contracts/GoldenBounty.sol/GoldenBountyQuestion__factory.ts new file mode 100644 index 00000000..8360b4c5 --- /dev/null +++ b/typechain/factories/contracts/GoldenBounty.sol/GoldenBountyQuestion__factory.ts @@ -0,0 +1,508 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BytesLike, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + GoldenBountyQuestion, + GoldenBountyQuestionInterface, +} from "../../../contracts/GoldenBounty.sol/GoldenBountyQuestion"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "goldenTokenAddress", + type: "address", + }, + { + internalType: "address", + name: "_asker", + type: "address", + }, + { + internalType: "bytes16", + name: "_subjectUUID", + type: "bytes16", + }, + { + internalType: "bytes16", + name: "_predicateUUID", + type: "bytes16", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "string", + name: "answer", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "AnswerAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "acceptedAnswers", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "_answer", + type: "string", + }, + ], + name: "addAnswer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "enum GoldenBountyQuestion.AnswerStatus", + name: "status", + type: "uint8", + }, + ], + name: "answers", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "answers", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "asker", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "bounty", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "payout", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "pendingAnswers", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "predicateUUID", + outputs: [ + { + internalType: "bytes16", + name: "", + type: "bytes16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "rejectedAnswers", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "subjectUUID", + outputs: [ + { + internalType: "bytes16", + name: "", + type: "bytes16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "topAnswer", + outputs: [ + { + components: [ + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "address[]", + name: "yesVoters", + type: "address[]", + }, + { + internalType: "address[]", + name: "noVoters", + type: "address[]", + }, + ], + internalType: "struct GoldenBountyQuestion.AnswerPublic", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + { + internalType: "bool", + name: "isCorrect", + type: "bool", + }, + ], + name: "vote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b5060405162001e4e38038062001e4e833981016040819052620000349162000180565b6200003f33620000fa565b6001600160a01b038316620000b25760405162461bcd60e51b815260206004820152602f60248201527f476f6c64656e426f756e74795175657374696f6e3a2061736b6572206973207460448201526e6865207a65726f206164647265737360881b606482015260840160405180910390fd5b600180546001600160a01b039586166001600160a01b0319918216179091556002805494909516931692909217909255608090811c600160801b0291901c17600355620001dd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200016257600080fd5b919050565b80516001600160801b0319811681146200016257600080fd5b600080600080608085870312156200019757600080fd5b620001a2856200014a565b9350620001b2602086016200014a565b9250620001c26040860162000167565b9150620001d26060860162000167565b905092959194509250565b611c6180620001ed6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063943dfef111610097578063c9d27afe11610066578063c9d27afe146101f5578063da7e18c714610208578063e1145e4b1461021b578063f2fde38b1461022357600080fd5b8063943dfef1146101b05780639c314545146101c6578063bbe0ba85146101ce578063c7a66eb3146101e257600080fd5b80637a2faee0116100d35780637a2faee01461013d57806388775d8f1461016357806388fae0e9146101765780638da5cb5b1461018b57600080fd5b80634627216d1461010557806363bd1d4a146101235780636573f31e1461012d578063715018a614610135575b600080fd5b61010d610236565b60405161011a91906117ad565b60405180910390f35b61012b610247565b005b61010d610533565b61012b61053f565b60035461014a9060801b81565b6040516001600160801b0319909116815260200161011a565b61012b61017136600461180f565b610553565b61017e610652565b60405161011a9190611881565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6101b86107de565b60405190815260200161011a565b61010d61084b565b60035461014a90600160801b900460801b81565b600254610198906001600160a01b031681565b61012b6102033660046118a2565b610857565b61010d6102163660046118d2565b6109b4565b61010d610c38565b61012b6102313660046118f3565b610e75565b606061024260026109b4565b905090565b6002546001600160a01b0316336001600160a01b0316146102af5760405162461bcd60e51b815260206004820152601f60248201527f476f6c64656e426f756e74795175657374696f6e3a206f6e6c7941736b65720060448201526064015b60405180910390fd5b60006102b961084b565b90506000815167ffffffffffffffff8111156102d7576102d761191c565b604051908082528060200260200182016040528015610300578160200160208202803683370190505b5090506000805b835181101561039e5783818151811061032257610322611932565b60200260200101516020015183828151811061034057610340611932565b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061037257610372611932565b602002602001015160400151518261038a919061195e565b91508061039681611971565b915050610307565b5060008167ffffffffffffffff8111156103ba576103ba61191c565b6040519080825280602002602001820160405280156103e3578160200160208202803683370190505b5090506000805b85518110156104b05760005b86828151811061040857610408611932565b6020026020010151604001515181101561049d5786828151811061042e5761042e611932565b602002602001015160400151818151811061044b5761044b611932565b602002602001015184848151811061046557610465611932565b6001600160a01b03909216602092830291909101909101528261048781611971565b935050808061049590611971565b9150506103f6565b50806104a881611971565b9150506103ea565b5060006104bb6107de565b90506104dc6104cb600a8361198a565b6104d69060066119ac565b86610eee565b6104fb6104ea600a8361198a565b6104f59060036119ac565b84610eee565b61052b6105106000546001600160a01b031690565b6105186107de565b6001546001600160a01b03169190610f85565b505050505050565b606061024260006109b4565b610547610fdc565b6105516000611036565b565b806105ae5760405162461bcd60e51b815260206004820152602560248201527f476f6c64656e426f756e74795175657374696f6e3a20616e7377657220697320604482015264656d70747960d81b60648201526084016102a6565b336000818152600460205260409020806105c9848683611a45565b506001810180546001600160a01b0319166001600160a01b0384161790556105f2600583611086565b6003547ffd045500a034a5e731f843b696fcd566854cd7ccb879d6b3adb708152bbe43e690608081811b91600160801b9004901b86866106336005886110a2565b604051610644959493929190611b06565b60405180910390a150505050565b61065a611685565b60006106646110c2565b90506040518060800160405280826000018054610680906119cb565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906119cb565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b505050918352505060018301546001600160a01b0316602080830191909152600384018054604080518285028101850182528281529401939283018282801561076b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161074d575b50505050508152602001826004016001018054806020026020016040519081016040528092919081815260200182805480156107d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107b2575b505050505081525091505090565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610827573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190611b5a565b606061024260016109b4565b60065482106108c75760405162461bcd60e51b815260206004820152603660248201527f476f6c64656e426f756e74795175657374696f6e3a207468657265206973206e6044820152750de40c2dce6eecae440c2e840e8d0c2e840d2dcc8caf60531b60648201526084016102a6565b60006004816108d760058661118c565b6001600160a01b03166001600160a01b03168152602001908152602001600020905060006109023390565b905061091160028301826111bf565b158015610928575061092660048301826111bf565b155b6109895760405162461bcd60e51b815260206004820152602c60248201527f476f6c64656e426f756e74795175657374696f6e3a20796f752068617665206160448201526b1b1c9958591e481d9bdd195960a21b60648201526084016102a6565b82156109a15761099c6002830182611222565b6109ae565b6109ae6004830182611222565b50505050565b60065460609060009067ffffffffffffffff8111156109d5576109d561191c565b604051908082528060200260200182016040528015610a0e57816020015b6109fb611685565b8152602001906001900390816109f35790505b5090506000805b600654811015610c2f576000610a2c60058361118c565b6001600160a01b0381166000908152600460205260408120919250610a508261136a565b9050876002811115610a6457610a64611b73565b816002811115610a7657610a76611b73565b03610c19576040518060800160405280836000018054610a95906119cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac1906119cb565b8015610b0e5780601f10610ae357610100808354040283529160200191610b0e565b820191906000526020600020905b815481529060010190602001808311610af157829003601f168201915b505050918352505060018401546001600160a01b03166020808301919091526003850180546040805182850281018501825282815294019392830182828015610b8057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b62575b5050505050815260200183600401600101805480602002602001604051908101604052809291908181526020018280548015610be557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bc7575b5050505050815250868681518110610bff57610bff611932565b60200260200101819052508480610c1590611971565b9550505b5050508080610c2790611971565b915050610a15565b50909392505050565b60065460609060009067ffffffffffffffff811115610c5957610c5961191c565b604051908082528060200260200182016040528015610c9257816020015b610c7f611685565b815260200190600190039081610c775790505b50905060005b600654811015610e6f576000610caf60058361118c565b6001600160a01b0381166000908152600460205260409081902081516080810190925280549293509181908390610ce5906119cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d11906119cb565b8015610d5e5780601f10610d3357610100808354040283529160200191610d5e565b820191906000526020600020905b815481529060010190602001808311610d4157829003601f168201915b505050918352505060018301546001600160a01b03166020808301919091526003840180546040805182850281018501825282815294019392830182828015610dd057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610db2575b5050505050815260200182600401600101805480602002602001604051908101604052809291908181526020018280548015610e3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e17575b5050505050815250848481518110610e4f57610e4f611932565b602002602001018190525050508080610e6790611971565b915050610c98565b50919050565b610e7d610fdc565b6001600160a01b038116610ee25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a6565b610eeb81611036565b50565b600080825184610efe919061198a565b905060005b8351811015610f5d57610f3f848281518110610f2157610f21611932565b60209081029190910101516001546001600160a01b03169084610f85565b610f49828461195e565b925080610f5581611971565b915050610f03565b50838210156109ae576109ae610f7b6000546001600160a01b031690565b6105188487611b89565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610fd7908490611430565b505050565b6000546001600160a01b031633146105515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61109082826111bf565b61109e5761109e8282611222565b5050565b6001600160a01b0381166000908152602083905260409020545b92915050565b60008080805b6006548110156111555760006004816110e260058561118c565b6001600160a01b03166001600160a01b031681526020019081526020016000209050600061110f8261136a565b9050600181600281111561112557611125611b73565b036111405760038201548581111561113e578095508394505b505b5050808061114d90611971565b9150506110c8565b506004600061116560058461118c565b6001600160a01b03166001600160a01b031681526020019081526020016000209250505090565b60008260010182815481106111a3576111a3611932565b6000918252602090912001546001600160a01b03169392505050565b600182015460009081036111d5575060006110bc565b6001600160a01b038216600081815260208590526040902054600185018054909190811061120557611205611932565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b0381166112895760405162461bcd60e51b815260206004820152602860248201527f556e6f7264657265644b65795365742831303029202d204b65792063616e6e6f604482015267074206265203078360c41b60648201526084016102a6565b61129382826111bf565b156113125760405162461bcd60e51b815260206004820152604360248201527f556e6f726465726564416464726573735365742831303129202d20416464726560448201527f737320286b65792920616c72656164792065786973747320696e20746865207360648201526232ba1760e91b608482015260a4016102a6565b6001828101805480830182556000828152602090200180546001600160a01b0319166001600160a01b0385161790555461134c9190611b89565b6001600160a01b039091166000908152602092909252604090912055565b6005810154600090819060038401546113839190611b9c565b905060006113996000546001600160a01b031690565b6001600160a01b0316636407e0d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190611b5a565b905080821261140d575060019392505050565b61141681611bc3565b8213611426575060029392505050565b5060009392505050565b6000611485826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115029092919063ffffffff16565b805190915015610fd757808060200190518101906114a39190611bdf565b610fd75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a6565b6060611511848460008561151b565b90505b9392505050565b60608247101561157c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102a6565b6001600160a01b0385163b6115d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a6565b600080866001600160a01b031685876040516115ef9190611bfc565b60006040518083038185875af1925050503d806000811461162c576040519150601f19603f3d011682016040523d82523d6000602084013e611631565b606091505b509150915061164182828661164c565b979650505050505050565b6060831561165b575081611514565b82511561166b5782518084602001fd5b8160405162461bcd60e51b81526004016102a69190611c18565b60405180608001604052806060815260200160006001600160a01b0316815260200160608152602001606081525090565b60005b838110156116d15781810151838201526020016116b9565b50506000910152565b600081518084526116f28160208601602086016116b6565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561173f5781516001600160a01b03168752958201959082019060010161171a565b509495945050505050565b600081516080845261175f60808501826116da565b905060018060a01b0360208401511660208501526040830151848203604086015261178a8282611706565b915050606083015184820360608601526117a48282611706565b95945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561180257603f198886030184526117f085835161174a565b945092850192908501906001016117d4565b5092979650505050505050565b6000806020838503121561182257600080fd5b823567ffffffffffffffff8082111561183a57600080fd5b818501915085601f83011261184e57600080fd5b81358181111561185d57600080fd5b86602082850101111561186f57600080fd5b60209290920196919550909350505050565b602081526000611514602083018461174a565b8015158114610eeb57600080fd5b600080604083850312156118b557600080fd5b8235915060208301356118c781611894565b809150509250929050565b6000602082840312156118e457600080fd5b81356003811061151457600080fd5b60006020828403121561190557600080fd5b81356001600160a01b038116811461151457600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156110bc576110bc611948565b60006001820161198357611983611948565b5060010190565b6000826119a757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156119c6576119c6611948565b500290565b600181811c908216806119df57607f821691505b602082108103610e6f57634e487b7160e01b600052602260045260246000fd5b601f821115610fd757600081815260208120601f850160051c81016020861015611a265750805b601f850160051c820191505b8181101561052b57828155600101611a32565b67ffffffffffffffff831115611a5d57611a5d61191c565b611a7183611a6b83546119cb565b836119ff565b6000601f841160018114611aa55760008515611a8d5750838201355b600019600387901b1c1916600186901b178355611aff565b600083815260209020601f19861690835b82811015611ad65786850135825560209485019460019092019101611ab6565b5086821015611af35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160801b031986811682528516602082015260806040820181905281018390526000838560a0840137600060a0858401015260a0601f19601f86011683010190508260608301529695505050505050565b600060208284031215611b6c57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b818103818111156110bc576110bc611948565b8181036000831280158383131683831282161715611bbc57611bbc611948565b5092915050565b6000600160ff1b8201611bd857611bd8611948565b5060000390565b600060208284031215611bf157600080fd5b815161151481611894565b60008251611c0e8184602087016116b6565b9190910192915050565b60208152600061151460208301846116da56fea2646970667358221220b1cca8f5e4ce2b02a92a9eacef45ffe6427b969281c247f7761da10e39490a7b64736f6c63430008100033"; + +type GoldenBountyQuestionConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GoldenBountyQuestionConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GoldenBountyQuestion__factory extends ContractFactory { + constructor(...args: GoldenBountyQuestionConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + goldenTokenAddress: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + goldenTokenAddress, + _asker, + _subjectUUID, + _predicateUUID, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + goldenTokenAddress: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction( + goldenTokenAddress, + _asker, + _subjectUUID, + _predicateUUID, + overrides || {} + ); + } + override attach(address: string): GoldenBountyQuestion { + return super.attach(address) as GoldenBountyQuestion; + } + override connect(signer: Signer): GoldenBountyQuestion__factory { + return super.connect(signer) as GoldenBountyQuestion__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GoldenBountyQuestionInterface { + return new utils.Interface(_abi) as GoldenBountyQuestionInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): GoldenBountyQuestion { + return new Contract( + address, + _abi, + signerOrProvider + ) as GoldenBountyQuestion; + } +} diff --git a/typechain/factories/contracts/GoldenBounty.sol/GoldenBounty__factory.ts b/typechain/factories/contracts/GoldenBounty.sol/GoldenBounty__factory.ts new file mode 100644 index 00000000..bd8f3d15 --- /dev/null +++ b/typechain/factories/contracts/GoldenBounty.sol/GoldenBounty__factory.ts @@ -0,0 +1,229 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + GoldenBounty, + GoldenBountyInterface, +} from "../../../contracts/GoldenBounty.sol/GoldenBounty"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "goldenTokenAddress", + type: "address", + }, + { + internalType: "uint256", + name: "_minimumVotes", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "questionAddress", + type: "address", + }, + { + indexed: false, + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + ], + name: "QuestionCreated", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + { + internalType: "uint256", + name: "bounty", + type: "uint256", + }, + ], + name: "createQuestion", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "minimumVotes", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_minimumVotes", + type: "uint256", + }, + ], + name: "setMinimumVotes", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516129c33803806129c383398101604081905261002f916100b1565b61003833610061565b600180546001600160a01b0319166001600160a01b0393909316929092179091556002556100eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100c457600080fd5b82516001600160a01b03811681146100db57600080fd5b6020939093015192949293505050565b6128c9806100fa6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80636407e0d414610067578063715018a6146100835780638da5cb5b1461008d5780639902b633146100b2578063d6fbfb24146100c5578063f2fde38b146100d8575b600080fd5b61007060025481565b6040519081526020015b60405180910390f35b61008b6100eb565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b61008b6100c03660046107ac565b6100ff565b61009a6100d33660046107e2565b61010c565b61008b6100e636600461081e565b6103c3565b6100f361043c565b6100fd6000610496565b565b61010761043c565b600255565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017a9190610847565b61018590600a610966565b61018f9083610975565b156102075760405162461bcd60e51b815260206004820152603860248201527f476f6c64656e426f756e74793a20426f756e7479206d7573742062652061206d60448201527f756c7469706c65206f66203120476f6c64656e546f6b656e000000000000000060648201526084015b60405180910390fd5b60015482906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102899190610997565b10156102e35760405162461bcd60e51b8152602060048201526024808201527f476f6c64656e426f756e74793a20696e73756666696369656e7420616c6c6f77604482015263616e636560e01b60648201526084016101fe565b6001546000906001600160a01b03163386866040516103019061079e565b6001600160a01b0394851681529390921660208401526001600160801b03199081166040840152166060820152608001604051809103906000f08015801561034d573d6000803e3d6000fd5b50905080610369336001546001600160a01b03169083876104e6565b604080516001600160801b03198089168252871660208201526001600160a01b038316917f3076d13066db8356cf7cd41e2693da7420b7e1fbe6068dcf215ea724df87b3a2910160405180910390a29150505b9392505050565b6103cb61043c565b6001600160a01b0381166104305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101fe565b61043981610496565b50565b6000546001600160a01b031633146100fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101fe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610540908590610546565b50505050565b600061059b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661061d9092919063ffffffff16565b80519091501561061857808060200190518101906105b991906109b0565b6106185760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016101fe565b505050565b606061062c8484600085610634565b949350505050565b6060824710156106955760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016101fe565b6001600160a01b0385163b6106ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101fe565b600080866001600160a01b0316858760405161070891906109f6565b60006040518083038185875af1925050503d8060008114610745576040519150601f19603f3d011682016040523d82523d6000602084013e61074a565b606091505b509150915061075a828286610765565b979650505050505050565b606083156107745750816103bc565b8251156107845782518084602001fd5b8160405162461bcd60e51b81526004016101fe9190610a12565b611e4e8062000a4683390190565b6000602082840312156107be57600080fd5b5035919050565b80356001600160801b0319811681146107dd57600080fd5b919050565b6000806000606084860312156107f757600080fd5b610800846107c5565b925061080e602085016107c5565b9150604084013590509250925092565b60006020828403121561083057600080fd5b81356001600160a01b03811681146103bc57600080fd5b60006020828403121561085957600080fd5b815160ff811681146103bc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156108bb5781600019048211156108a1576108a161086a565b808516156108ae57918102915b93841c9390800290610885565b509250929050565b6000826108d257506001610960565b816108df57506000610960565b81600181146108f557600281146108ff5761091b565b6001915050610960565b60ff8411156109105761091061086a565b50506001821b610960565b5060208310610133831016604e8410600b841016171561093e575081810a610960565b6109488383610880565b806000190482111561095c5761095c61086a565b0290505b92915050565b60006103bc60ff8416836108c3565b60008261099257634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156109a957600080fd5b5051919050565b6000602082840312156109c257600080fd5b815180151581146103bc57600080fd5b60005b838110156109ed5781810151838201526020016109d5565b50506000910152565b60008251610a088184602087016109d2565b9190910192915050565b6020815260008251806020840152610a318160408501602087016109d2565b601f01601f1916919091016040019291505056fe60806040523480156200001157600080fd5b5060405162001e4e38038062001e4e833981016040819052620000349162000180565b6200003f33620000fa565b6001600160a01b038316620000b25760405162461bcd60e51b815260206004820152602f60248201527f476f6c64656e426f756e74795175657374696f6e3a2061736b6572206973207460448201526e6865207a65726f206164647265737360881b606482015260840160405180910390fd5b600180546001600160a01b039586166001600160a01b0319918216179091556002805494909516931692909217909255608090811c600160801b0291901c17600355620001dd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200016257600080fd5b919050565b80516001600160801b0319811681146200016257600080fd5b600080600080608085870312156200019757600080fd5b620001a2856200014a565b9350620001b2602086016200014a565b9250620001c26040860162000167565b9150620001d26060860162000167565b905092959194509250565b611c6180620001ed6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063943dfef111610097578063c9d27afe11610066578063c9d27afe146101f5578063da7e18c714610208578063e1145e4b1461021b578063f2fde38b1461022357600080fd5b8063943dfef1146101b05780639c314545146101c6578063bbe0ba85146101ce578063c7a66eb3146101e257600080fd5b80637a2faee0116100d35780637a2faee01461013d57806388775d8f1461016357806388fae0e9146101765780638da5cb5b1461018b57600080fd5b80634627216d1461010557806363bd1d4a146101235780636573f31e1461012d578063715018a614610135575b600080fd5b61010d610236565b60405161011a91906117ad565b60405180910390f35b61012b610247565b005b61010d610533565b61012b61053f565b60035461014a9060801b81565b6040516001600160801b0319909116815260200161011a565b61012b61017136600461180f565b610553565b61017e610652565b60405161011a9190611881565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b6101b86107de565b60405190815260200161011a565b61010d61084b565b60035461014a90600160801b900460801b81565b600254610198906001600160a01b031681565b61012b6102033660046118a2565b610857565b61010d6102163660046118d2565b6109b4565b61010d610c38565b61012b6102313660046118f3565b610e75565b606061024260026109b4565b905090565b6002546001600160a01b0316336001600160a01b0316146102af5760405162461bcd60e51b815260206004820152601f60248201527f476f6c64656e426f756e74795175657374696f6e3a206f6e6c7941736b65720060448201526064015b60405180910390fd5b60006102b961084b565b90506000815167ffffffffffffffff8111156102d7576102d761191c565b604051908082528060200260200182016040528015610300578160200160208202803683370190505b5090506000805b835181101561039e5783818151811061032257610322611932565b60200260200101516020015183828151811061034057610340611932565b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061037257610372611932565b602002602001015160400151518261038a919061195e565b91508061039681611971565b915050610307565b5060008167ffffffffffffffff8111156103ba576103ba61191c565b6040519080825280602002602001820160405280156103e3578160200160208202803683370190505b5090506000805b85518110156104b05760005b86828151811061040857610408611932565b6020026020010151604001515181101561049d5786828151811061042e5761042e611932565b602002602001015160400151818151811061044b5761044b611932565b602002602001015184848151811061046557610465611932565b6001600160a01b03909216602092830291909101909101528261048781611971565b935050808061049590611971565b9150506103f6565b50806104a881611971565b9150506103ea565b5060006104bb6107de565b90506104dc6104cb600a8361198a565b6104d69060066119ac565b86610eee565b6104fb6104ea600a8361198a565b6104f59060036119ac565b84610eee565b61052b6105106000546001600160a01b031690565b6105186107de565b6001546001600160a01b03169190610f85565b505050505050565b606061024260006109b4565b610547610fdc565b6105516000611036565b565b806105ae5760405162461bcd60e51b815260206004820152602560248201527f476f6c64656e426f756e74795175657374696f6e3a20616e7377657220697320604482015264656d70747960d81b60648201526084016102a6565b336000818152600460205260409020806105c9848683611a45565b506001810180546001600160a01b0319166001600160a01b0384161790556105f2600583611086565b6003547ffd045500a034a5e731f843b696fcd566854cd7ccb879d6b3adb708152bbe43e690608081811b91600160801b9004901b86866106336005886110a2565b604051610644959493929190611b06565b60405180910390a150505050565b61065a611685565b60006106646110c2565b90506040518060800160405280826000018054610680906119cb565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906119cb565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b505050918352505060018301546001600160a01b0316602080830191909152600384018054604080518285028101850182528281529401939283018282801561076b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161074d575b50505050508152602001826004016001018054806020026020016040519081016040528092919081815260200182805480156107d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107b2575b505050505081525091505090565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610827573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190611b5a565b606061024260016109b4565b60065482106108c75760405162461bcd60e51b815260206004820152603660248201527f476f6c64656e426f756e74795175657374696f6e3a207468657265206973206e6044820152750de40c2dce6eecae440c2e840e8d0c2e840d2dcc8caf60531b60648201526084016102a6565b60006004816108d760058661118c565b6001600160a01b03166001600160a01b03168152602001908152602001600020905060006109023390565b905061091160028301826111bf565b158015610928575061092660048301826111bf565b155b6109895760405162461bcd60e51b815260206004820152602c60248201527f476f6c64656e426f756e74795175657374696f6e3a20796f752068617665206160448201526b1b1c9958591e481d9bdd195960a21b60648201526084016102a6565b82156109a15761099c6002830182611222565b6109ae565b6109ae6004830182611222565b50505050565b60065460609060009067ffffffffffffffff8111156109d5576109d561191c565b604051908082528060200260200182016040528015610a0e57816020015b6109fb611685565b8152602001906001900390816109f35790505b5090506000805b600654811015610c2f576000610a2c60058361118c565b6001600160a01b0381166000908152600460205260408120919250610a508261136a565b9050876002811115610a6457610a64611b73565b816002811115610a7657610a76611b73565b03610c19576040518060800160405280836000018054610a95906119cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac1906119cb565b8015610b0e5780601f10610ae357610100808354040283529160200191610b0e565b820191906000526020600020905b815481529060010190602001808311610af157829003601f168201915b505050918352505060018401546001600160a01b03166020808301919091526003850180546040805182850281018501825282815294019392830182828015610b8057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b62575b5050505050815260200183600401600101805480602002602001604051908101604052809291908181526020018280548015610be557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bc7575b5050505050815250868681518110610bff57610bff611932565b60200260200101819052508480610c1590611971565b9550505b5050508080610c2790611971565b915050610a15565b50909392505050565b60065460609060009067ffffffffffffffff811115610c5957610c5961191c565b604051908082528060200260200182016040528015610c9257816020015b610c7f611685565b815260200190600190039081610c775790505b50905060005b600654811015610e6f576000610caf60058361118c565b6001600160a01b0381166000908152600460205260409081902081516080810190925280549293509181908390610ce5906119cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d11906119cb565b8015610d5e5780601f10610d3357610100808354040283529160200191610d5e565b820191906000526020600020905b815481529060010190602001808311610d4157829003601f168201915b505050918352505060018301546001600160a01b03166020808301919091526003840180546040805182850281018501825282815294019392830182828015610dd057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610db2575b5050505050815260200182600401600101805480602002602001604051908101604052809291908181526020018280548015610e3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e17575b5050505050815250848481518110610e4f57610e4f611932565b602002602001018190525050508080610e6790611971565b915050610c98565b50919050565b610e7d610fdc565b6001600160a01b038116610ee25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a6565b610eeb81611036565b50565b600080825184610efe919061198a565b905060005b8351811015610f5d57610f3f848281518110610f2157610f21611932565b60209081029190910101516001546001600160a01b03169084610f85565b610f49828461195e565b925080610f5581611971565b915050610f03565b50838210156109ae576109ae610f7b6000546001600160a01b031690565b6105188487611b89565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610fd7908490611430565b505050565b6000546001600160a01b031633146105515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61109082826111bf565b61109e5761109e8282611222565b5050565b6001600160a01b0381166000908152602083905260409020545b92915050565b60008080805b6006548110156111555760006004816110e260058561118c565b6001600160a01b03166001600160a01b031681526020019081526020016000209050600061110f8261136a565b9050600181600281111561112557611125611b73565b036111405760038201548581111561113e578095508394505b505b5050808061114d90611971565b9150506110c8565b506004600061116560058461118c565b6001600160a01b03166001600160a01b031681526020019081526020016000209250505090565b60008260010182815481106111a3576111a3611932565b6000918252602090912001546001600160a01b03169392505050565b600182015460009081036111d5575060006110bc565b6001600160a01b038216600081815260208590526040902054600185018054909190811061120557611205611932565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b0381166112895760405162461bcd60e51b815260206004820152602860248201527f556e6f7264657265644b65795365742831303029202d204b65792063616e6e6f604482015267074206265203078360c41b60648201526084016102a6565b61129382826111bf565b156113125760405162461bcd60e51b815260206004820152604360248201527f556e6f726465726564416464726573735365742831303129202d20416464726560448201527f737320286b65792920616c72656164792065786973747320696e20746865207360648201526232ba1760e91b608482015260a4016102a6565b6001828101805480830182556000828152602090200180546001600160a01b0319166001600160a01b0385161790555461134c9190611b89565b6001600160a01b039091166000908152602092909252604090912055565b6005810154600090819060038401546113839190611b9c565b905060006113996000546001600160a01b031690565b6001600160a01b0316636407e0d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190611b5a565b905080821261140d575060019392505050565b61141681611bc3565b8213611426575060029392505050565b5060009392505050565b6000611485826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115029092919063ffffffff16565b805190915015610fd757808060200190518101906114a39190611bdf565b610fd75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a6565b6060611511848460008561151b565b90505b9392505050565b60608247101561157c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102a6565b6001600160a01b0385163b6115d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a6565b600080866001600160a01b031685876040516115ef9190611bfc565b60006040518083038185875af1925050503d806000811461162c576040519150601f19603f3d011682016040523d82523d6000602084013e611631565b606091505b509150915061164182828661164c565b979650505050505050565b6060831561165b575081611514565b82511561166b5782518084602001fd5b8160405162461bcd60e51b81526004016102a69190611c18565b60405180608001604052806060815260200160006001600160a01b0316815260200160608152602001606081525090565b60005b838110156116d15781810151838201526020016116b9565b50506000910152565b600081518084526116f28160208601602086016116b6565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561173f5781516001600160a01b03168752958201959082019060010161171a565b509495945050505050565b600081516080845261175f60808501826116da565b905060018060a01b0360208401511660208501526040830151848203604086015261178a8282611706565b915050606083015184820360608601526117a48282611706565b95945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561180257603f198886030184526117f085835161174a565b945092850192908501906001016117d4565b5092979650505050505050565b6000806020838503121561182257600080fd5b823567ffffffffffffffff8082111561183a57600080fd5b818501915085601f83011261184e57600080fd5b81358181111561185d57600080fd5b86602082850101111561186f57600080fd5b60209290920196919550909350505050565b602081526000611514602083018461174a565b8015158114610eeb57600080fd5b600080604083850312156118b557600080fd5b8235915060208301356118c781611894565b809150509250929050565b6000602082840312156118e457600080fd5b81356003811061151457600080fd5b60006020828403121561190557600080fd5b81356001600160a01b038116811461151457600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156110bc576110bc611948565b60006001820161198357611983611948565b5060010190565b6000826119a757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156119c6576119c6611948565b500290565b600181811c908216806119df57607f821691505b602082108103610e6f57634e487b7160e01b600052602260045260246000fd5b601f821115610fd757600081815260208120601f850160051c81016020861015611a265750805b601f850160051c820191505b8181101561052b57828155600101611a32565b67ffffffffffffffff831115611a5d57611a5d61191c565b611a7183611a6b83546119cb565b836119ff565b6000601f841160018114611aa55760008515611a8d5750838201355b600019600387901b1c1916600186901b178355611aff565b600083815260209020601f19861690835b82811015611ad65786850135825560209485019460019092019101611ab6565b5086821015611af35760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160801b031986811682528516602082015260806040820181905281018390526000838560a0840137600060a0858401015260a0601f19601f86011683010190508260608301529695505050505050565b600060208284031215611b6c57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b818103818111156110bc576110bc611948565b8181036000831280158383131683831282161715611bbc57611bbc611948565b5092915050565b6000600160ff1b8201611bd857611bd8611948565b5060000390565b600060208284031215611bf157600080fd5b815161151481611894565b60008251611c0e8184602087016116b6565b9190910192915050565b60208152600061151460208301846116da56fea2646970667358221220b1cca8f5e4ce2b02a92a9eacef45ffe6427b969281c247f7761da10e39490a7b64736f6c63430008100033a26469706673582212206329d0a8065091f64f1b5278af917e26d277d27d1a0b4d35b660774a8a08208464736f6c63430008100033"; + +type GoldenBountyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GoldenBountyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GoldenBounty__factory extends ContractFactory { + constructor(...args: GoldenBountyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + goldenTokenAddress: string, + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + goldenTokenAddress, + _minimumVotes, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + goldenTokenAddress: string, + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction( + goldenTokenAddress, + _minimumVotes, + overrides || {} + ); + } + override attach(address: string): GoldenBounty { + return super.attach(address) as GoldenBounty; + } + override connect(signer: Signer): GoldenBounty__factory { + return super.connect(signer) as GoldenBounty__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GoldenBountyInterface { + return new utils.Interface(_abi) as GoldenBountyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): GoldenBounty { + return new Contract(address, _abi, signerOrProvider) as GoldenBounty; + } +} diff --git a/typechain/factories/contracts/GoldenBounty.sol/index.ts b/typechain/factories/contracts/GoldenBounty.sol/index.ts new file mode 100644 index 00000000..b2f7b8d3 --- /dev/null +++ b/typechain/factories/contracts/GoldenBounty.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { GoldenBounty__factory } from "./GoldenBounty__factory"; +export { GoldenBountyQuestion__factory } from "./GoldenBountyQuestion__factory"; diff --git a/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocolQuestion__factory.ts b/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocolQuestion__factory.ts new file mode 100644 index 00000000..bbffd59a --- /dev/null +++ b/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocolQuestion__factory.ts @@ -0,0 +1,384 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BytesLike, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + GoldenProtocolQuestion, + GoldenProtocolQuestionInterface, +} from "../../../contracts/GoldenProtocol.sol/GoldenProtocolQuestion"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "goldenTokenAddress", + type: "address", + }, + { + internalType: "address", + name: "_asker", + type: "address", + }, + { + internalType: "bytes16", + name: "_subjectUUID", + type: "bytes16", + }, + { + internalType: "bytes16", + name: "_predicateUUID", + type: "bytes16", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "string", + name: "answer", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "AnswerAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "string", + name: "_answer", + type: "string", + }, + ], + name: "addAnswer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "answer", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "answers", + outputs: [ + { + components: [ + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "uint256", + name: "voteCount", + type: "uint256", + }, + ], + internalType: "struct GoldenProtocolQuestion.Answer[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "asker", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "bounty", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "string", + name: "value", + type: "string", + }, + ], + name: "hashAnswer", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "payout", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "predicateUUID", + outputs: [ + { + internalType: "bytes16", + name: "", + type: "bytes16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "subjectUUID", + outputs: [ + { + internalType: "bytes16", + name: "", + type: "bytes16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "topAnswer", + outputs: [ + { + components: [ + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "uint256", + name: "voteCount", + type: "uint256", + }, + ], + internalType: "struct GoldenProtocolQuestion.Answer", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "upvote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604051620018b8380380620018b8833981016040819052620000349162000182565b6200003f33620000fc565b6001600160a01b038316620000b45760405162461bcd60e51b815260206004820152603160248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a2061736b657220697360448201527020746865207a65726f206164647265737360781b606482015260840160405180910390fd5b600180546001600160a01b039586166001600160a01b0319918216179091556002805494909516931692909217909255608090811c600160801b0291901c17600355620001df565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200016457600080fd5b919050565b80516001600160801b0319811681146200016457600080fd5b600080600080608085870312156200019957600080fd5b620001a4856200014c565b9350620001b4602086016200014c565b9250620001c46040860162000169565b9150620001d46060860162000169565b905092959194509250565b6116c980620001ef6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806388fae0e91161008c578063bbe0ba8511610066578063bbe0ba85146101ca578063c7a66eb3146101de578063e1145e4b146101f1578063f2fde38b1461020657600080fd5b806388fae0e9146101885780638da5cb5b1461019d578063943dfef1146101c257600080fd5b8063715018a6116100c8578063715018a6146101325780637a2faee01461013a57806385bb7d691461016057806388775d8f1461017557600080fd5b806301ddf070146100ef578063366b2baa1461010457806363bd1d4a1461012a575b600080fd5b6101026100fd3660046110a9565b610219565b005b6101176101123660046110f4565b610374565b6040519081526020015b60405180910390f35b6101026103ab565b61010261059c565b6003546101479060801b81565b6040516001600160801b03199091168152602001610121565b6101686105b0565b6040516101219190611206565b610102610183366004611219565b61063e565b61019061073c565b60405161012191906112c6565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610121565b6101176108b6565b60035461014790600160801b900460801b81565b6002546101aa906001600160a01b031681565b6101f9610928565b60405161012191906112d9565b61010261021436600461133b565b610ae9565b60065481106102955760405162461bcd60e51b815260206004820152603860248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20746865726520697360448201527f206e6f20616e73776572206174207468617420696e646578000000000000000060648201526084015b60405180910390fd5b336000908152600a6020526040902054156103095760405162461bcd60e51b815260206004820152602e60248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20796f75206861766560448201526d08185b1c9958591e481d9bdd195960921b606482015260840161028c565b6000610316600583610b62565b6001600160a01b0381166000908152600b60205260408120805492935033926001929061034490849061136c565b90915550506001600160a01b0381166000908152600a6020526040902083905561036f600782610b95565b505050565b6000828260405160200161038992919061137f565b6040516020818303038152906040528051906020012060001c90505b92915050565b6002546001600160a01b0316331461040f5760405162461bcd60e51b815260206004820152602160248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a206f6e6c7941736b656044820152603960f91b606482015260840161028c565b600061041961073c565b905080604001516104326000546001600160a01b031690565b6001600160a01b0316636407e0d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561046f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049391906113a3565b11156104fe5760405162461bcd60e51b815260206004820152603460248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a207061796f75743a206044820152731b5a5b9a5b5d5b559bdd195cc81b9bdd081b595d60621b606482015260840161028c565b6020810151600490610510908261143e565b5080516001546040516370a0823160e01b81523060048201526105989183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058591906113a3565b6001546001600160a01b03169190610bad565b5050565b6105a4610bff565b6105ae6000610c59565b565b600480546105bd906113bc565b80601f01602080910402602001604051908101604052809291908181526020018280546105e9906113bc565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b505050505081565b8061069b5760405162461bcd60e51b815260206004820152602760248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20616e7377657220696044820152667320656d70747960c81b606482015260840161028c565b3360008181526009602052604090206106b58385836114fe565b506106c1600582610b95565b6001600160a01b0381166000908152600b602090815260408083208390556003546005909252918290205491517ffd045500a034a5e731f843b696fcd566854cd7ccb879d6b3adb708152bbe43e69261072f92608081811b93600160801b909204901b9188918891906115bf565b60405180910390a1505050565b610769604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b60008060005b6006548110156107cd576000600b81610789600585610b62565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508381106107ba578093508192505b50806107c581611613565b91505061076f565b5060006107db600583610b62565b90506040518060600160405280826001600160a01b0316815260200160096000846001600160a01b03166001600160a01b031681526020019081526020016000208054610827906113bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610853906113bc565b80156108a05780601f10610875576101008083540402835291602001916108a0565b820191906000526020600020905b81548152906001019060200180831161088357829003601f168201915b5050505050815260200184815250935050505090565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906113a3565b905090565b60065460609060009067ffffffffffffffff811115610949576109496110de565b6040519080825280602002602001820160405280156109a757816020015b610994604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b8152602001906001900390816109675790505b50905060005b600654811015610ae35760006109c4600583610b62565b90506040518060600160405280826001600160a01b0316815260200160096000846001600160a01b03166001600160a01b031681526020019081526020016000208054610a10906113bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c906113bc565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b50505091835250506001600160a01b0383166000908152600b60209081526040909120549101528351849084908110610ac457610ac461162c565b6020026020010181905250508080610adb90611613565b9150506109ad565b50919050565b610af1610bff565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028c565b610b5f81610c59565b50565b6000826001018281548110610b7957610b7961162c565b6000918252602090912001546001600160a01b03169392505050565b610b9f8282610ca9565b610598576105988282610d0c565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261036f908490610e54565b6000546001600160a01b031633146105ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161028c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60018201546000908103610cbf575060006103a5565b6001600160a01b0382166000818152602085905260409020546001850180549091908110610cef57610cef61162c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b038116610d735760405162461bcd60e51b815260206004820152602860248201527f556e6f7264657265644b65795365742831303029202d204b65792063616e6e6f604482015267074206265203078360c41b606482015260840161028c565b610d7d8282610ca9565b15610dfc5760405162461bcd60e51b815260206004820152604360248201527f556e6f726465726564416464726573735365742831303129202d20416464726560448201527f737320286b65792920616c72656164792065786973747320696e20746865207360648201526232ba1760e91b608482015260a40161028c565b6001828101805480830182556000828152602090200180546001600160a01b0319166001600160a01b03851617905554610e369190611642565b6001600160a01b039091166000908152602092909252604090912055565b6000610ea9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f269092919063ffffffff16565b80519091501561036f5780806020019051810190610ec79190611655565b61036f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161028c565b6060610f358484600085610f3f565b90505b9392505050565b606082471015610fa05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161028c565b6001600160a01b0385163b610ff75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161028c565b600080866001600160a01b031685876040516110139190611677565b60006040518083038185875af1925050503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b5091509150611065828286611070565b979650505050505050565b6060831561107f575081610f38565b82511561108f5782518084602001fd5b8160405162461bcd60e51b815260040161028c9190611206565b6000602082840312156110bb57600080fd5b5035919050565b80356001600160a01b03811681146110d957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561110757600080fd5b611110836110c2565b9150602083013567ffffffffffffffff8082111561112d57600080fd5b818501915085601f83011261114157600080fd5b813581811115611153576111536110de565b604051601f8201601f19908116603f0116810190838211818310171561117b5761117b6110de565b8160405282815288602084870101111561119457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156111d15781810151838201526020016111b9565b50506000910152565b600081518084526111f28160208601602086016111b6565b601f01601f19169290920160200192915050565b602081526000610f3860208301846111da565b6000806020838503121561122c57600080fd5b823567ffffffffffffffff8082111561124457600080fd5b818501915085601f83011261125857600080fd5b81358181111561126757600080fd5b86602082850101111561127957600080fd5b60209290920196919550909350505050565b60018060a01b03815116825260006020820151606060208501526112b260608501826111da565b604093840151949093019390935250919050565b602081526000610f38602083018461128b565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561132e57603f1988860301845261131c85835161128b565b94509285019290850190600101611300565b5092979650505050505050565b60006020828403121561134d57600080fd5b610f38826110c2565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a5576103a5611356565b6001600160a01b0383168152604060208201819052600090610f35908301846111da565b6000602082840312156113b557600080fd5b5051919050565b600181811c908216806113d057607f821691505b602082108103610ae357634e487b7160e01b600052602260045260246000fd5b601f82111561036f57600081815260208120601f850160051c810160208610156114175750805b601f850160051c820191505b8181101561143657828155600101611423565b505050505050565b815167ffffffffffffffff811115611458576114586110de565b61146c8161146684546113bc565b846113f0565b602080601f8311600181146114a157600084156114895750858301515b600019600386901b1c1916600185901b178555611436565b600085815260208120601f198616915b828110156114d0578886015182559484019460019091019084016114b1565b50858210156114ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831115611516576115166110de565b61152a8361152483546113bc565b836113f0565b6000601f84116001811461155e57600085156115465750838201355b600019600387901b1c1916600186901b1783556115b8565b600083815260209020601f19861690835b8281101561158f578685013582556020948501946001909201910161156f565b50868210156115ac5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160801b031986811682528516602082015260806040820181905281018390526000838560a0840137600060a0858401015260a0601f19601f86011683010190508260608301529695505050505050565b60006001820161162557611625611356565b5060010190565b634e487b7160e01b600052603260045260246000fd5b818103818111156103a5576103a5611356565b60006020828403121561166757600080fd5b81518015158114610f3857600080fd5b600082516116898184602087016111b6565b919091019291505056fea2646970667358221220084ace50975668d3c2bd8971aa83637599ad4cf6cd00178a81b7bc1f1516824864736f6c63430008100033"; + +type GoldenProtocolQuestionConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GoldenProtocolQuestionConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GoldenProtocolQuestion__factory extends ContractFactory { + constructor(...args: GoldenProtocolQuestionConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + goldenTokenAddress: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + goldenTokenAddress, + _asker, + _subjectUUID, + _predicateUUID, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + goldenTokenAddress: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction( + goldenTokenAddress, + _asker, + _subjectUUID, + _predicateUUID, + overrides || {} + ); + } + override attach(address: string): GoldenProtocolQuestion { + return super.attach(address) as GoldenProtocolQuestion; + } + override connect(signer: Signer): GoldenProtocolQuestion__factory { + return super.connect(signer) as GoldenProtocolQuestion__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GoldenProtocolQuestionInterface { + return new utils.Interface(_abi) as GoldenProtocolQuestionInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): GoldenProtocolQuestion { + return new Contract( + address, + _abi, + signerOrProvider + ) as GoldenProtocolQuestion; + } +} diff --git a/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocol__factory.ts b/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocol__factory.ts new file mode 100644 index 00000000..c71d301b --- /dev/null +++ b/typechain/factories/contracts/GoldenProtocol.sol/GoldenProtocol__factory.ts @@ -0,0 +1,229 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + GoldenProtocol, + GoldenProtocolInterface, +} from "../../../contracts/GoldenProtocol.sol/GoldenProtocol"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "goldenTokenAddress", + type: "address", + }, + { + internalType: "uint256", + name: "_minimumVotes", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "questionAddress", + type: "address", + }, + { + indexed: false, + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + indexed: false, + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + ], + name: "QuestionCreated", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes16", + name: "subjectUUID", + type: "bytes16", + }, + { + internalType: "bytes16", + name: "predicateUUID", + type: "bytes16", + }, + { + internalType: "uint256", + name: "bounty", + type: "uint256", + }, + ], + name: "createQuestion", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "minimumVotes", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_minimumVotes", + type: "uint256", + }, + ], + name: "setMinimumVotes", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516121f03803806121f083398101604081905261002f916100b1565b61003833610061565b600180546001600160a01b0319166001600160a01b0393909316929092179091556002556100eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100c457600080fd5b82516001600160a01b03811681146100db57600080fd5b6020939093015192949293505050565b6120f6806100fa6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80636407e0d414610067578063715018a6146100835780638da5cb5b1461008d5780639902b633146100b2578063d6fbfb24146100c5578063f2fde38b146100d8575b600080fd5b61007060025481565b6040519081526020015b60405180910390f35b61008b6100eb565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b61008b6100c03660046106bf565b6100ff565b61009a6100d33660046106f5565b61010c565b61008b6100e6366004610731565b6102d7565b6100f3610350565b6100fd60006103aa565b565b610107610350565b600255565b60015460009082906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610191919061075a565b10156101f35760405162461bcd60e51b815260206004820152602660248201527f476f6c64656e50726f746f636f6c3a20696e73756666696369656e7420616c6c6044820152656f77616e636560d01b60648201526084015b60405180910390fd5b6001546040516000916001600160a01b031690339087908790610215906106b2565b6001600160a01b0394851681529390921660208401526001600160801b03199081166040840152166060820152608001604051809103906000f080158015610261573d6000803e3d6000fd5b5090508061027d336001546001600160a01b03169083876103fa565b604080516001600160801b03198089168252871660208201526001600160a01b038316917f3076d13066db8356cf7cd41e2693da7420b7e1fbe6068dcf215ea724df87b3a2910160405180910390a29150505b9392505050565b6102df610350565b6001600160a01b0381166103445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ea565b61034d816103aa565b50565b6000546001600160a01b031633146100fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261045490859061045a565b50505050565b60006104af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105319092919063ffffffff16565b80519091501561052c57808060200190518101906104cd9190610773565b61052c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016101ea565b505050565b60606105408484600085610548565b949350505050565b6060824710156105a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016101ea565b6001600160a01b0385163b6106005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101ea565b600080866001600160a01b0316858760405161061c91906107b9565b60006040518083038185875af1925050503d8060008114610659576040519150601f19603f3d011682016040523d82523d6000602084013e61065e565b606091505b509150915061066e828286610679565b979650505050505050565b606083156106885750816102d0565b8251156106985782518084602001fd5b8160405162461bcd60e51b81526004016101ea91906107d5565b6118b88061080983390190565b6000602082840312156106d157600080fd5b5035919050565b80356001600160801b0319811681146106f057600080fd5b919050565b60008060006060848603121561070a57600080fd5b610713846106d8565b9250610721602085016106d8565b9150604084013590509250925092565b60006020828403121561074357600080fd5b81356001600160a01b03811681146102d057600080fd5b60006020828403121561076c57600080fd5b5051919050565b60006020828403121561078557600080fd5b815180151581146102d057600080fd5b60005b838110156107b0578181015183820152602001610798565b50506000910152565b600082516107cb818460208701610795565b9190910192915050565b60208152600082518060208401526107f4816040850160208701610795565b601f01601f1916919091016040019291505056fe60806040523480156200001157600080fd5b50604051620018b8380380620018b8833981016040819052620000349162000182565b6200003f33620000fc565b6001600160a01b038316620000b45760405162461bcd60e51b815260206004820152603160248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a2061736b657220697360448201527020746865207a65726f206164647265737360781b606482015260840160405180910390fd5b600180546001600160a01b039586166001600160a01b0319918216179091556002805494909516931692909217909255608090811c600160801b0291901c17600355620001df565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200016457600080fd5b919050565b80516001600160801b0319811681146200016457600080fd5b600080600080608085870312156200019957600080fd5b620001a4856200014c565b9350620001b4602086016200014c565b9250620001c46040860162000169565b9150620001d46060860162000169565b905092959194509250565b6116c980620001ef6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806388fae0e91161008c578063bbe0ba8511610066578063bbe0ba85146101ca578063c7a66eb3146101de578063e1145e4b146101f1578063f2fde38b1461020657600080fd5b806388fae0e9146101885780638da5cb5b1461019d578063943dfef1146101c257600080fd5b8063715018a6116100c8578063715018a6146101325780637a2faee01461013a57806385bb7d691461016057806388775d8f1461017557600080fd5b806301ddf070146100ef578063366b2baa1461010457806363bd1d4a1461012a575b600080fd5b6101026100fd3660046110a9565b610219565b005b6101176101123660046110f4565b610374565b6040519081526020015b60405180910390f35b6101026103ab565b61010261059c565b6003546101479060801b81565b6040516001600160801b03199091168152602001610121565b6101686105b0565b6040516101219190611206565b610102610183366004611219565b61063e565b61019061073c565b60405161012191906112c6565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610121565b6101176108b6565b60035461014790600160801b900460801b81565b6002546101aa906001600160a01b031681565b6101f9610928565b60405161012191906112d9565b61010261021436600461133b565b610ae9565b60065481106102955760405162461bcd60e51b815260206004820152603860248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20746865726520697360448201527f206e6f20616e73776572206174207468617420696e646578000000000000000060648201526084015b60405180910390fd5b336000908152600a6020526040902054156103095760405162461bcd60e51b815260206004820152602e60248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20796f75206861766560448201526d08185b1c9958591e481d9bdd195960921b606482015260840161028c565b6000610316600583610b62565b6001600160a01b0381166000908152600b60205260408120805492935033926001929061034490849061136c565b90915550506001600160a01b0381166000908152600a6020526040902083905561036f600782610b95565b505050565b6000828260405160200161038992919061137f565b6040516020818303038152906040528051906020012060001c90505b92915050565b6002546001600160a01b0316331461040f5760405162461bcd60e51b815260206004820152602160248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a206f6e6c7941736b656044820152603960f91b606482015260840161028c565b600061041961073c565b905080604001516104326000546001600160a01b031690565b6001600160a01b0316636407e0d46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561046f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049391906113a3565b11156104fe5760405162461bcd60e51b815260206004820152603460248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a207061796f75743a206044820152731b5a5b9a5b5d5b559bdd195cc81b9bdd081b595d60621b606482015260840161028c565b6020810151600490610510908261143e565b5080516001546040516370a0823160e01b81523060048201526105989183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058591906113a3565b6001546001600160a01b03169190610bad565b5050565b6105a4610bff565b6105ae6000610c59565b565b600480546105bd906113bc565b80601f01602080910402602001604051908101604052809291908181526020018280546105e9906113bc565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b505050505081565b8061069b5760405162461bcd60e51b815260206004820152602760248201527f476f6c64656e50726f746f636f6c5175657374696f6e3a20616e7377657220696044820152667320656d70747960c81b606482015260840161028c565b3360008181526009602052604090206106b58385836114fe565b506106c1600582610b95565b6001600160a01b0381166000908152600b602090815260408083208390556003546005909252918290205491517ffd045500a034a5e731f843b696fcd566854cd7ccb879d6b3adb708152bbe43e69261072f92608081811b93600160801b909204901b9188918891906115bf565b60405180910390a1505050565b610769604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b60008060005b6006548110156107cd576000600b81610789600585610b62565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508381106107ba578093508192505b50806107c581611613565b91505061076f565b5060006107db600583610b62565b90506040518060600160405280826001600160a01b0316815260200160096000846001600160a01b03166001600160a01b031681526020019081526020016000208054610827906113bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610853906113bc565b80156108a05780601f10610875576101008083540402835291602001916108a0565b820191906000526020600020905b81548152906001019060200180831161088357829003601f168201915b5050505050815260200184815250935050505090565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906113a3565b905090565b60065460609060009067ffffffffffffffff811115610949576109496110de565b6040519080825280602002602001820160405280156109a757816020015b610994604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b8152602001906001900390816109675790505b50905060005b600654811015610ae35760006109c4600583610b62565b90506040518060600160405280826001600160a01b0316815260200160096000846001600160a01b03166001600160a01b031681526020019081526020016000208054610a10906113bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c906113bc565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b50505091835250506001600160a01b0383166000908152600b60209081526040909120549101528351849084908110610ac457610ac461162c565b6020026020010181905250508080610adb90611613565b9150506109ad565b50919050565b610af1610bff565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028c565b610b5f81610c59565b50565b6000826001018281548110610b7957610b7961162c565b6000918252602090912001546001600160a01b03169392505050565b610b9f8282610ca9565b610598576105988282610d0c565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261036f908490610e54565b6000546001600160a01b031633146105ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161028c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60018201546000908103610cbf575060006103a5565b6001600160a01b0382166000818152602085905260409020546001850180549091908110610cef57610cef61162c565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b038116610d735760405162461bcd60e51b815260206004820152602860248201527f556e6f7264657265644b65795365742831303029202d204b65792063616e6e6f604482015267074206265203078360c41b606482015260840161028c565b610d7d8282610ca9565b15610dfc5760405162461bcd60e51b815260206004820152604360248201527f556e6f726465726564416464726573735365742831303129202d20416464726560448201527f737320286b65792920616c72656164792065786973747320696e20746865207360648201526232ba1760e91b608482015260a40161028c565b6001828101805480830182556000828152602090200180546001600160a01b0319166001600160a01b03851617905554610e369190611642565b6001600160a01b039091166000908152602092909252604090912055565b6000610ea9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f269092919063ffffffff16565b80519091501561036f5780806020019051810190610ec79190611655565b61036f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161028c565b6060610f358484600085610f3f565b90505b9392505050565b606082471015610fa05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161028c565b6001600160a01b0385163b610ff75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161028c565b600080866001600160a01b031685876040516110139190611677565b60006040518083038185875af1925050503d8060008114611050576040519150601f19603f3d011682016040523d82523d6000602084013e611055565b606091505b5091509150611065828286611070565b979650505050505050565b6060831561107f575081610f38565b82511561108f5782518084602001fd5b8160405162461bcd60e51b815260040161028c9190611206565b6000602082840312156110bb57600080fd5b5035919050565b80356001600160a01b03811681146110d957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561110757600080fd5b611110836110c2565b9150602083013567ffffffffffffffff8082111561112d57600080fd5b818501915085601f83011261114157600080fd5b813581811115611153576111536110de565b604051601f8201601f19908116603f0116810190838211818310171561117b5761117b6110de565b8160405282815288602084870101111561119457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156111d15781810151838201526020016111b9565b50506000910152565b600081518084526111f28160208601602086016111b6565b601f01601f19169290920160200192915050565b602081526000610f3860208301846111da565b6000806020838503121561122c57600080fd5b823567ffffffffffffffff8082111561124457600080fd5b818501915085601f83011261125857600080fd5b81358181111561126757600080fd5b86602082850101111561127957600080fd5b60209290920196919550909350505050565b60018060a01b03815116825260006020820151606060208501526112b260608501826111da565b604093840151949093019390935250919050565b602081526000610f38602083018461128b565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561132e57603f1988860301845261131c85835161128b565b94509285019290850190600101611300565b5092979650505050505050565b60006020828403121561134d57600080fd5b610f38826110c2565b634e487b7160e01b600052601160045260246000fd5b808201808211156103a5576103a5611356565b6001600160a01b0383168152604060208201819052600090610f35908301846111da565b6000602082840312156113b557600080fd5b5051919050565b600181811c908216806113d057607f821691505b602082108103610ae357634e487b7160e01b600052602260045260246000fd5b601f82111561036f57600081815260208120601f850160051c810160208610156114175750805b601f850160051c820191505b8181101561143657828155600101611423565b505050505050565b815167ffffffffffffffff811115611458576114586110de565b61146c8161146684546113bc565b846113f0565b602080601f8311600181146114a157600084156114895750858301515b600019600386901b1c1916600185901b178555611436565b600085815260208120601f198616915b828110156114d0578886015182559484019460019091019084016114b1565b50858210156114ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831115611516576115166110de565b61152a8361152483546113bc565b836113f0565b6000601f84116001811461155e57600085156115465750838201355b600019600387901b1c1916600186901b1783556115b8565b600083815260209020601f19861690835b8281101561158f578685013582556020948501946001909201910161156f565b50868210156115ac5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160801b031986811682528516602082015260806040820181905281018390526000838560a0840137600060a0858401015260a0601f19601f86011683010190508260608301529695505050505050565b60006001820161162557611625611356565b5060010190565b634e487b7160e01b600052603260045260246000fd5b818103818111156103a5576103a5611356565b60006020828403121561166757600080fd5b81518015158114610f3857600080fd5b600082516116898184602087016111b6565b919091019291505056fea2646970667358221220084ace50975668d3c2bd8971aa83637599ad4cf6cd00178a81b7bc1f1516824864736f6c63430008100033a264697066735822122041568e889a39e081d7a6ce17c98800f2528722cc1825e78a2ee72822c38de98964736f6c63430008100033"; + +type GoldenProtocolConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: GoldenProtocolConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class GoldenProtocol__factory extends ContractFactory { + constructor(...args: GoldenProtocolConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + goldenTokenAddress: string, + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + goldenTokenAddress, + _minimumVotes, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + goldenTokenAddress: string, + _minimumVotes: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction( + goldenTokenAddress, + _minimumVotes, + overrides || {} + ); + } + override attach(address: string): GoldenProtocol { + return super.attach(address) as GoldenProtocol; + } + override connect(signer: Signer): GoldenProtocol__factory { + return super.connect(signer) as GoldenProtocol__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): GoldenProtocolInterface { + return new utils.Interface(_abi) as GoldenProtocolInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): GoldenProtocol { + return new Contract(address, _abi, signerOrProvider) as GoldenProtocol; + } +} diff --git a/typechain/factories/contracts/GoldenProtocol.sol/Question__factory.ts b/typechain/factories/contracts/GoldenProtocol.sol/Question__factory.ts new file mode 100644 index 00000000..69e628d9 --- /dev/null +++ b/typechain/factories/contracts/GoldenProtocol.sol/Question__factory.ts @@ -0,0 +1,238 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BytesLike, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + Question, + QuestionInterface, +} from "../../../contracts/GoldenProtocol.sol/Question"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_owner", + type: "address", + }, + { + internalType: "address", + name: "_asker", + type: "address", + }, + { + internalType: "bytes16", + name: "_subjectUUID", + type: "bytes16", + }, + { + internalType: "bytes16", + name: "_predicateUUID", + type: "bytes16", + }, + { + internalType: "uint256", + name: "_bounty", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "string", + name: "_answer", + type: "string", + }, + ], + name: "addAnswer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "answers", + outputs: [ + { + internalType: "string[]", + name: "", + type: "string[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "string", + name: "value", + type: "string", + }, + ], + name: "hashAnswer", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "payout", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "topAnswer", + outputs: [ + { + components: [ + { + internalType: "address", + name: "answerer", + type: "address", + }, + { + internalType: "string", + name: "answer", + type: "string", + }, + { + internalType: "uint256", + name: "voteCount", + type: "uint256", + }, + ], + internalType: "struct Question.Answer", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "upvote", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "votes", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50604051610ed1380380610ed183398101604081905261002f916100af565b600080546001600160a01b039687166001600160a01b0319918216179091556001805495909616941693909317909355608092831c600160801b02921c9190911760035560025561010d565b80516001600160a01b038116811461009257600080fd5b919050565b80516001600160801b03198116811461009257600080fd5b600080600080600060a086880312156100c757600080fd5b6100d08661007b565b94506100de6020870161007b565b93506100ec60408701610097565b92506100fa60608701610097565b9150608086015190509295509295909350565b610db58061011c6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806388775d8f1161005b57806388775d8f146100c557806388fae0e9146100d8578063e1145e4b146100ed578063e168c3ec1461010257600080fd5b806301ddf07014610082578063366b2baa1461009757806363bd1d4a146100bd575b600080fd5b6100956100903660046108eb565b610117565b005b6100aa6100a536600461091a565b610182565b6040519081526020015b60405180910390f35b6100956101b9565b6100956100d33660046109ea565b61032a565b6100e061036c565b6040516100b49190610aa2565b6100f56104e6565b6040516100b49190610ae6565b61010a610638565b6040516100b49190610b48565b60006101246005836106f1565b6001600160a01b0381166000908152600b602052604081208054929350339260019290610152908490610ba2565b90915550506001600160a01b0381166000908152600a6020526040902083905561017d600782610724565b505050565b60008282604051602001610197929190610bb5565b6040516020818303038152906040528051906020012060001c90505b92915050565b6001546001600160a01b0316331461020e5760405162461bcd60e51b815260206004820152601360248201527228bab2b9ba34b7b71d1037b7363ca0b9b5b2b960691b60448201526064015b60405180910390fd5b600061021861036c565b6000546040808301518151631901f83560e21b815291519394506001600160a01b03909216928391636407e0d49160048083019260209291908290030181865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610be1565b11156102eb5760405162461bcd60e51b815260206004820152602660248201527f5175657374696f6e3a207061796f75743a206d696e696d756d566f746573206e6044820152651bdd081b595d60d21b6064820152608401610205565b81516002546040516001600160a01b0383169180156108fc02916000818181858888f19350505050158015610324573d6000803e3d6000fd5b50505050565b336000818152600960205260409020610344838583610c7c565b50610350600582610724565b6001600160a01b03166000908152600b60205260408120555050565b610399604051806060016040528060006001600160a01b0316815260200160608152602001600081525090565b60008060005b6006548110156103fd576000600b816103b96005856106f1565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508381106103ea578093508192505b50806103f581610d3d565b91505061039f565b50600061040b6005836106f1565b90506040518060600160405280826001600160a01b0316815260200160096000846001600160a01b03166001600160a01b03168152602001908152602001600020805461045790610bfa565b80601f016020809104026020016040519081016040528092919081815260200182805461048390610bfa565b80156104d05780601f106104a5576101008083540402835291602001916104d0565b820191906000526020600020905b8154815290600101906020018083116104b357829003601f168201915b5050505050815260200184815250935050505090565b60065460609060009067ffffffffffffffff81111561050757610507610904565b60405190808252806020026020018201604052801561053a57816020015b60608152602001906001900390816105255790505b50905060005b60065481101561063257600960006105596005846106f1565b6001600160a01b03166001600160a01b03168152602001908152602001600020805461058490610bfa565b80601f01602080910402602001604051908101604052809291908181526020018280546105b090610bfa565b80156105fd5780601f106105d2576101008083540402835291602001916105fd565b820191906000526020600020905b8154815290600101906020018083116105e057829003601f168201915b505050505082828151811061061457610614610d56565b6020026020010181905250808061062a90610d3d565b915050610540565b50919050565b60065460609060009067ffffffffffffffff81111561065957610659610904565b604051908082528060200260200182016040528015610682578160200160208202803683370190505b50905060005b60065481101561063257600b60006106a16005846106f1565b6001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106106d4576106d4610d56565b6020908102919091010152806106e981610d3d565b915050610688565b600082600101828154811061070857610708610d56565b6000918252602090912001546001600160a01b03169392505050565b61072e8282610740565b61073c5761073c82826107a3565b5050565b60018201546000908103610756575060006101b3565b6001600160a01b038216600081815260208590526040902054600185018054909190811061078657610786610d56565b6000918252602090912001546001600160a01b0316149392505050565b6001600160a01b03811661080a5760405162461bcd60e51b815260206004820152602860248201527f556e6f7264657265644b65795365742831303029202d204b65792063616e6e6f604482015267074206265203078360c41b6064820152608401610205565b6108148282610740565b156108935760405162461bcd60e51b815260206004820152604360248201527f556e6f726465726564416464726573735365742831303129202d20416464726560448201527f737320286b65792920616c72656164792065786973747320696e20746865207360648201526232ba1760e91b608482015260a401610205565b6001828101805480830182556000828152602090200180546001600160a01b0319166001600160a01b038516179055546108cd9190610d6c565b6001600160a01b039091166000908152602092909252604090912055565b6000602082840312156108fd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561092d57600080fd5b82356001600160a01b038116811461094457600080fd5b9150602083013567ffffffffffffffff8082111561096157600080fd5b818501915085601f83011261097557600080fd5b81358181111561098757610987610904565b604051601f8201601f19908116603f011681019083821181831017156109af576109af610904565b816040528281528860208487010111156109c857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080602083850312156109fd57600080fd5b823567ffffffffffffffff80821115610a1557600080fd5b818501915085601f830112610a2957600080fd5b813581811115610a3857600080fd5b866020828501011115610a4a57600080fd5b60209290920196919550909350505050565b6000815180845260005b81811015610a8257602081850181015186830182015201610a66565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282516001600160a01b03168282015282015160606040830152600090610ad06080840182610a5c565b9050604084015160608401528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610b3b57603f19888603018452610b29858351610a5c565b94509285019290850190600101610b0d565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610b8057835183529284019291840191600101610b64565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101b3576101b3610b8c565b6001600160a01b0383168152604060208201819052600090610bd990830184610a5c565b949350505050565b600060208284031215610bf357600080fd5b5051919050565b600181811c90821680610c0e57607f821691505b60208210810361063257634e487b7160e01b600052602260045260246000fd5b601f82111561017d57600081815260208120601f850160051c81016020861015610c555750805b601f850160051c820191505b81811015610c7457828155600101610c61565b505050505050565b67ffffffffffffffff831115610c9457610c94610904565b610ca883610ca28354610bfa565b83610c2e565b6000601f841160018114610cdc5760008515610cc45750838201355b600019600387901b1c1916600186901b178355610d36565b600083815260209020601f19861690835b82811015610d0d5786850135825560209485019460019092019101610ced565b5086821015610d2a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060018201610d4f57610d4f610b8c565b5060010190565b634e487b7160e01b600052603260045260246000fd5b818103818111156101b3576101b3610b8c56fea2646970667358221220894181ef21cbda37f611438fab04dda65242216f7a6d9f4bbe881068cda0363e64736f6c63430008100033"; + +type QuestionConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: QuestionConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Question__factory extends ContractFactory { + constructor(...args: QuestionConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _owner: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + _bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + _owner, + _asker, + _subjectUUID, + _predicateUUID, + _bounty, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _owner: string, + _asker: string, + _subjectUUID: BytesLike, + _predicateUUID: BytesLike, + _bounty: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction( + _owner, + _asker, + _subjectUUID, + _predicateUUID, + _bounty, + overrides || {} + ); + } + override attach(address: string): Question { + return super.attach(address) as Question; + } + override connect(signer: Signer): Question__factory { + return super.connect(signer) as Question__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): QuestionInterface { + return new utils.Interface(_abi) as QuestionInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Question { + return new Contract(address, _abi, signerOrProvider) as Question; + } +} diff --git a/typechain/factories/contracts/GoldenProtocol.sol/index.ts b/typechain/factories/contracts/GoldenProtocol.sol/index.ts new file mode 100644 index 00000000..1006bb90 --- /dev/null +++ b/typechain/factories/contracts/GoldenProtocol.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { GoldenProtocol__factory } from "./GoldenProtocol__factory"; +export { GoldenProtocolQuestion__factory } from "./GoldenProtocolQuestion__factory"; diff --git a/typechain/factories/contracts/GoldenToken__factory.ts b/typechain/factories/contracts/GoldenToken__factory.ts index 1863e263..b2aaa133 100644 --- a/typechain/factories/contracts/GoldenToken__factory.ts +++ b/typechain/factories/contracts/GoldenToken__factory.ts @@ -902,7 +902,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612b25806100206000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063a694fc3a116100ad578063dd62ed3e1161007c578063dd62ed3e146104b8578063eb36854e146104cb578063f1127ed8146104de578063f2fde38b1461051b578063fe4b84df1461052e57600080fd5b8063a694fc3a1461046c578063a9059cbb1461047f578063c3cda52014610492578063d505accf146104a557600080fd5b80638da5cb5b116100f45780638da5cb5b1461041a5780638e539e8c1461042b57806395d89b411461043e5780639ab24eb014610446578063a457c2d71461045957600080fd5b8063715018a6146103d95780637cb569de146103e15780637ecebe00146103f457806384144dcf1461040757600080fd5b80633644e515116101a8578063587cde1e11610177578063587cde1e1461031e5780635c19a95c146103625780636c8848c2146103755780636fcfff451461038857806370a08231146103b057600080fd5b80633644e515146102dd57806339509351146102e55780633a46b1a8146102f8578063426233601461030b57600080fd5b806323b62302116101e457806323b623021461027e57806323b872dd146102a85780632e17de78146102bb578063313ce567146102ce57600080fd5b806302fb4d851461021657806306fdde031461022b578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610229610224366004612600565b610541565b005b610233610573565b604051610240919061262a565b60405180910390f35b61025c610257366004612600565b610605565b6040519015158152602001610240565b6035545b604051908152602001610240565b61027061028c366004612678565b6001600160a01b03166000908152610130602052604090205490565b61025c6102b6366004612693565b61061f565b6102296102c93660046126cf565b610643565b60405160128152602001610240565b610270610659565b61025c6102f3366004612600565b610668565b610270610306366004612600565b61068a565b610270610319366004612678565b610709565b61034a61032c366004612678565b6001600160a01b03908116600090815260cc60205260409020541690565b6040516001600160a01b039091168152602001610240565b610229610370366004612678565b610728565b6102296103833660046126e8565b610732565b61039b610396366004612678565b610755565b60405163ffffffff9091168152602001610240565b6102706103be366004612678565b6001600160a01b031660009081526033602052604090205490565b610229610777565b6102296103ef366004612600565b61078b565b610270610402366004612678565b61086c565b6102296104153660046126e8565b61088a565b60fe546001600160a01b031661034a565b6102706104393660046126cf565b6108b7565b610233610913565b610270610454366004612678565b610922565b61025c610467366004612600565b61094f565b61022961047a3660046126cf565b6109ca565b61025c61048d366004612600565b6109d9565b6102296104a0366004612774565b6109e7565b6102296104b33660046127cc565b610b1d565b6102706104c6366004612836565b610c81565b6102296104d93660046126cf565b610cac565b6104f16104ec366004612869565b610d6a565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610240565b610229610529366004612678565b610dee565b61022961053c3660046126cf565b610e64565b610549610ff3565b610553828261078b565b61056f3061056960fe546001600160a01b031690565b8361104d565b5050565b606060368054610582906128a9565b80601f01602080910402602001604051908101604052809291908181526020018280546105ae906128a9565b80156105fb5780601f106105d0576101008083540402835291602001916105fb565b820191906000526020600020905b8154815290600101906020018083116105de57829003601f168201915b5050505050905090565b60003361061381858561122c565b60019150505b92915050565b60003361062d858285611350565b61063885858561104d565b506001949350505050565b61064c81610cac565b6106563033610569565b50565b60006106636113c4565b905090565b60003361061381858561067b8383610c81565b61068591906128f3565b61122c565b60004382106106e05760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b038316600090815260cd60205260409020610702908361143f565b9392505050565b6001600160a01b03811660009081526101306020526040812054610619565b61065633826114fc565b61073a610ff3565b610745838383611576565b61074f30826109d9565b50505050565b6001600160a01b038116600090815260cd60205260408120546106199061176f565b61077f610ff3565b61078960006117d8565b565b610793610ff3565b6001600160a01b038216600090815261013060205260409020548111156107fc5760405162461bcd60e51b815260206004820152601760248201527f5f736c6173683a20657863656564732062616c616e636500000000000000000060448201526064016106d7565b6001600160a01b0382166000908152610130602052604081208054839290610825908490612906565b90915550506040518181526001600160a01b038316907f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd9060200160405180910390a25050565b6001600160a01b038116600090815260996020526040812054610619565b610892610ff3565b600061089f84848461182a565b905061074f3061056960fe546001600160a01b031690565b60004382106109085760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016106d7565b61061960ce8361143f565b606060378054610582906128a9565b6001600160a01b0381166000908152610130602052604081205461094583611a73565b61061991906128f3565b6000338161095d8286610c81565b9050838110156109bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106d7565b610638828686840361122c565b6109d381611afa565b61056f30825b60003361061381858561104d565b83421115610a375760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016106d7565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610ab190610aa99060a00160405160208183030381529060405280519060200120611b98565b858585611be6565b9050610abc81611c0e565b8614610b0a5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016106d7565b610b1481886114fc565b50505050505050565b83421115610b6d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106d7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610b9c8c611c0e565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610bf782611b98565b90506000610c0782878787611be6565b9050896001600160a01b0316816001600160a01b031614610c6a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106d7565b610c758a8a8a61122c565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3360009081526101306020526040902054811115610d0c5760405162461bcd60e51b815260206004820152601960248201527f5f756e7374616b653a20657863656564732062616c616e63650000000000000060448201526064016106d7565b336000908152610130602052604081208054839290610d2c908490612906565b909155505060405181815233907f79d3df6837cc49ff0e09fd3258e6e45594e0703445bb06825e9d75156eaee8f0906020015b60405180910390a250565b60408051808201909152600080825260208201526001600160a01b038316600090815260cd60205260409020805463ffffffff8416908110610dae57610dae612919565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610df6610ff3565b6001600160a01b038116610e5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d7565b610656816117d8565b600054610100900460ff1615808015610e845750600054600160ff909116105b80610e9e5750303b158015610e9e575060005460ff166001145b610f015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d7565b6000805460ff191660011790558015610f24576000805461ff0019166101001790555b610f2c611c36565b610f746040518060400160405280600b81526020016a23b7b63232b72a37b5b2b760a91b8152506040518060400160405280600381526020016211d31160ea1b815250611c65565b610fa06040518060400160405280600b81526020016a23b7b63232b72a37b5b2b760a91b815250611c96565b610faa3383611ce0565b801561056f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60fe546001600160a01b031633146107895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d7565b6001600160a01b0383166110b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106d7565b6001600160a01b0382166111135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106d7565b61111e838383611cea565b6001600160a01b038316600090815260336020526040902054818110156111965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106d7565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906111cd9084906128f3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161121991815260200190565b60405180910390a361074f848484611d84565b6001600160a01b03831661128e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106d7565b6001600160a01b0382166112ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106d7565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061135c8484610c81565b9050600019811461074f57818110156113b75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106d7565b61074f848484840361122c565b60006106637f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6113f360655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b8154600090815b818110156114a357600061145a8284611d8f565b90508486828154811061146f5761146f612919565b60009182526020909120015463ffffffff16111561148f5780925061149d565b61149a8160016128f3565b91505b50611446565b81156114e757846114b5600184612906565b815481106114c5576114c5612919565b60009182526020909120015464010000000090046001600160e01b03166114ea565b60005b6001600160e01b031695945050505050565b6001600160a01b03828116600081815260cc6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461074f828483611daa565b61157e610ff3565b816115bf5760405162461bcd60e51b815260206004820152601160248201527062756c6b5374616b65203020757365727360781b60448201526064016106d7565b6000811161160f5760405162461bcd60e51b815260206004820152601760248201527f62756c6b5374616b65203020746f74616c416d6f756e7400000000000000000060448201526064016106d7565b6000805b8381101561172757600085858381811061162f5761162f612919565b90506040020160200135905080610130600088888681811061165357611653612919565b6116699260206040909202019081019150612678565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461169891906128f3565b909155506116a8905081846128f3565b92508585838181106116bc576116bc612919565b6116d29260206040909202019081019150612678565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8260405161170c91815260200190565b60405180910390a2508061171f8161292f565b915050611613565b5081811461074f5760405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd081d1bdd185b105b5bdd5b9d605a1b60448201526064016106d7565b600063ffffffff8211156117d45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016106d7565b5090565b60fe80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611834610ff3565b826118765760405162461bcd60e51b81526020600482015260126024820152715f62756c6b536c617368203020757365727360701b60448201526064016106d7565b600082116118c65760405162461bcd60e51b815260206004820152601860248201527f5f62756c6b536c617368203020746f74616c416d6f756e74000000000000000060448201526064016106d7565b60008060005b85811015611a225760008787838181106118e8576118e8612919565b905060400201602001359050600061013060008a8a8681811061190d5761190d612919565b6119239260206040909202019081019150612678565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905060008183116119555782611957565b815b905061198a8a8a8681811061196e5761196e612919565b6119849260206040909202019081019150612678565b8261078b565b61199483876128f3565b95506119a081866128f3565b94508989858181106119b4576119b4612919565b6119ca9260206040909202019081019150612678565b6001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd82604051611a0491815260200190565b60405180910390a25050508080611a1a9061292f565b9150506118cc565b50838214611a6a5760405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd081d1bdd185b105b5bdd5b9d605a1b60448201526064016106d7565b95945050505050565b6001600160a01b038116600090815260cd60205260408120548015611ae7576001600160a01b038316600090815260cd60205260409020611ab5600183612906565b81548110611ac557611ac5612919565b60009182526020909120015464010000000090046001600160e01b0316611aea565b60005b6001600160e01b03169392505050565b60008111611b415760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74207374616b65206e6f7468696e6760601b60448201526064016106d7565b336000908152610130602052604081208054839290611b619084906128f3565b909155505060405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610d5f565b6000610619611ba56113c4565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611bf787878787611ee7565b91509150611c0481611fd4565b5095945050505050565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600054610100900460ff16611c5d5760405162461bcd60e51b81526004016106d790612948565b61078961218a565b600054610100900460ff16611c8c5760405162461bcd60e51b81526004016106d790612948565b61056f82826121ba565b600054610100900460ff16611cbd5760405162461bcd60e51b81526004016106d790612948565b61065681604051806040016040528060018152602001603160f81b8152506121fa565b61056f828261223b565b6001600160a01b0383161580611d0d575060fe546001600160a01b038481169116145b80611d2057506001600160a01b03831630145b80611d3357506001600160a01b03821630145b611d7f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f7420616c6c6f77656420746f207472616e73666572000060448201526064016106d7565b505050565b611d7f8383836122c5565b6000611d9e6002848418612993565b610702908484166128f3565b816001600160a01b0316836001600160a01b031614158015611dcc5750600081115b15611d7f576001600160a01b03831615611e5a576001600160a01b038316600090815260cd602052604081208190611e07906122f785612303565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611e4f929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611d7f576001600160a01b038216600090815260cd602052604081208190611e909061247c85612303565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611ed8929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611f1e5750600090506003611fcb565b8460ff16601b14158015611f3657508460ff16601c14155b15611f475750600090506004611fcb565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611f9b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611fc457600060019250925050611fcb565b9150600090505b94509492505050565b6000816004811115611fe857611fe86129b5565b03611ff05750565b6001816004811115612004576120046129b5565b036120515760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d7565b6002816004811115612065576120656129b5565b036120b25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d7565b60038160048111156120c6576120c66129b5565b0361211e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d7565b6004816004811115612132576121326129b5565b036106565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d7565b600054610100900460ff166121b15760405162461bcd60e51b81526004016106d790612948565b610789336117d8565b600054610100900460ff166121e15760405162461bcd60e51b81526004016106d790612948565b60366121ed8382612a2f565b506037611d7f8282612a2f565b600054610100900460ff166122215760405162461bcd60e51b81526004016106d790612948565b815160209283012081519190920120606591909155606655565b6122458282612488565b6035546001600160e01b0310156122b75760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016106d7565b61074f60ce61247c83612303565b6001600160a01b03838116600090815260cc6020526040808220548584168352912054611d7f92918216911683611daa565b60006107028284612906565b82546000908190801561234e578561231c600183612906565b8154811061232c5761232c612919565b60009182526020909120015464010000000090046001600160e01b0316612351565b60005b6001600160e01b0316925061236a83858763ffffffff16565b91506000811180156123a857504386612384600184612906565b8154811061239457612394612919565b60009182526020909120015463ffffffff16145b15612408576123b68261257b565b866123c2600184612906565b815481106123d2576123d2612919565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550612473565b85604051806040016040528061241d4361176f565b63ffffffff1681526020016124318561257b565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b600061070282846128f3565b6001600160a01b0382166124de5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106d7565b6124ea60008383611cea565b80603560008282546124fc91906128f3565b90915550506001600160a01b038216600090815260336020526040812080548392906125299084906128f3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361056f60008383611d84565b60006001600160e01b038211156117d45760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016106d7565b80356001600160a01b03811681146125fb57600080fd5b919050565b6000806040838503121561261357600080fd5b61261c836125e4565b946020939093013593505050565b600060208083528351808285015260005b818110156126575785810183015185820160400152820161263b565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561268a57600080fd5b610702826125e4565b6000806000606084860312156126a857600080fd5b6126b1846125e4565b92506126bf602085016125e4565b9150604084013590509250925092565b6000602082840312156126e157600080fd5b5035919050565b6000806000604084860312156126fd57600080fd5b833567ffffffffffffffff8082111561271557600080fd5b818601915086601f83011261272957600080fd5b81358181111561273857600080fd5b8760208260061b850101111561274d57600080fd5b6020928301989097509590910135949350505050565b803560ff811681146125fb57600080fd5b60008060008060008060c0878903121561278d57600080fd5b612796876125e4565b955060208701359450604087013593506127b260608801612763565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a0312156127e757600080fd5b6127f0886125e4565b96506127fe602089016125e4565b9550604088013594506060880135935061281a60808901612763565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561284957600080fd5b612852836125e4565b9150612860602084016125e4565b90509250929050565b6000806040838503121561287c57600080fd5b612885836125e4565b9150602083013563ffffffff8116811461289e57600080fd5b809150509250929050565b600181811c908216806128bd57607f821691505b602082108103611c3057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610619576106196128dd565b81810381811115610619576106196128dd565b634e487b7160e01b600052603260045260246000fd5b600060018201612941576129416128dd565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000826129b057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115611d7f57600081815260208120601f850160051c81016020861015612a085750805b601f850160051c820191505b81811015612a2757828155600101612a14565b505050505050565b815167ffffffffffffffff811115612a4957612a496129cb565b612a5d81612a5784546128a9565b846129e1565b602080601f831160018114612a925760008415612a7a5750858301515b600019600386901b1c1916600185901b178555612a27565b600085815260208120601f198616915b82811015612ac157888601518255948401946001909101908401612aa2565b5085821015612adf5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212204725be90e92630144e300a9621f84fa4ef1548d1d54f4af3edff15ff96dace3564736f6c63430008100033"; + "0x608060405234801561001057600080fd5b50612a79806100206000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063a694fc3a116100ad578063dd62ed3e1161007c578063dd62ed3e146104b8578063eb36854e146104cb578063f1127ed8146104de578063f2fde38b1461051b578063fe4b84df1461052e57600080fd5b8063a694fc3a1461046c578063a9059cbb1461047f578063c3cda52014610492578063d505accf146104a557600080fd5b80638da5cb5b116100f45780638da5cb5b1461041a5780638e539e8c1461042b57806395d89b411461043e5780639ab24eb014610446578063a457c2d71461045957600080fd5b8063715018a6146103d95780637cb569de146103e15780637ecebe00146103f457806384144dcf1461040757600080fd5b80633644e515116101a8578063587cde1e11610177578063587cde1e1461031e5780635c19a95c146103625780636c8848c2146103755780636fcfff451461038857806370a08231146103b057600080fd5b80633644e515146102dd57806339509351146102e55780633a46b1a8146102f8578063426233601461030b57600080fd5b806323b62302116101e457806323b623021461027e57806323b872dd146102a85780632e17de78146102bb578063313ce567146102ce57600080fd5b806302fb4d851461021657806306fdde031461022b578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610229610224366004612554565b610541565b005b610233610573565b604051610240919061257e565b60405180910390f35b61025c610257366004612554565b610605565b6040519015158152602001610240565b6035545b604051908152602001610240565b61027061028c3660046125cc565b6001600160a01b03166000908152610130602052604090205490565b61025c6102b63660046125e7565b61061f565b6102296102c9366004612623565b610643565b60405160128152602001610240565b610270610659565b61025c6102f3366004612554565b610668565b610270610306366004612554565b61068a565b6102706103193660046125cc565b610709565b61034a61032c3660046125cc565b6001600160a01b03908116600090815260cc60205260409020541690565b6040516001600160a01b039091168152602001610240565b6102296103703660046125cc565b610728565b61022961038336600461263c565b610732565b61039b6103963660046125cc565b610755565b60405163ffffffff9091168152602001610240565b6102706103be3660046125cc565b6001600160a01b031660009081526033602052604090205490565b610229610777565b6102296103ef366004612554565b61078b565b6102706104023660046125cc565b61086c565b61022961041536600461263c565b61088a565b60fe546001600160a01b031661034a565b610270610439366004612623565b6108b7565b610233610913565b6102706104543660046125cc565b610922565b61025c610467366004612554565b61094f565b61022961047a366004612623565b6109ca565b61025c61048d366004612554565b6109d9565b6102296104a03660046126c8565b6109e7565b6102296104b3366004612720565b610b1d565b6102706104c636600461278a565b610c81565b6102296104d9366004612623565b610cac565b6104f16104ec3660046127bd565b610d6a565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610240565b6102296105293660046125cc565b610dee565b61022961053c366004612623565b610e64565b610549610ff3565b610553828261078b565b61056f3061056960fe546001600160a01b031690565b8361104d565b5050565b606060368054610582906127fd565b80601f01602080910402602001604051908101604052809291908181526020018280546105ae906127fd565b80156105fb5780601f106105d0576101008083540402835291602001916105fb565b820191906000526020600020905b8154815290600101906020018083116105de57829003601f168201915b5050505050905090565b600033610613818585611221565b60019150505b92915050565b60003361062d858285611345565b61063885858561104d565b506001949350505050565b61064c81610cac565b6106563033610569565b50565b60006106636113b9565b905090565b60003361061381858561067b8383610c81565b6106859190612847565b611221565b60004382106106e05760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b038316600090815260cd602052604090206107029083611434565b9392505050565b6001600160a01b03811660009081526101306020526040812054610619565b61065633826114f1565b61073a610ff3565b61074583838361156b565b61074f30826109d9565b50505050565b6001600160a01b038116600090815260cd602052604081205461061990611764565b61077f610ff3565b61078960006117cd565b565b610793610ff3565b6001600160a01b038216600090815261013060205260409020548111156107fc5760405162461bcd60e51b815260206004820152601760248201527f5f736c6173683a20657863656564732062616c616e636500000000000000000060448201526064016106d7565b6001600160a01b038216600090815261013060205260408120805483929061082590849061285a565b90915550506040518181526001600160a01b038316907f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd9060200160405180910390a25050565b6001600160a01b038116600090815260996020526040812054610619565b610892610ff3565b600061089f84848461181f565b905061074f3061056960fe546001600160a01b031690565b60004382106109085760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016106d7565b61061960ce83611434565b606060378054610582906127fd565b6001600160a01b0381166000908152610130602052604081205461094583611a68565b6106199190612847565b6000338161095d8286610c81565b9050838110156109bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106d7565b6106388286868403611221565b6109d381611aef565b61056f30825b60003361061381858561104d565b83421115610a375760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016106d7565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610ab190610aa99060a00160405160208183030381529060405280519060200120611b8d565b858585611bdb565b9050610abc81611c03565b8614610b0a5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016106d7565b610b1481886114f1565b50505050505050565b83421115610b6d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106d7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610b9c8c611c03565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610bf782611b8d565b90506000610c0782878787611bdb565b9050896001600160a01b0316816001600160a01b031614610c6a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106d7565b610c758a8a8a611221565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3360009081526101306020526040902054811115610d0c5760405162461bcd60e51b815260206004820152601960248201527f5f756e7374616b653a20657863656564732062616c616e63650000000000000060448201526064016106d7565b336000908152610130602052604081208054839290610d2c90849061285a565b909155505060405181815233907f79d3df6837cc49ff0e09fd3258e6e45594e0703445bb06825e9d75156eaee8f0906020015b60405180910390a250565b60408051808201909152600080825260208201526001600160a01b038316600090815260cd60205260409020805463ffffffff8416908110610dae57610dae61286d565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610df6610ff3565b6001600160a01b038116610e5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d7565b610656816117cd565b600054610100900460ff1615808015610e845750600054600160ff909116105b80610e9e5750303b158015610e9e575060005460ff166001145b610f015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d7565b6000805460ff191660011790558015610f24576000805461ff0019166101001790555b610f2c611c2b565b610f746040518060400160405280600b81526020016a23b7b63232b72a37b5b2b760a91b8152506040518060400160405280600381526020016211d31160ea1b815250611c5a565b610fa06040518060400160405280600b81526020016a23b7b63232b72a37b5b2b760a91b815250611c8b565b610faa3383611cd5565b801561056f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60fe546001600160a01b031633146107895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d7565b6001600160a01b0383166110b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106d7565b6001600160a01b0382166111135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106d7565b6001600160a01b0383166000908152603360205260409020548181101561118b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106d7565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906111c2908490612847565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161120e91815260200190565b60405180910390a361074f848484611ce4565b6001600160a01b0383166112835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106d7565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106d7565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006113518484610c81565b9050600019811461074f57818110156113ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106d7565b61074f8484848403611221565b60006106637f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6113e860655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b8154600090815b8181101561149857600061144f8284611cef565b9050848682815481106114645761146461286d565b60009182526020909120015463ffffffff16111561148457809250611492565b61148f816001612847565b91505b5061143b565b81156114dc57846114aa60018461285a565b815481106114ba576114ba61286d565b60009182526020909120015464010000000090046001600160e01b03166114df565b60005b6001600160e01b031695945050505050565b6001600160a01b03828116600081815260cc6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461074f828483611d0a565b611573610ff3565b816115b45760405162461bcd60e51b815260206004820152601160248201527062756c6b5374616b65203020757365727360781b60448201526064016106d7565b600081116116045760405162461bcd60e51b815260206004820152601760248201527f62756c6b5374616b65203020746f74616c416d6f756e7400000000000000000060448201526064016106d7565b6000805b8381101561171c5760008585838181106116245761162461286d565b9050604002016020013590508061013060008888868181106116485761164861286d565b61165e92602060409092020190810191506125cc565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461168d9190612847565b9091555061169d90508184612847565b92508585838181106116b1576116b161286d565b6116c792602060409092020190810191506125cc565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8260405161170191815260200190565b60405180910390a2508061171481612883565b915050611608565b5081811461074f5760405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd081d1bdd185b105b5bdd5b9d605a1b60448201526064016106d7565b600063ffffffff8211156117c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016106d7565b5090565b60fe80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611829610ff3565b8261186b5760405162461bcd60e51b81526020600482015260126024820152715f62756c6b536c617368203020757365727360701b60448201526064016106d7565b600082116118bb5760405162461bcd60e51b815260206004820152601860248201527f5f62756c6b536c617368203020746f74616c416d6f756e74000000000000000060448201526064016106d7565b60008060005b85811015611a175760008787838181106118dd576118dd61286d565b905060400201602001359050600061013060008a8a868181106119025761190261286d565b61191892602060409092020190810191506125cc565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600081831161194a578261194c565b815b905061197f8a8a868181106119635761196361286d565b61197992602060409092020190810191506125cc565b8261078b565b6119898387612847565b95506119958186612847565b94508989858181106119a9576119a961286d565b6119bf92602060409092020190810191506125cc565b6001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd826040516119f991815260200190565b60405180910390a25050508080611a0f90612883565b9150506118c1565b50838214611a5f5760405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd081d1bdd185b105b5bdd5b9d605a1b60448201526064016106d7565b95945050505050565b6001600160a01b038116600090815260cd60205260408120548015611adc576001600160a01b038316600090815260cd60205260409020611aaa60018361285a565b81548110611aba57611aba61286d565b60009182526020909120015464010000000090046001600160e01b0316611adf565b60005b6001600160e01b03169392505050565b60008111611b365760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74207374616b65206e6f7468696e6760601b60448201526064016106d7565b336000908152610130602052604081208054839290611b56908490612847565b909155505060405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610d5f565b6000610619611b9a6113b9565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611bec87878787611e47565b91509150611bf981611f34565b5095945050505050565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600054610100900460ff16611c525760405162461bcd60e51b81526004016106d79061289c565b6107896120ea565b600054610100900460ff16611c815760405162461bcd60e51b81526004016106d79061289c565b61056f828261211a565b600054610100900460ff16611cb25760405162461bcd60e51b81526004016106d79061289c565b61065681604051806040016040528060018152602001603160f81b81525061215a565b61056f828261219b565b505050565b611cdf838383612225565b6000611cfe60028484186128e7565b61070290848416612847565b816001600160a01b0316836001600160a01b031614158015611d2c5750600081115b15611cdf576001600160a01b03831615611dba576001600160a01b038316600090815260cd602052604081208190611d679061225785612263565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611daf929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611cdf576001600160a01b038216600090815260cd602052604081208190611df0906123dc85612263565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611e38929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e7e5750600090506003611f2b565b8460ff16601b14158015611e9657508460ff16601c14155b15611ea75750600090506004611f2b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611efb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f2457600060019250925050611f2b565b9150600090505b94509492505050565b6000816004811115611f4857611f48612909565b03611f505750565b6001816004811115611f6457611f64612909565b03611fb15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d7565b6002816004811115611fc557611fc5612909565b036120125760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d7565b600381600481111561202657612026612909565b0361207e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d7565b600481600481111561209257612092612909565b036106565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d7565b600054610100900460ff166121115760405162461bcd60e51b81526004016106d79061289c565b610789336117cd565b600054610100900460ff166121415760405162461bcd60e51b81526004016106d79061289c565b603661214d8382612983565b506037611cdf8282612983565b600054610100900460ff166121815760405162461bcd60e51b81526004016106d79061289c565b815160209283012081519190920120606591909155606655565b6121a582826123e8565b6035546001600160e01b0310156122175760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016106d7565b61074f60ce6123dc83612263565b6001600160a01b03838116600090815260cc6020526040808220548584168352912054611cdf92918216911683611d0a565b6000610702828461285a565b8254600090819080156122ae578561227c60018361285a565b8154811061228c5761228c61286d565b60009182526020909120015464010000000090046001600160e01b03166122b1565b60005b6001600160e01b031692506122ca83858763ffffffff16565b9150600081118015612308575043866122e460018461285a565b815481106122f4576122f461286d565b60009182526020909120015463ffffffff16145b1561236857612316826124cf565b8661232260018461285a565b815481106123325761233261286d565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506123d3565b85604051806040016040528061237d43611764565b63ffffffff168152602001612391856124cf565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b60006107028284612847565b6001600160a01b03821661243e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106d7565b80603560008282546124509190612847565b90915550506001600160a01b0382166000908152603360205260408120805483929061247d908490612847565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361056f60008383611ce4565b60006001600160e01b038211156117c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016106d7565b80356001600160a01b038116811461254f57600080fd5b919050565b6000806040838503121561256757600080fd5b61257083612538565b946020939093013593505050565b600060208083528351808285015260005b818110156125ab5785810183015185820160400152820161258f565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156125de57600080fd5b61070282612538565b6000806000606084860312156125fc57600080fd5b61260584612538565b925061261360208501612538565b9150604084013590509250925092565b60006020828403121561263557600080fd5b5035919050565b60008060006040848603121561265157600080fd5b833567ffffffffffffffff8082111561266957600080fd5b818601915086601f83011261267d57600080fd5b81358181111561268c57600080fd5b8760208260061b85010111156126a157600080fd5b6020928301989097509590910135949350505050565b803560ff8116811461254f57600080fd5b60008060008060008060c087890312156126e157600080fd5b6126ea87612538565b95506020870135945060408701359350612706606088016126b7565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561273b57600080fd5b61274488612538565b965061275260208901612538565b9550604088013594506060880135935061276e608089016126b7565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561279d57600080fd5b6127a683612538565b91506127b460208401612538565b90509250929050565b600080604083850312156127d057600080fd5b6127d983612538565b9150602083013563ffffffff811681146127f257600080fd5b809150509250929050565b600181811c9082168061281157607f821691505b602082108103611c2557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561061957610619612831565b8181038181111561061957610619612831565b634e487b7160e01b600052603260045260246000fd5b60006001820161289557612895612831565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261290457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115611cdf57600081815260208120601f850160051c8101602086101561295c5750805b601f850160051c820191505b8181101561297b57828155600101612968565b505050505050565b815167ffffffffffffffff81111561299d5761299d61291f565b6129b1816129ab84546127fd565b84612935565b602080601f8311600181146129e657600084156129ce5750858301515b600019600386901b1c1916600185901b17855561297b565b600085815260208120601f198616915b82811015612a15578886015182559484019460019091019084016129f6565b5085821015612a335787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220e31f59f775c1cd997c9de9a8934457069590316cca710450d25d4aefc2f235be64736f6c63430008100033"; type GoldenTokenConstructorParams = | [signer?: Signer] diff --git a/typechain/factories/contracts/index.ts b/typechain/factories/contracts/index.ts index 667bcf79..abd1eb55 100644 --- a/typechain/factories/contracts/index.ts +++ b/typechain/factories/contracts/index.ts @@ -1,6 +1,7 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as goldenBountySol from "./GoldenBounty.sol"; export * as nft from "./nft"; export { GoldenSchema__factory } from "./GoldenSchema__factory"; export { GoldenSchemaGovernor__factory } from "./GoldenSchemaGovernor__factory"; diff --git a/typechain/index.ts b/typechain/index.ts index c2ac10fe..8899c406 100644 --- a/typechain/index.ts +++ b/typechain/index.ts @@ -72,6 +72,10 @@ export type { IERC165 } from "./@openzeppelin/contracts/utils/introspection/IERC export { IERC165__factory } from "./factories/@openzeppelin/contracts/utils/introspection/IERC165__factory"; export type { DoubleEndedQueue } from "./@openzeppelin/contracts/utils/structs/DoubleEndedQueue"; export { DoubleEndedQueue__factory } from "./factories/@openzeppelin/contracts/utils/structs/DoubleEndedQueue__factory"; +export type { GoldenBounty } from "./contracts/GoldenBounty.sol/GoldenBounty"; +export { GoldenBounty__factory } from "./factories/contracts/GoldenBounty.sol/GoldenBounty__factory"; +export type { GoldenBountyQuestion } from "./contracts/GoldenBounty.sol/GoldenBountyQuestion"; +export { GoldenBountyQuestion__factory } from "./factories/contracts/GoldenBounty.sol/GoldenBountyQuestion__factory"; export type { GoldenSchema } from "./contracts/GoldenSchema"; export { GoldenSchema__factory } from "./factories/contracts/GoldenSchema__factory"; export type { GoldenSchemaGovernor } from "./contracts/GoldenSchemaGovernor";