/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { Election, ElectionInterface } from "../Election"; const _abi = [ { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "address", name: "voter", type: "address", }, { indexed: false, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "Claimed", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint8", name: "version", type: "uint8", }, ], name: "Initialized", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IMajorCandidates", name: "majorCandidates", type: "address", }, ], name: "MajorCandidatesUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IRewarder", name: "rewarder", type: "address", }, ], name: "RewarderUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, ], name: "ShareUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IStake", name: "stake", type: "address", }, ], name: "StakeUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IERC20", name: "token", type: "address", }, ], name: "TokenUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "address", name: "voter", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "Vote", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "period", type: "uint256", }, ], name: "VoteFrozenPeriodUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "address", name: "voter", type: "address", }, { indexed: false, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "Withdrawn", type: "event", }, { inputs: [], name: "ACC_PRECISION", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "accPerShares", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "address", name: "to", type: "address", }, ], name: "claim", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address", }, { internalType: "contract IRewarder", name: "_rewarder", type: "address", }, { internalType: "contract IStake", name: "_stake", type: "address", }, { internalType: "contract IMajorCandidates", name: "_majorCandidates", type: "address", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, { internalType: "address", name: "", type: "address", }, ], name: "lastVoteTime", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "majorCandidates", outputs: [ { internalType: "contract IMajorCandidates", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "onAllocate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "address", name: "voter", type: "address", }, ], name: "pendingReward", outputs: [ { internalType: "uint256", name: "pending", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "rewarder", outputs: [ { internalType: "contract IRewarder", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "stake", outputs: [ { internalType: "contract IStake", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "token", outputs: [ { internalType: "contract IERC20", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "address", name: "voter", type: "address", }, ], name: "unfrozenAt", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "address", name: "voter", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "address", name: "anchor", type: "address", }, { internalType: "uint256", name: "maxSlippage", type: "uint256", }, ], name: "vote", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "voteFrozenPeriod", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "voteSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, { internalType: "address", name: "", type: "address", }, ], name: "voters", outputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "int256", name: "rewardDebt", type: "int256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "address", name: "to", type: "address", }, { internalType: "address", name: "anchor", type: "address", }, { internalType: "uint256", name: "maxSlippage", type: "uint256", }, ], name: "withdraw", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "address", name: "to", type: "address", }, { internalType: "address", name: "anchor", type: "address", }, { internalType: "uint256", name: "maxSlippage", type: "uint256", }, ], name: "withdrawAndClaim", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x608060405234801561001057600080fd5b50611b75806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806378438db7116100a2578063dcc3e06e11610071578063dcc3e06e14610275578063f0bfbcb614610288578063f562c29b1461029b578063f8c8765e146102bb578063fc0c546a146102ce57600080fd5b806378438db7146102295780639ced7e761461023c578063a398a7781461024f578063b17479e91461026257600080fd5b806332fcd966116100e957806332fcd966146101b95780633a4b66f1146101c25780634e7968e3146101e25780635501f1c61461020d5780636d40c7211461022057600080fd5b80630a08ba721461011b57806312d00cee146101305780631cc59aa31461016657806321c0b342146101a6575b600080fd5b61012e6101293660046114ea565b6102e1565b005b61015061013e366004611527565b603a6020526000908152604090205481565b60405161015d9190611558565b60405180910390f35b610198610174366004611566565b60396020908152600092835260408084209091529082529020805460019091015482565b60405161015d929190611599565b61012e6101b4366004611566565b6103de565b61015060375481565b6035546101d5906001600160a01b031681565b60405161015d91906115d3565b6101506101f0366004611566565b603c60209081526000928352604080842090915290825290205481565b61012e61021b3660046115e1565b610582565b61015060385481565b61012e6102373660046115e1565b6108a6565b61015061024a366004611566565b610cb5565b61015061025d366004611566565b610e27565b6036546101d5906001600160a01b031681565b6034546101d5906001600160a01b031681565b61012e610296366004611659565b610ea5565b6101506102a9366004611527565b603b6020526000908152604090205481565b61012e6102c93660046116b6565b611210565b6033546101d5906001600160a01b031681565b6035546001600160a01b031633146103145760405162461bcd60e51b815260040161030b90611761565b60405180910390fd5b6001600160a01b0382166000908152603a6020526040902054156103da576001600160a01b0382166000908152603a60205260409020546037546103589083611787565b61036291906117bc565b6001600160a01b0383166000908152603b602052604090205461038591906117d0565b6001600160a01b0383166000908152603b60205260409081902091909155517fe7e3d547051a0e581a3e50cc654fcfa1aad33db6c549b0a9ca485544b190f975906103d19084906117f1565b60405180910390a15b5050565b600260015414156104015760405162461bcd60e51b815260040161030b90611836565b6002600155603554604051632969b12160e11b81526001600160a01b03909116906352d36242906104369085906004016117f1565b600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050506001600160a01b03821660008181526039602090815260408083203384528252808320603754948452603b90925282205481549193916104a89190611787565b6104b291906117bc565b905060006104ce8360010154836104c99190611846565b611314565b600184018390556034546040516340c10f1960e01b81529192506001600160a01b0316906340c10f19906105089087908590600401611887565b600060405180830381600087803b15801561052257600080fd5b505af1158015610536573d6000803e3d6000fd5b505050507f913c992353dc81b7a8ba31496c484e9b6306bd2f6c509a649a38fdf5e1c953b28533868460405161056f9493929190611895565b60405180910390a1505060018055505050565b600260015414156105a55760405162461bcd60e51b815260040161030b90611836565b6002600155426105b58633610e27565b116105d25760405162461bcd60e51b815260040161030b90611907565b603554604051632969b12160e11b81526001600160a01b03909116906352d36242906106029088906004016117f1565b600060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b5050506001600160a01b03861660008181526039602090815260408083203384528252808320603754948452603b909252909120549092506106729087611787565b61067c91906117bc565b816001015461068b9190611846565b6001820155805461069d908690611917565b81556001600160a01b0386166000908152603a60205260409020546106c3908690611917565b6001600160a01b038088166000908152603a602052604090819020929092556035549151631e3d9b8b60e31b815291169063f1ecdc58906107089089906004016117f1565b60206040518083038186803b15801561072057600080fd5b505afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610758919061193c565b156107d8576036546001600160a01b038781166000908152603a602052604090819020549051633a7a74bd60e21b8152919092169163e9e9d2f4916107a5918a918890889060040161195d565b600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b505050505b60335460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061080a9087908990600401611887565b602060405180830381600087803b15801561082457600080fd5b505af1158015610838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085c919061193c565b507fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa24863386886040516108929493929190611895565b60405180910390a150506001805550505050565b600260015414156108c95760405162461bcd60e51b815260040161030b90611836565b6002600155426108d98633610e27565b116108f65760405162461bcd60e51b815260040161030b90611907565b603554604051632969b12160e11b81526001600160a01b03909116906352d36242906109269088906004016117f1565b600060405180830381600087803b15801561094057600080fd5b505af1158015610954573d6000803e3d6000fd5b505050506001600160a01b03851660008181526039602090815260408083203384528252808320603754948452603b90925282205481549193916109989190611787565b6109a291906117bc565b905060006109b98360010154836104c99190611846565b6037546001600160a01b038a166000908152603b6020526040902054919250906109e39089611787565b6109ed91906117bc565b6109f79083611846565b60018401558254610a09908890611917565b83556001600160a01b0388166000908152603a6020526040902054610a2f908890611917565b6001600160a01b03808a166000908152603a602052604090819020929092556035549151631e3d9b8b60e31b815291169063f1ecdc5890610a74908b906004016117f1565b60206040518083038186803b158015610a8c57600080fd5b505afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac4919061193c565b15610b44576036546001600160a01b038981166000908152603a602052604090819020549051633a7a74bd60e21b8152919092169163e9e9d2f491610b11918c918a908a9060040161195d565b600060405180830381600087803b158015610b2b57600080fd5b505af1158015610b3f573d6000803e3d6000fd5b505050505b6034546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610b769089908590600401611887565b600060405180830381600087803b158015610b9057600080fd5b505af1158015610ba4573d6000803e3d6000fd5b505060335460405163a9059cbb60e01b81526001600160a01b03909116925063a9059cbb9150610bda9089908b90600401611887565b602060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c919061193c565b507f913c992353dc81b7a8ba31496c484e9b6306bd2f6c509a649a38fdf5e1c953b288338884604051610c629493929190611895565b60405180910390a17fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa248833888a604051610c9f9493929190611895565b60405180910390a1505060018055505050505050565b6001600160a01b0382166000908152603a602052604081205415610e21576035546040516301686a8f60e51b81526000916001600160a01b031690632d0d51e090610d049087906004016117f1565b60206040518083038186803b158015610d1c57600080fd5b505afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190611983565b6001600160a01b038086166000818152603960209081526040808320948916835293815283822060010154928252603a9052918220546037549394509092610d9c9085611787565b610da691906117bc565b6001600160a01b0387166000908152603b6020526040902054610dc991906117d0565b6037546001600160a01b038089166000908152603960209081526040808320938b1683529290522054919250610e1b91849190610e07908590611787565b610e1191906117bc565b6104c99190611846565b93505050505b92915050565b6001600160a01b038083166000908152603c60209081526040808320938516835292905290812054610e6b5760405162461bcd60e51b815260040161030b906119d8565b6038546001600160a01b038085166000908152603c6020908152604080832093871683529290522054610e9e91906117d0565b9392505050565b60026001541415610ec85760405162461bcd60e51b815260040161030b90611836565b6002600155603554604051631e3d9b8b60e31b81526001600160a01b039091169063f1ecdc5890610efd9088906004016117f1565b60206040518083038186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d919061193c565b610f695760405162461bcd60e51b815260040161030b90611a1c565b6033546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610f9d90339030908890600401611a2c565b602060405180830381600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef919061193c565b50603554604051632969b12160e11b81526001600160a01b03909116906352d36242906110209088906004016117f1565b600060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b5050506001600160a01b03808716600090815260396020908152604080832093891683529290522054611083915084906117d0565b6001600160a01b038087166000818152603960209081526040808320948a16835293815283822094909455603754918152603b9093529120546110c69085611787565b6110d091906117bc565b6001600160a01b038087166000908152603960209081526040808320938916835292905220600101546111039190611a54565b6001600160a01b038087166000818152603960209081526040808320948a16835293815283822060010194909455908152603a9092529020546111479084906117d0565b6001600160a01b038087166000818152603a60208181526040808420968755603c82528084208b871685528252808420429055603654949093525292549251633a7a74bd60e21b815291169163e9e9d2f4916111ab9189918790879060040161195d565b600060405180830381600087803b1580156111c557600080fd5b505af11580156111d9573d6000803e3d6000fd5b505050507f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc85858560405161056f93929190611a2c565b600054610100900460ff16158080156112305750600054600160ff909116105b8061124a5750303b15801561124a575060005460ff166001145b6112665760405162461bcd60e51b815260040161030b90611adb565b6000805460ff191660011790558015611289576000805461ff0019166101001790555b6112928561133a565b61129b84611390565b6112a4836113db565b6112ad82611426565b6112b962093a80611471565b64e8d4a51000603755801561130d576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061130490600190611aff565b60405180910390a15b5050505050565b6000808212156113365760405162461bcd60e51b815260040161030b90611b2f565b5090565b603380546001600160a01b0319166001600160a01b0383161790556040517f5ba6b30cd4b2f9e9e67f4feb9b9df10d5da3b057598e6901b217b7d590345e30906113859083906115d3565b60405180910390a150565b603480546001600160a01b0319166001600160a01b0383161790556040517f47c9042c3be42a955f60f9b75006522826af1a3bed83e26646997d3bcccda77c906113859083906115d3565b603580546001600160a01b0319166001600160a01b0383161790556040517f27a2474ca8353642fab173d2cadd631382797bbd4f01c76aa56f932bceaf580f906113859083906115d3565b603680546001600160a01b0319166001600160a01b0383161790556040517f476e1ab7433dee921bc37cd453322068187c39ca4847e6a0d4aa36f559b8461c906113859083906115d3565b60388190556040517ff83cccf9d4c5f0b2f475a2b0a0157a3ec7c2ebdfe2c11ba256779ab21e4ba54390611385908390611558565b60006001600160a01b038216610e21565b6114c0816114a6565b81146114cb57600080fd5b50565b8035610e21816114b7565b806114c0565b8035610e21816114d9565b6000806040838503121561150057611500600080fd5b600061150c85856114ce565b925050602061151d858286016114df565b9150509250929050565b60006020828403121561153c5761153c600080fd5b600061154884846114ce565b949350505050565b805b82525050565b60208101610e218284611550565b6000806040838503121561157c5761157c600080fd5b600061158885856114ce565b925050602061151d858286016114ce565b604081016115a78285611550565b610e9e6020830184611550565b6000610e21826114a6565b6000610e21826115b4565b611552816115bf565b60208101610e2182846115ca565b600080600080600060a086880312156115fc576115fc600080fd5b600061160888886114ce565b9550506020611619888289016114df565b945050604061162a888289016114ce565b935050606061163b888289016114ce565b925050608061164c888289016114df565b9150509295509295909350565b600080600080600060a0868803121561167457611674600080fd5b600061168088886114ce565b9550506020611691888289016114ce565b945050604061162a888289016114df565b6114c0816115b4565b8035610e21816116a2565b600080600080608085870312156116cf576116cf600080fd5b60006116db87876116ab565b94505060206116ec878288016116ab565b93505060406116fd878288016116ab565b925050606061170e878288016116ab565b91505092959194509250565b602781526000602082017f456c656374696f6e3a2063616c6c6572206d757374206265205374616b6520638152661bdb9d1c9858dd60ca1b602082015291505b5060400190565b60208082528101610e218161171a565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156117a1576117a1611771565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826117cb576117cb6117a6565b500490565b600082198211156117e3576117e3611771565b500190565b611552816114a6565b60208101610e2182846117e8565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815291505b5060200190565b60208082528101610e21816117ff565b600082600160ff1b0182126000841215161561186457611864611771565b826001600160ff1b0301821360008412161561188257611882611771565b500390565b604081016115a782856117e8565b608081016118a382876117e8565b6118b060208301866117e8565b6118bd60408301856117e8565b6118ca6060830184611550565b95945050505050565b601881526000602082017f456c656374696f6e3a20766f74652069732066726f7a656e00000000000000008152915061182f565b60208082528101610e21816118d3565b60008282101561188257611882611771565b8015156114c0565b8051610e2181611929565b60006020828403121561195157611951600080fd5b60006115488484611931565b6080810161196b82876117e8565b6118b06020830186611550565b8051610e21816114d9565b60006020828403121561199857611998600080fd5b60006115488484611978565b601a81526000602082017f456c656374696f6e3a206e6f6e6578697374656e7420766f74650000000000008152915061182f565b60208082528101610e21816119a4565b601f81526000602082017f456c656374696f6e3a206e6f6e6578697374656e742063616e646964617465008152915061182f565b60208082528101610e21816119e8565b60608101611a3a82866117e8565b611a4760208301856117e8565b6115486040830184611550565b6000816001600160ff1b0303831360008312151615611a7557611a75611771565b81600160ff1b0383126000831216156117e3576117e3611771565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061175a565b60208082528101610e2181611a90565b600060ff8216610e21565b61155281611aeb565b60208101610e218284611af6565b600b81526000602082016a0496e7465676572203c20360ac1b8152915061182f565b60208082528101610e2181611b0d56fea2646970667358221220e25107854a89b8b7c33fe7fb95581c6a767b35276af6e7f4f5bdb4dd5f5e5e7564736f6c63430008090033"; export class Election__factory extends ContractFactory { constructor( ...args: [signer: Signer] | ConstructorParameters ) { if (args.length === 1) { super(_abi, _bytecode, args[0]); } else { super(...args); } } deploy( overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy(overrides || {}) as Promise; } getDeployTransaction( overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction(overrides || {}); } attach(address: string): Election { return super.attach(address) as Election; } connect(signer: Signer): Election__factory { return super.connect(signer) as Election__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; static createInterface(): ElectionInterface { return new utils.Interface(_abi) as ElectionInterface; } static connect( address: string, signerOrProvider: Signer | Provider ): Election { return new Contract(address, _abi, signerOrProvider) as Election; } }