+
+ Current Epoch: {epoch?.toString()}
+
+
+ Governance State: {governanceState}
+
+ {votingPeriodTime && (
+
+ {governanceState === GovernanceState.PROPOSAL ? (
+
+ Start of Voting Period: {votingPeriodTime} UTC
+
+ ) : (
+
+ End of Voting Period: {votingPeriodTime} UTC
+
+ )}
+
+ )}
+ {epochEndTime && (
+
+ End of Current Epoch: {epochEndTime} UTC
+
+ )}
+
+ )
+}
+
+export default GovDataYPools
diff --git a/src/components/veYFI-calculator.tsx b/src/components/veYFI-calculator.tsx
index 2a3de01f6..bc0bdfa6a 100644
--- a/src/components/veYFI-calculator.tsx
+++ b/src/components/veYFI-calculator.tsx
@@ -31,7 +31,6 @@ import {
ResponsiveContainer,
} from 'recharts'
import styles from '../css/veYFI-calc.module.css'
-import Label from './shadcn/label/label'
import { Button } from './shadcn/button/button'
import VeYFILockCalculator from './VeYFILockCalculator' // Import the new component
diff --git a/src/context/ContractDataContext.tsx b/src/context/ContractDataContext.tsx
index 77a635e35..f4ca377d5 100644
--- a/src/context/ContractDataContext.tsx
+++ b/src/context/ContractDataContext.tsx
@@ -64,7 +64,12 @@ const fetchData = async (
(arg0: (prevData: any) => any): void
}
) => {
+ console.log('contractReadParams', contractReadParams)
try {
+ // Fetch the latest block timestamp
+ const block = await publicClient.getBlock({ blockTag: 'latest' })
+ const blockTimestamp = Number(block.timestamp)
+
for (const contractReadCall of contractReadParams) {
const address = contractReadCall.address
const abi = ABIs[contractReadCall.abiName]
@@ -105,6 +110,7 @@ const fetchData = async (
}
newData[contractReadCall.name][methodName] = result
})
+ newData['blockTimestamp'] = blockTimestamp
return newData
})
}
diff --git a/src/css/widgets.module.css b/src/css/widgets.module.css
new file mode 100644
index 000000000..62b62f555
--- /dev/null
+++ b/src/css/widgets.module.css
@@ -0,0 +1,48 @@
+.CardHeader {
+ padding: 0;
+ padding-bottom: 1rem;
+}
+
+.CardContent {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ padding: 0 1.5rem 0 1.5rem;
+ gap: 1rem;
+}
+
+.inputElements {
+ display: flex;
+ flex-direction: row;
+ gap: 1rem;
+ width: 100%;
+}
+
+.CardFooter {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ align-items: left;
+ padding: 0;
+ justify-content: space-between;
+ padding-top: 1rem;
+}
+
+.encodedDataCard {
+ margin-top: -1rem;
+ padding: 0.5rem;
+ cursor: pointer;
+ position: relative;
+}
+
+.copyIcon {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ opacity: 0;
+ transition: opacity 0.3s;
+}
+
+.encodedDataCard:hover .copyIcon {
+ opacity: 0.5;
+}
diff --git a/src/ethereum/ABIs/index.ts b/src/ethereum/ABIs/index.ts
index be8c48ace..4ee699709 100644
--- a/src/ethereum/ABIs/index.ts
+++ b/src/ethereum/ABIs/index.ts
@@ -11,3 +11,5 @@ export * from './v3ReleaseRegistryABI'
export * from './v3VaultFactoryABI'
export * from './yearnV3RoleManagerABI'
export * from './v3VaultFactoryBlueprintABI'
+export * from './yPoolsGenericGovernorABI'
+export * from './yPoolsInclusionVoteABI'
diff --git a/src/ethereum/ABIs/yPoolsGenericGovernorABI.ts b/src/ethereum/ABIs/yPoolsGenericGovernorABI.ts
new file mode 100644
index 000000000..0ec271355
--- /dev/null
+++ b/src/ethereum/ABIs/yPoolsGenericGovernorABI.ts
@@ -0,0 +1,389 @@
+export const yPoolsGenericGovernorABI = [
+ {
+ name: 'Propose',
+ inputs: [
+ { name: 'idx', type: 'uint256', indexed: true },
+ { name: 'epoch', type: 'uint256', indexed: true },
+ { name: 'author', type: 'address', indexed: true },
+ { name: 'ipfs', type: 'bytes32', indexed: false },
+ { name: 'script', type: 'bytes', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Retract',
+ inputs: [{ name: 'idx', type: 'uint256', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Cancel',
+ inputs: [{ name: 'idx', type: 'uint256', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Vote',
+ inputs: [
+ { name: 'account', type: 'address', indexed: true },
+ { name: 'idx', type: 'uint256', indexed: true },
+ { name: 'yea', type: 'uint256', indexed: false },
+ { name: 'nay', type: 'uint256', indexed: false },
+ { name: 'abstain', type: 'uint256', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Enact',
+ inputs: [
+ { name: 'idx', type: 'uint256', indexed: true },
+ { name: 'by', type: 'address', indexed: true },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetMeasure',
+ inputs: [{ name: 'measure', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetExecutor',
+ inputs: [{ name: 'executor', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetDelay',
+ inputs: [{ name: 'delay', type: 'uint256', indexed: false }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetQuorum',
+ inputs: [{ name: 'quorum', type: 'uint256', indexed: false }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetMajority',
+ inputs: [{ name: 'majority', type: 'uint256', indexed: false }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetProposeMinWeight',
+ inputs: [{ name: 'min_weight', type: 'uint256', indexed: false }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'PendingManagement',
+ inputs: [{ name: 'management', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetManagement',
+ inputs: [{ name: 'management', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'constructor',
+ inputs: [
+ { name: '_genesis', type: 'uint256' },
+ { name: '_measure', type: 'address' },
+ { name: '_executor', type: 'address' },
+ { name: '_quorum', type: 'uint256' },
+ { name: '_majority', type: 'uint256' },
+ { name: '_delay', type: 'uint256' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'epoch',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'propose_open',
+ inputs: [],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'vote_open',
+ inputs: [],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'quorum',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'previous_quorum',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'majority',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'previous_majority',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'delay',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'previous_delay',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'proposal',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [
+ {
+ name: '',
+ type: 'tuple',
+ components: [
+ { name: 'epoch', type: 'uint256' },
+ { name: 'author', type: 'address' },
+ { name: 'ipfs', type: 'bytes32' },
+ { name: 'state', type: 'uint256' },
+ { name: 'hash', type: 'bytes32' },
+ { name: 'yea', type: 'uint256' },
+ { name: 'nay', type: 'uint256' },
+ { name: 'abstain', type: 'uint256' },
+ ],
+ },
+ ],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'proposal_state',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'update_proposal_state',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'propose',
+ inputs: [
+ { name: '_ipfs', type: 'bytes32' },
+ { name: '_script', type: 'bytes' },
+ ],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'retract',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'cancel',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'vote_yea',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'vote_nay',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'vote_abstain',
+ inputs: [{ name: '_idx', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'vote',
+ inputs: [
+ { name: '_idx', type: 'uint256' },
+ { name: '_yea', type: 'uint256' },
+ { name: '_nay', type: 'uint256' },
+ { name: '_abstain', type: 'uint256' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'enact',
+ inputs: [
+ { name: '_idx', type: 'uint256' },
+ { name: '_script', type: 'bytes' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_measure',
+ inputs: [{ name: '_measure', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_executor',
+ inputs: [{ name: '_executor', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_quorum',
+ inputs: [{ name: '_quorum', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_majority',
+ inputs: [{ name: '_majority', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_delay',
+ inputs: [{ name: '_delay', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_propose_min_weight',
+ inputs: [{ name: '_propose_min_weight', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_management',
+ inputs: [{ name: '_management', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'accept_management',
+ inputs: [],
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'genesis',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'management',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'pending_management',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'measure',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'executor',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'propose_min_weight',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'num_proposals',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'voted',
+ inputs: [
+ { name: 'arg0', type: 'address' },
+ { name: 'arg1', type: 'uint256' },
+ ],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+] as const
diff --git a/src/ethereum/ABIs/yPoolsInclusionVoteABI.ts b/src/ethereum/ABIs/yPoolsInclusionVoteABI.ts
new file mode 100644
index 000000000..09789b16f
--- /dev/null
+++ b/src/ethereum/ABIs/yPoolsInclusionVoteABI.ts
@@ -0,0 +1,427 @@
+export const yPoolsInclusionVoteABI = [
+ {
+ name: 'Apply',
+ inputs: [
+ { name: 'epoch', type: 'uint256', indexed: true },
+ { name: 'token', type: 'address', indexed: true },
+ { name: 'account', type: 'address', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Whitelist',
+ inputs: [
+ { name: 'epoch', type: 'uint256', indexed: true },
+ { name: 'token', type: 'address', indexed: true },
+ { name: 'idx', type: 'uint256', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Vote',
+ inputs: [
+ { name: 'epoch', type: 'uint256', indexed: true },
+ { name: 'account', type: 'address', indexed: true },
+ { name: 'weight', type: 'uint256', indexed: false },
+ { name: 'votes', type: 'uint256[]', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'Finalize',
+ inputs: [
+ { name: 'epoch', type: 'uint256', indexed: true },
+ { name: 'winner', type: 'address', indexed: true },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetRateProvider',
+ inputs: [
+ { name: 'token', type: 'address', indexed: true },
+ { name: 'provider', type: 'address', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetEnableEpoch',
+ inputs: [{ name: 'epoch', type: 'uint256', indexed: false }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetOperator',
+ inputs: [{ name: 'operator', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetTreasury',
+ inputs: [{ name: 'treasury', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetFeeToken',
+ inputs: [{ name: 'fee_token', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetFees',
+ inputs: [
+ { name: 'initial', type: 'uint256', indexed: false },
+ { name: 'subsequent', type: 'uint256', indexed: false },
+ ],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetMeasure',
+ inputs: [{ name: 'measure', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'PendingManagement',
+ inputs: [{ name: 'management', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ name: 'SetManagement',
+ inputs: [{ name: 'management', type: 'address', indexed: true }],
+ anonymous: false,
+ type: 'event',
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'constructor',
+ inputs: [
+ { name: '_genesis', type: 'uint256' },
+ { name: '_measure', type: 'address' },
+ { name: '_fee_token', type: 'address' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'epoch',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'apply_open',
+ inputs: [],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'vote_open',
+ inputs: [],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'enabled',
+ inputs: [],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'has_applied',
+ inputs: [{ name: '_token', type: 'address' }],
+ outputs: [{ name: '', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'application_fee',
+ inputs: [{ name: '_token', type: 'address' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'apply',
+ inputs: [{ name: '_token', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'whitelist',
+ inputs: [{ name: '_tokens', type: 'address[]' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'vote',
+ inputs: [{ name: '_votes', type: 'uint256[]' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'latest_finalized_epoch',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'finalize_epochs',
+ inputs: [],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_rate_provider',
+ inputs: [
+ { name: '_token', type: 'address' },
+ { name: '_provider', type: 'address' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'sweep',
+ inputs: [{ name: '_token', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'sweep',
+ inputs: [
+ { name: '_token', type: 'address' },
+ { name: '_recipient', type: 'address' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_operator',
+ inputs: [{ name: '_operator', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_treasury',
+ inputs: [{ name: '_treasury', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_measure',
+ inputs: [{ name: '_measure', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_enable_epoch',
+ inputs: [{ name: '_epoch', type: 'uint256' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_application_fee_token',
+ inputs: [{ name: '_token', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_application_fees',
+ inputs: [
+ { name: '_initial', type: 'uint256' },
+ { name: '_subsequent', type: 'uint256' },
+ ],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'set_management',
+ inputs: [{ name: '_management', type: 'address' }],
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ name: 'accept_management',
+ inputs: [],
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'genesis',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'management',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'pending_management',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'operator',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'treasury',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'measure',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'enable_epoch',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'num_candidates',
+ inputs: [{ name: 'arg0', type: 'uint256' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'candidates',
+ inputs: [
+ { name: 'arg0', type: 'uint256' },
+ { name: 'arg1', type: 'uint256' },
+ ],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'candidates_map',
+ inputs: [
+ { name: 'arg0', type: 'uint256' },
+ { name: 'arg1', type: 'address' },
+ ],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'applications',
+ inputs: [{ name: 'arg0', type: 'address' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'rate_providers',
+ inputs: [{ name: 'arg0', type: 'address' }],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'total_votes',
+ inputs: [{ name: 'arg0', type: 'uint256' }],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'votes',
+ inputs: [
+ { name: 'arg0', type: 'uint256' },
+ { name: 'arg1', type: 'uint256' },
+ ],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'votes_user',
+ inputs: [
+ { name: 'arg0', type: 'address' },
+ { name: 'arg1', type: 'uint256' },
+ ],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'winners',
+ inputs: [{ name: 'arg0', type: 'uint256' }],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'winner_rate_providers',
+ inputs: [{ name: 'arg0', type: 'uint256' }],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'fee_token',
+ inputs: [],
+ outputs: [{ name: '', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'initial_fee',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ name: 'subsequent_fee',
+ inputs: [],
+ outputs: [{ name: '', type: 'uint256' }],
+ },
+] as const
diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js
index 49f59e9cf..13992b87a 100644
--- a/src/theme/MDXComponents.js
+++ b/src/theme/MDXComponents.js
@@ -5,7 +5,8 @@ import ContractData from '@site/src/components/ContractData'
import ContractAddress from '@site/src/components/StaticContractAddress'
import AddressCheck from '@site/src/components/AddressCheck'
import VeYFICalculator from '../components/veYFI-calculator'
-
+import GovDataYPools from '@site/src/components/GovDataYPools'
+import AbiEncodingWidget from '@site/src/components/AbiEncodingWidget'
/**
* Manually add the custom components to the list of MDXComponents that docusaurus uses
@@ -17,5 +18,6 @@ export default {
ContractAddress,
AddressCheck,
VeYFICalculator,
-
+ GovDataYPools,
+ AbiEncodingWidget,
}
diff --git a/static/img/icons/copy-icon.svg b/static/img/icons/copy-icon.svg
new file mode 100644
index 000000000..1e4a3db61
--- /dev/null
+++ b/static/img/icons/copy-icon.svg
@@ -0,0 +1,9 @@
+
+