@wandevs/governance-contracts-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +2618 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +2618 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","abi","Parameters.totalProposalAmountInfo","Parameters.proposalGlobalConfig","Parameters.BURN","Parameters.getAllProposalCount","Parameters.getProposalCountByState","Parameters.getProposalMultiplierCounts","Parameters.getProposalWanMultiplierAt","Parameters.getVotingWanMultiplierAt","Parameters.proposalCategoryCount","Parameters.getEthBalance","Parameters.getErc20Balance","Parameters.getProposalCountByRole","Parameters.getFoundations","Parameters.getProposalId","Parameters.getProposalPartnerAndVoterCounts","Parameters.getProposalIdByRoleAt","Parameters.getProposalInfo","Parameters.getProposalPartnerInfo","Parameters.getProposalVoterInfo","Parameters.getProposalIdByStateAt","Parameters.getUnstakeStatus","GOVERNANCE_ABI"],"sources":["../src/util.ts","../src/types/index.ts","../src/abis/WanGovernor.ts","../src/parameters/getEthBalance.ts","../src/parameters/getErc20Balance.ts","../src/parameters/BURN.ts","../src/parameters/getFoundations.ts","../src/parameters/proposalCategoryCount.ts","../src/parameters/getProposalId.ts","../src/parameters/getProposalInfo.ts","../src/parameters/getProposalIdByStateAt.ts","../src/parameters/getProposalCountByState.ts","../src/parameters/getProposalCountByRole.ts","../src/parameters/getProposalPartnerAndVoterCounts.ts","../src/parameters/getProposalPartnerInfo.ts","../src/parameters/getProposalIdByRoleAt.ts","../src/parameters/getAllProposalCount.ts","../src/parameters/totalProposalAmountInfo.ts","../src/parameters/proposalGlobalConfig.ts","../src/parameters/getProposalVoterInfo.ts","../src/parameters/getProposalMultiplierCounts.ts","../src/parameters/getProposalWanMultiplierAt.ts","../src/parameters/getVotingWanMultiplierAt.ts","../src/parameters/getUnstakeStatus.ts","../src/governance.ts"],"sourcesContent":["const { encodeAbiParameters, decodeAbiParameters } = require('viem');\n\n\nexport const supportedProposalDescriptionDataTypeSchema = {\n 1: {\n types: [\n { type: 'uint256' }, // version\n { type: 'string' }, // title\n { type: 'string' }, // description\n { type: 'string' }, // email\n { type: 'string' }, // telegram\n ],\n names: ['version', 'title', 'description', 'email', 'telegram'],\n },\n 2: {\n types: [\n { type: 'uint256' }, // version\n { type: 'string' }, // title\n { type: 'string' }, // description\n { type: 'string' }, // email\n { type: 'string' }, // telegram\n { type: 'string' }, // twitter\n ],\n names: ['version', 'title', 'description', 'email', 'telegram', 'twitter'],\n },\n 3: {\n types: [\n { type: 'uint256' }, // version\n { type: 'string' }, // title\n { type: 'string' }, // description\n { type: 'string' }, // email\n { type: 'string' }, // telegram\n { type: 'string' }, // twitter\n { type: 'string' }, // discord\n ],\n names: ['version', 'title', 'description', 'email', 'telegram', 'twitter', 'discord'],\n }\n};\n\n\nexport function encodeProposalDescriptionData(...args) {\n const typeSchema = supportedProposalDescriptionDataTypeSchema[args[0]];\n if (!typeSchema) {\n throw new Error(\"Unsupported version\");\n }\n if (args.length !== typeSchema.types.length) {\n throw new Error(\"Invalid number of arguments for the specified version\");\n }\n const encoded = encodeAbiParameters(typeSchema.types, args);\n return encoded;\n}\n\nexport function decodeProposalDescriptionData(hexData) {\n const version = getVersionFromData(hexData);\n const typeSchema = supportedProposalDescriptionDataTypeSchema[version];\n if (!typeSchema) {\n throw new Error(\"Unsupported version\");\n }\n \n const decoded = decodeAbiParameters(typeSchema.types, hexData);\n console.log(\"decoded:\", decoded)\n\n // 4. Map the decoded array back to an object using the names in schema\n let result = {};\n for (let i = 0; i < typeSchema.names.length; i++) {\n result[typeSchema.names[i]] = decoded[i];\n }\n return result;\n}\n\nexport function getVersionFromData(hexData) {\n if (!hexData) return 0;\n\n // Check for '0x' prefix and calculate the offset for the first 32-byte slot\n const offset = hexData.startsWith('0x') ? 2 : 0;\n const versionPart = hexData.substring(offset, offset + 64);\n // parseInt is faster than BigInt for small, fixed-length hex segments\n return parseInt(versionPart, 16);\n}\n\n// // --- 测试用例 ---\n// var myVersion = 1;\n// var myTitle = \"DApp 开发者资助计划\";\n// var myEmail = \"dev@example.com\";\n// var myTg = \"@wanchain_dev\";\n// var myDesc = \"这是一个关于链下存储优化的详细提案描述。\";\n\n// // 编码过程\n// var hexResult = encodeProposalDescriptionData(myVersion, myTitle, myDesc, myEmail, myTg);\n// console.log(\"编码后的 Bytes (十六进制):\", hexResult);\n\n// // 解码过程\n// var originalObject = decodeProposalDescriptionData(hexResult);\n// console.log(\"解码后的原始数据:\", originalObject);\n\n\n// // --- 测试用例 2 ---\n// var myVersion = 2;\n// var myTitle = \"DApp 开发者资助计划\";\n// var myEmail = \"dev@example.com\";\n// var myTg = \"@wanchain_dev\";\n// var twitter = \"wanchain_dev\";\n// var myDesc = \"这是一个关于链下存储优化的详细提案描述。\";\n\n// // 编码过程\n// var hexResult = encodeProposalDescriptionData(myVersion, myTitle, myDesc, myEmail, myTg, twitter);\n// console.log(\"编码后的 Bytes (十六进制):\", hexResult);\n\n// // 解码过程\n// var originalObject = decodeProposalDescriptionData(hexResult);\n// console.log(\"解码后的原始数据:\", originalObject);","import type { Hex, Address } from 'viem';\n\n\nexport enum UnstakeStatus {\n NotExists = 0, // Request does not exist\n Claimed = 1, // Request has been claimed\n InProgress = 2, // Request is in progress\n ReadyToClaim = 3 // Request is ready to be claimed\n};\n\nexport enum ProposalRole {\n Proposer = 0,\n Partner = 1,\n Voter = 2\n};\n\nexport enum PledgeType {\n None = 0,\n Burn = 1,\n Lock = 2\n};\n\nexport enum VoteType {\n None = 0,\n For = 1,\n Against = 2\n};\nexport enum ProposalState {\n None = 0,\n UnderReview = 1,\n Canceled = 2,\n Fundraising = 3,\n VotingInProgress = 4,\n Succeeded = 5,\n Rejected = 6\n};\nexport enum ProposalCategory {\n Funding = 0,\n Technical = 1\n};\n\nexport interface FundInfo {\n wanAmount: bigint; // uint256\n wanPower: bigint; // uint256\n requestId: bigint; // uint256\n claimStWanAmount: bigint; // uint256\n claimWanAmount: bigint; // uint256\n lockDuration: bigint; // uint128\n pledgeType: PledgeType;\n reason: Hex; // bytes\n exited: boolean;\n};\nexport interface Tally {\n yes: bigint;\n no: bigint;\n};\nexport interface ProposalInfo {\n proposalId: Hex,\n requireXpAmount: bigint; // uint256\n requestWanAmount: bigint; // uint256\n requestMinVotingWanPower: bigint; // uint256\n\n totalPledgingWanAmount: bigint; // uint256\n totalPledgingWanPower: bigint; // uint256\n\n totalVotingWanAmount: bigint; // uint256\n totalVotingWanPower: bigint; // uint256\n\n totalWanAmount: bigint; // uint256\n totalLockingWanAmount: bigint; // uint256\n totalBurnedWanAmount: bigint; // uint256\n totalStWanAmount: bigint; // uint256\n\n totalClaimeStWanAmount: bigint; // uint256\n\n submitTimestamp: bigint; // uint256\n fundraisingDeadline: bigint; // uint256\n voteDeadline: bigint; // uint256\n\n tally: Tally;\n\n proposerFundInfo: FundInfo;\n category: ProposalCategory;\n\n state: ProposalState;\n proposer:Address;\n\n description: Hex; // bytes\n reason: Hex; // bytes\n};\n\nexport interface PartnerInfo {\n fundInfo: FundInfo;\n}\nexport interface VoterInfo {\n fundInfo: FundInfo;\n voteType: VoteType;\n}\n\nexport interface IndexRange {\n start: bigint;\n end: bigint;\n}\n\nexport interface PlegeMultiplierReturn {\n pledgeType: PledgeType;\n lockDuration: bigint;\n multiplier: bigint;\n}\n\nexport interface CanRequestProposalWithdrawalParam {\n state: ProposalState;\n pledgeType: PledgeType.Lock;\n lockDuration: bigint;\n voteDeadline: bigint;\n requestId: bigint;\n exited: boolean;\n}\n\nexport interface CanRequestProposalWithdrawalRetrunItem {\n needRequestWithdrawal:boolean;\n canRequestWithdrawal:boolean;\n}\n\nexport type CanClaimProposalWithdrawalParam = CanRequestProposalWithdrawalParam;\n","export const ABI = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"BURN\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DENOMINATOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WAN_GOVERNOR_OPERATOR_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelProposal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimPartnerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimProposerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimVoterWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"contributeProposal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createProposal\",\n \"inputs\": [\n {\n \"name\": \"_reqWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAllProposalCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFoundations\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalCountByRole\",\n \"inputs\": [\n {\n \"name\": \"_role\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalRole\"\n },\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalCountByState\",\n \"inputs\": [\n {\n \"name\": \"_state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalId\",\n \"inputs\": [\n {\n \"name\": \"_reqWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalIdByRoleAt\",\n \"inputs\": [\n {\n \"name\": \"_role\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalRole\"\n },\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalIdByStateAt\",\n \"inputs\": [\n {\n \"name\": \"_state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"info\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.ProposalInfo\",\n \"components\": [\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestMinVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalLockingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalBurnedWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalClaimeStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"submitTimestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fundraisingDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"voteDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tally\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.Tally\",\n \"components\": [\n {\n \"name\": \"yes\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"no\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"proposerFundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalInfoAt\",\n \"inputs\": [\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"info\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.ProposalInfo\",\n \"components\": [\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestMinVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalLockingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalBurnedWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalClaimeStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"submitTimestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fundraisingDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"voteDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tally\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.Tally\",\n \"components\": [\n {\n \"name\": \"yes\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"no\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"proposerFundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalMultiplierCounts\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"proposalWanMultiplierCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"votingWanMultiplierCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerAndVoterCounts\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partnerCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"voterCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerAt\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_partner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partnerInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.PartnerInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerInfoAt\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"partnerInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.PartnerInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalState\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalVoterAt\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalVoterInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_voter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"voterInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.VoterInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"voteType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.VoteType\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalVoterInfoAt\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"voter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"voterInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.VoterInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"voteType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.VoteType\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProposalWanMultiplierAt\",\n \"inputs\": [\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVotingWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVotingWanMultiplierAt\",\n \"inputs\": [\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getWanPower\",\n \"inputs\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasProposalExists\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"state\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"_admin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_proposalGlobalConfig\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.ProposalGlobalConfig\",\n \"components\": [\n {\n \"name\": \"ethTransferGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minParticipationAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanMultiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"succeedThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pledgeLockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"fundraisingDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"voteDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"xp\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakingManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wanTreasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isFoundation\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"isFoundationMember\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proposalCategoryCount\",\n \"inputs\": [\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proposalGlobalConfig\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"ethTransferGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minParticipationAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanMultiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"succeedThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pledgeLockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"fundraisingDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"voteDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"xp\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakingManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wanTreasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestPartnerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partnerRequestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestProposerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposerRequestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestVoterWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"voterRequestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reviewProposal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"isApproved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"_reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFoundations\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IWanGovernor.SetFoundationParam[]\",\n \"components\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isFoundationMember\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProposalWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IWanGovernor.SetWanMultiplier[]\",\n \"components\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n }\n ]\n },\n {\n \"name\": \"ifClean\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setVotingWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IWanGovernor.SetWanMultiplier[]\",\n \"components\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n }\n ]\n },\n {\n \"name\": \"ifClean\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tallyProposal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalProposalAmountInfo\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"allProposalWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"allProposalLockingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"allProposalBurnedWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateEthTransferGasLimit\",\n \"inputs\": [\n {\n \"name\": \"_gasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateFundraisingDuration\",\n \"inputs\": [\n {\n \"name\": \"_duration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMinParticipationAmount\",\n \"inputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePledgeLockDuration\",\n \"inputs\": [\n {\n \"name\": \"_lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateRequestWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"_requestWanMultiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateSucceedThreshold\",\n \"inputs\": [\n {\n \"name\": \"_threshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVoteDuration\",\n \"inputs\": [\n {\n \"name\": \"_duration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateXpRequiredAmount\",\n \"inputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"voteProposal\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"votePledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_voteType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.VoteType\"\n },\n {\n \"name\": \"_reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CancelProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"values\",\n \"type\": \"bytes[]\",\n \"indexed\": false,\n \"internalType\": \"bytes[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimPartnerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimProposerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimVoterWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ContributeProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"values\",\n \"type\": \"bytes[]\",\n \"indexed\": false,\n \"internalType\": \"bytes[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreateProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"values\",\n \"type\": \"bytes[]\",\n \"indexed\": false,\n \"internalType\": \"bytes[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RequestPartnerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stWanAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RequestProposerWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stWanAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RequestVoterWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stWanAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ReviewProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"isApproved\",\n \"type\": \"bool\",\n \"indexed\": true,\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetFoundation\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isFoundationMember\",\n \"type\": \"bool\",\n \"indexed\": true,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetProposalFailed\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetProposalStage\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ifSet\",\n \"type\": \"bool\",\n \"indexed\": true,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetProposalWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"indexed\": true,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetVotingWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"indexed\": true,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TallyProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stWanAmount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateEthTransferGasLimit\",\n \"inputs\": [\n {\n \"name\": \"gasLimit\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateFundraisingDuration\",\n \"inputs\": [\n {\n \"name\": \"duration\",\n \"type\": \"uint128\",\n \"indexed\": true,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateMinParticipationAmount\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdatePledgeLockDuration\",\n \"inputs\": [\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"indexed\": true,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateRequestWanMultiplier\",\n \"inputs\": [\n {\n \"name\": \"requestWanMultiplier\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateSucceedThreshold\",\n \"inputs\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateVoteDuration\",\n \"inputs\": [\n {\n \"name\": \"duration\",\n \"type\": \"uint128\",\n \"indexed\": true,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UpdateXpRequiredAmount\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VoteProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"voteType\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum IWanGovernor.VoteType\"\n },\n {\n \"name\": \"keys\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"values\",\n \"type\": \"bytes[]\",\n \"indexed\": false,\n \"internalType\": \"bytes[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyContributeProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AmountBelowMinimum\",\n \"inputs\": [\n {\n \"name\": \"provided\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"required\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ApplicationExceedsLimit\",\n \"inputs\": [\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"limit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EthTransferFailed\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"gasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPledgeType\",\n \"inputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVotePlegeType\",\n \"inputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVoteType\",\n \"inputs\": [\n {\n \"name\": \"voteType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.VoteType\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"LockPeriodNotReached\",\n \"inputs\": [\n {\n \"name\": \"unlockTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAdmin\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAdminOrOperator\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotExistsRequestId\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMatchArrayLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotRequestProposal\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotSupportedPledgeType\",\n \"inputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotSupportedVotePledgeType\",\n \"inputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalAlreadyVoted\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"voter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalAreadyExists\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotApproved\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotExist\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotFundraising\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotReachedTallyStage\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotUnderReview\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalNotVotingInProgress\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalVotingEnded\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProposalVotingTallied\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProspectiveProposalNotExist\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReviewPendingProposalNotExist\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnauthorizedEtherTransfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"VotingProposalNotExist\",\n \"inputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n type: 'function',\n name: 'getEthBalance',\n inputs: [{ \"name\": \"addr\", \"type\": \"address\", \"internalType\": \"address\" }],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view'\n }\n] as const;\n\n\nexport function getEthBalance(multicall3Addr: Address, owner: Address) {\n const call = {\n address: multicall3Addr,\n abi,\n functionName: 'getEthBalance',\n args: [ owner ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getEthBalance.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n name: 'balanceOf',\n type: 'function',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n stateMutability: 'view'\n }\n] as const;\n\n\nexport function getErc20Balance(erc20Addr: Address, owner: Address) {\n const call = {\n address: erc20Addr,\n abi,\n functionName: 'balanceOf',\n args: [ owner ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getErc20Balance.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"BURN\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function BURN(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'BURN',\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/BURN.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getFoundations\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getFoundations(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getFoundations',\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getFoundations.ts","import type { Address } from 'viem';\nimport { ProposalState, ProposalCategory } from '../types'\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"proposalCategoryCount\",\n \"inputs\": [\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function proposalCategoryCount(governanceAddr: Address, state: ProposalState, category: ProposalCategory) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'proposalCategoryCount',\n args: [state, category]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/proposalCategoryCount.ts","import type { Address, Hex } from 'viem';\nimport type { ProposalCategory, PledgeType } from '../types';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalId\",\n \"inputs\": [\n {\n \"name\": \"_reqWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"_pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"_description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalId(governanceAddr: Address, reqWanAmount: bigint, proposer: Address, category: ProposalCategory, pledgeType: PledgeType, description: Hex) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalId',\n args: [ reqWanAmount, proposer, category, pledgeType, description ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalId.ts","import type { Address, Hex } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"info\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.ProposalInfo\",\n \"components\": [\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestMinVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPledgingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalVotingWanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalLockingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalBurnedWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalClaimeStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"submitTimestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fundraisingDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"voteDeadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tally\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.Tally\",\n \"components\": [\n {\n \"name\": \"yes\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"no\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"proposerFundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"category\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalCategory\"\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"proposer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"description\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalInfo(governanceAddr: Address, proposalId: Hex) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalInfo',\n args: [ proposalId ],\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalInfo.ts","import type { Address } from 'viem';\nimport type { ProposalState } from '../types';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalIdByStateAt\",\n \"inputs\": [\n {\n \"name\": \"_state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalIdByStateAt(governanceAddr: Address, state: ProposalState, index: bigint) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalIdByStateAt',\n args: [ state, index ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalIdByStateAt.ts","import type { Address } from 'viem';\nimport type { ProposalState } from '../types';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalCountByState\",\n \"inputs\": [\n {\n \"name\": \"_state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalState\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalCountByState(governanceAddr: Address, state: ProposalState) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalCountByState',\n args: [ state ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalCountByState.ts","import type { Address } from 'viem';\nimport type { ProposalRole } from '../types'\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalCountByRole\",\n \"inputs\": [\n {\n \"name\": \"_role\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalRole\"\n },\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalCountByRole(governanceAddr: Address, role: ProposalRole, account: address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalCountByRole',\n args: [ role, account ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalCountByRole.ts","import type { Address, Hex } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerAndVoterCounts\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partnerCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"voterCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalPartnerAndVoterCounts(governanceAddr: Address, proposalId: Hex) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalPartnerAndVoterCounts',\n args: [ proposalId ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalPartnerAndVoterCounts.ts","import type { Address, Hex } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalPartnerInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_partner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"partnerInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.PartnerInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalPartnerInfo(governanceAddr: Address, proposalId: Hex, partnerAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalPartnerInfo',\n args: [ proposalId, partnerAddr ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalPartnerInfo.ts","import type { Address } from 'viem';\nimport type { ProposalRole } from '../types';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalIdByRoleAt\",\n \"inputs\": [\n {\n \"name\": \"_role\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.ProposalRole\"\n },\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalIdByRoleAt(governanceAddr: Address, role: ProposalRole, account: Address, index: bigint) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalIdByRoleAt',\n args: [role, account, index]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalIdByRoleAt.ts","import type { Address } from 'viem';\nimport { ProposalState, ProposalCategory } from '../types'\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getAllProposalCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getAllProposalCount(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getAllProposalCount',\n args: []\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getAllProposalCount.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"totalProposalAmountInfo\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"allProposalWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"allProposalLockingWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"allProposalBurnedWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function totalProposalAmountInfo(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'totalProposalAmountInfo',\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/totalProposalAmountInfo.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"proposalGlobalConfig\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"ethTransferGasLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minParticipationAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestWanMultiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"succeedThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requireXpAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pledgeLockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"fundraisingDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"voteDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"xp\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakingManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wanTreasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function proposalGlobalConfig(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'proposalGlobalConfig',\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/proposalGlobalConfig.ts","import type { Address, Hex } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalVoterInfo\",\n \"inputs\": [\n {\n \"name\": \"_proposalId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_voter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"voterInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.VoterInfo\",\n \"components\": [\n {\n \"name\": \"fundInfo\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IWanGovernor.FundInfo\",\n \"components\": [\n {\n \"name\": \"wanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"wanPower\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimStWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"claimWanAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"exited\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"voteType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.VoteType\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalVoterInfo(governanceAddr: Address, proposalId: Hex, voterAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalVoterInfo',\n args: [proposalId, voterAddr]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalVoterInfo.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalMultiplierCounts\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"proposalWanMultiplierCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"votingWanMultiplierCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalMultiplierCounts(governanceAddr: Address) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalMultiplierCounts',\n args: []\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/proposalWanMultiplierCount.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getProposalWanMultiplierAt\",\n \"inputs\": [\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getProposalWanMultiplierAt(governanceAddr: Address, index: bigint) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getProposalWanMultiplierAt',\n args: [ index ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getProposalWanMultiplierAt.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getVotingWanMultiplierAt\",\n \"inputs\": [\n {\n \"name\": \"_index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pledgeType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum IWanGovernor.PledgeType\"\n },\n {\n \"name\": \"lockDuration\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"multiplier\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getVotingWanMultiplierAt(governanceAddr: Address, index: bigint) {\n const call = {\n address: governanceAddr,\n abi,\n functionName: 'getVotingWanMultiplierAt',\n args: [ index ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getVotingWanMultiplierAt.ts","import type { Address } from 'viem';\n\n\nconst abi = [\n {\n \"type\": \"function\",\n \"name\": \"getUnstakeStatus\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"unstakeStatus\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n\n\nexport function getUnstakeStatus(stakingManagerAddr: Address, requestId: bigint) {\n const call = {\n address: stakingManagerAddr,\n abi,\n functionName: 'getUnstakeStatus',\n args: [ requestId ]\n } as const;\n\n return call;\n}\n\n// yarn tsx --tsconfig tsconfig.json src/parameters/getUnstakeStatus.ts","import { \n Abi,\n createPublicClient,\n encodeFunctionData,\n http,\n type Address,\n type Account,\n type Hex,\n type Chain,\n type EncodeFunctionDataParameters,\n type ContractFunctionName,\n type ContractFunctionArgs,\n type PrepareTransactionRequestReturnType,\n} from 'viem';\nimport { wanchain } from 'viem/chains';\nimport {\n UnstakeStatus,\n ProposalRole,\n PledgeType,\n VoteType,\n ProposalState,\n ProposalCategory,\n type ProposalInfo,\n type PartnerInfo,\n type VoterInfo,\n type IndexRange,\n type PlegeMultiplierReturn,\n type CanRequestProposalWithdrawalParam,\n type CanRequestProposalWithdrawalRetrunItem,\n type CanClaimProposalWithdrawalParam,\n} from './types'\nimport { ABI as GOVERNANCE_ABI } from './abis/WanGovernor';\nimport * as Parameters from './parameters';\n\n\nexport class Governance<TAbi extends Abi = typeof GOVERNANCE_ABI> {\n constructor(governanceAddr: Address, chain: Chain = wanchain, rpcUrl?: string) {\n // 1. Init Public Client (for read-only operations)\n this.publicClient = createPublicClient({\n chain,\n transport: rpcUrl ? http(rpcUrl) : http(),\n });\n this.governanceAddr = governanceAddr;\n }\n\n // get base parameters\n async getBaseParameters(): Promise<{\n allProposalWanAmount: bigint\n allProposalLockingWanAmount: bigint\n allProposalBurnedWanAmount: bigint\n\n ethTransferGasLimit: bigint\n minParticipationAmount: bigint\n requestWanMultiplier: bigint\n succeedThreshold: bigint\n requireXpAmount: bigint\n pledgeLockDuration: bigint\n fundraisingDuration: bigint\n voteDuration: bigint\n xp: Address\n stakingManager: Address\n wanTreasury: Address\n burnAddr: Address\n\n proposalCount: bigint\n reviewPendingProposalCount: bigint\n prospectiveProposalCount: bigint\n votingProposalCount: bigint\n succeededProposalCount: bigint\n failedProposalCount: bigint\n canceledProposalCount: bigint\n\n proposalWanMultiplierCount: bigint\n votingWanMultiplierCount: bigint\n }> {\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.totalProposalAmountInfo(this.governanceAddr),\n Parameters.proposalGlobalConfig(this.governanceAddr),\n Parameters.BURN(this.governanceAddr),\n Parameters.getAllProposalCount(this.governanceAddr),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.UnderReview),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Fundraising),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.VotingInProgress),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Succeeded),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Rejected),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Canceled),\n Parameters.getProposalMultiplierCounts(this.governanceAddr),\n ],\n allowFailure: false,\n });\n\n return {\n allProposalWanAmount: results[0][0],\n allProposalLockingWanAmount: results[0][1],\n allProposalBurnedWanAmount: results[0][2],\n\n ethTransferGasLimit: results[1][0],\n minParticipationAmount: results[1][1],\n requestWanMultiplier: results[1][2],\n succeedThreshold: results[1][3],\n requireXpAmount: results[1][4],\n pledgeLockDuration: results[1][5],\n fundraisingDuration: results[1][6],\n voteDuration: results[1][7],\n xp: results[1][8],\n stakingManager: results[1][9],\n wanTreasury: results[1][10],\n\n burnAddr: results[2],\n\n proposalCount: results[3],\n reviewPendingProposalCount: results[4],\n prospectiveProposalCount: results[5],\n votingProposalCount: results[6],\n succeededProposalCount: results[7],\n failedProposalCount: results[8],\n canceledProposalCount: results[9],\n\n proposalWanMultiplierCount: results[10][0],\n votingWanMultiplierCount: results[10][1],\n }\n }\n\n async getProposalMultipliers(options:{proposalWanMultiplier: IndexRange | undefined, votingWanMultiplier: IndexRange | undefined}): Promise<{\n proposalWanMultipliers: [PlegeMultiplierReturn] | []\n votingWanMultipliers: [PlegeMultiplierReturn] | []\n }> {\n let proposalWanMultiplierCount = 0n;\n let votingWanMultiplierCount = 0n;\n if (options.proposalWanMultiplier) {\n if (options.proposalWanMultiplier.end < options.proposalWanMultiplier.start || options.proposalWanMultiplier.start < 0n) {\n throw new Error('Invalid proposalWanMultiplier');\n }\n proposalWanMultiplierCount = options.proposalWanMultiplier.end - options.proposalWanMultiplier.start + 1n;\n }\n if (options.votingWanMultiplier) {\n if (options.votingWanMultiplier.end < options.votingWanMultiplier.start || options.votingWanMultiplier.start < 0n) {\n throw new Error('Invalid votingWanMultiplier');\n }\n votingWanMultiplierCount = options.votingWanMultiplier.end - options.votingWanMultiplier.start + 1n;\n }\n\n let contractCount = proposalWanMultiplierCount + votingWanMultiplierCount;\n\n let hasProposalWanMultipliers = proposalWanMultiplierCount > 0n;\n let hasVotingWanMultipliers = votingWanMultiplierCount > 0n;\n let contracts = new Array(contractCount);\n if (hasProposalWanMultipliers) {\n for (let i = 0; i < proposalWanMultiplierCount; ++i) {\n contracts[i] = Parameters.getProposalWanMultiplierAt(this.governanceAddr, i);\n }\n }\n if (hasVotingWanMultipliers) {\n for (let i = proposalWanMultiplierCount; i < contractCount; ++i) {\n contracts[i] = Parameters.getVotingWanMultiplierAt(this.governanceAddr, i - proposalWanMultiplierCount);\n }\n }\n\n const results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n let proposalWanMultipliers = hasProposalWanMultipliers ? new Array(proposalWanMultiplierCount) : [];\n let votingWanMultipliers = hasVotingWanMultipliers ? new Array(votingWanMultiplierCount) : [];\n\n for (let i = 0n; i < results.length; ++i) {\n if (i < proposalWanMultiplierCount) {\n proposalWanMultipliers[i] = {\n pledgeType: results[i][0],\n lockDuration: results[i][1],\n multiplier: results[i][2],\n };\n } else {\n votingWanMultipliers[i - proposalWanMultiplierCount] = {\n pledgeType: results[i][0],\n lockDuration: results[i][1],\n multiplier: results[i][2],\n };\n }\n }\n\n return {\n proposalWanMultipliers: proposalWanMultipliers,\n votingWanMultipliers: votingWanMultipliers,\n }\n }\n\n // get base parameters\n async getProposalCounts(): Promise<{\n allProposalCount: bigint\n reviewPendingProposalCount: bigint\n prospectiveProposalCount: bigint\n votingProposalCount: bigint\n succeededProposalCount: bigint\n failedProposalCount: bigint\n canceledProposalCount: bigint\n }> {\n\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.getAllProposalCount(this.governanceAddr),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.UnderReview),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Fundraising),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.VotingInProgress),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Succeeded),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Rejected),\n Parameters.getProposalCountByState(this.governanceAddr, ProposalState.Canceled),\n ],\n allowFailure: false,\n });\n\n return {\n allProposalCount: results[0],\n reviewPendingProposalCount: results[1],\n prospectiveProposalCount: results[2],\n votingProposalCount: results[3],\n succeededProposalCount: results[4],\n failedProposalCount: results[5],\n canceledProposalCount: results[6],\n }\n }\n\n async getActiveProposalCategoryCounts(): Promise<{\n fundingProposalCount: bigint\n technicalProposalCount: bigint\n }> {\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.proposalCategoryCount(this.governanceAddr, ProposalState.Fundraising, ProposalCategory.Funding),\n Parameters.proposalCategoryCount(this.governanceAddr, ProposalState.Fundraising, ProposalCategory.Technical),\n Parameters.proposalCategoryCount(this.governanceAddr, ProposalState.VotingInProgress, ProposalCategory.Funding),\n Parameters.proposalCategoryCount(this.governanceAddr, ProposalState.VotingInProgress, ProposalCategory.Technical),\n ],\n allowFailure: false,\n });\n\n return {\n fundingProposalCount: results[0] + results[2],\n technicalProposalCount: results[1] + results[3],\n }\n }\n\n // get balance about WAN and XP\n async getAssetBalances(xpAddress: Address, userAddress: Address): Promise<{\n ethBalance: bigint\n xpBalance: bigint\n }> {\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.getEthBalance(this.publicClient.chain.contracts.multicall3.address, userAddress),\n Parameters.getErc20Balance(xpAddress, userAddress)\n ],\n allowFailure: false,\n });\n\n return {\n ethBalance: results[0],\n xpBalance: results[1],\n }\n }\n\n // get partner proposal\n async getAccountProposalCount(account: Address): Promise<{\n proposerProposalCount: bigint,\n partnerProposalCount: bigint,\n voterProposalCount: bigint,\n }> {\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.getProposalCountByRole(this.governanceAddr, ProposalRole.Proposer, account),\n Parameters.getProposalCountByRole(this.governanceAddr, ProposalRole.Partner, account),\n Parameters.getProposalCountByRole(this.governanceAddr, ProposalRole.Voter, account),\n ],\n allowFailure: false,\n });\n\n return {\n proposerProposalCount: results[0],\n partnerProposalCount: results[1],\n voterProposalCount: results[2],\n }\n }\n\n // get foundations\n async getFoundations(): Promise<Address[]> {\n const governanceAddr = '0xaFBF28B258599466fFAC7C207172d84CE12761B8';\n const results = await this.publicClient.readContract(Parameters.getFoundations(governanceAddr));\n return results;\n }\n\n // calc proposal id by account\n async getAccountProposalId(\n account: Address,\n requestWanAmount: bigint,\n category: ProposalCategory,\n pledgeType: PledgeType,\n description: Hex\n\n ): Promise<Hex> {\n const governanceAddr = '0xaFBF28B258599466fFAC7C207172d84CE12761B8';\n const proposalId = await this.publicClient.readContract(Parameters.getProposalId(this.governanceAddr, requestWanAmount, account, category, pledgeType, description));\n return proposalId;\n }\n\n async getProposalPartnerAndVoterCounts(proposalId: Hex): Promise<bigint> {\n const result = await this.publicClient.readContract(Parameters.getProposalPartnerAndVoterCounts(this.governanceAddr, proposalId));\n return result;\n }\n\n // get partner proposal\n async getProposerProposals(proposerAddr: Address, indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByRoleAt(this.governanceAddr, ProposalRole.Proposer, proposerAddr, i);\n }\n\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; i++) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length;) {\n results[i].proposalId = proposalIds[i];\n i += 2;\n }\n return results;\n }\n\n // get partner proposal\n async getPartnerProposals(partnerAddr: Address, indexRange: IndexRange): Promise<\n {\n proposalInfo: ProposalInfo\n partnerInfo: PartnerInfo\n }[]\n > {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByRoleAt(this.governanceAddr, ProposalRole.Partner, partnerAddr, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length * 2);\n for (let i = 0; i < proposalIds.length; ++i) {\n let index = i * 2;\n contracts[index] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n contracts[index + 1] = Parameters.getProposalPartnerInfo(this.governanceAddr, proposalIds[i], partnerAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n let partnerProposals = new Array(proposalIds.length);\n\n for (let i = 0; i < proposalIds.length; ++i) {\n let index = i * 2;\n results[index].proposalId = proposalIds[i];\n partnerProposals[i] = {\n proposalInfo: results[index],\n partnerInfo: results[index + 1],\n \n }\n }\n return partnerProposals;\n }\n\n // get voter proposal\n async getVoterProposals(voterAddr: Address, indexRange: IndexRange): Promise<\n {\n proposalInfo: ProposalInfo\n voterInfo: VoterInfo\n }[]\n > {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByRoleAt(this.governanceAddr, ProposalRole.Voter, voterAddr, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length * 2);\n for (let i = 0; i < proposalIds.length; ++i) {\n let index = i * 2;\n contracts[index] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n contracts[index + 1] = Parameters.getProposalVoterInfo(this.governanceAddr, proposalIds[i], voterAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n let voterProposals = new Array(proposalIds.length);\n\n for (let i = 0; i < proposalIds.length; ++i) {\n let index = i * 2;\n results[index].proposalId = proposalIds[i];\n voterProposals[i] = {\n proposalInfo: results[index],\n voterInfo: results[index + 1],\n \n }\n }\n return voterProposals;\n }\n\n // get partner proposal\n async getPartnerInfo(partnerAddr: Address, proposalIds: Hex[]): Promise<PartnerInfo[]> {\n let contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalPartnerInfo(this.governanceAddr, proposalIds[i], partnerAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getVoterInfo(voterAddr: Address, proposalIds: Hex[]): Promise<VoterInfo[]> {\n let contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalVoterInfo(this.governanceAddr, proposalIds[i], voterAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getReviewPendingProposals(indexRange: IndexRange): Promise<ProposalInfo> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.UnderReview, i);\n }\n\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getProspectiveProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.Fundraising, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getVotingProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.VotingInProgress, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getSucceedProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.Succeeded, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getFailedProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0n) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts = new Array(indexRange.end - indexRange.start + 1n);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.Rejected, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalIds[i]);\n }\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < proposalIds.length; ++i) {\n results[i].proposalId = proposalIds[i];\n }\n return results;\n }\n\n // get voter proposal\n async getProposalInfo(proposalId: Hex): Promise<ProposalInfo> {\n let result = await this.publicClient.readContract(Parameters.getProposalInfo(this.governanceAddr, proposalId));\n result.proposalId = proposalId;\n return result;\n }\n\n // can proposer|partner|voter request proposal withdrawal\n canRequestProposalWithdrawal(timestamp: bigint, params: CanRequestProposalWithdrawalParam[]): CanRequestProposalWithdrawalRetrunItem[] {\n let results = new Array(params.length);\n for (let i = 0; i < params.length; ++i) {\n let needRequestWithdrawal = true;\n let canRequestWithdrawal = false;\n if (params[i].state == ProposalState.Rejected || params[i].state == ProposalState.Succeeded && (params[i].lockDuration == 0n || params[i].requestId > 0n)) {\n needRequestWithdrawal = false;\n }\n if (params[i].state == ProposalState.Succeeded && params[i].lockDuration > 0n && timestamp > params[i].voteDeadline + params[i].lockDuration && params[i].requestId == 0n && !params[i].exited) {\n canRequestWithdrawal = true;\n }\n results[i] = {needRequestWithdrawal, canRequestWithdrawal};\n }\n return results;\n }\n\n // can proposer claim proposal withdrawal\n async canClaimProposalWithdrawal(stakingManagerAddr: Address, timestamp: bigint, params: CanClaimProposalWithdrawalParam[]): Promise<boolean[]> {\n let contractCount = 0;\n let indexMap = {};\n let results = new Array(params.length);\n let contracts = new Array(params.length);\n for (let i = 0; i < params.length; ++i) {\n if (params[i].state == ProposalState.Rejected || params[i].state == ProposalState.Succeeded && params[i].lockDuration == 0n && !params[i].exited) {\n results[i] = true;\n continue;\n }\n\n if (params[i].state == ProposalState.Succeeded && params[i].lockDuration > 0n && timestamp > params[i].voteDeadline + params[i].lockDuration && params[i].requestId > 0n && !params[i].exited) {\n contracts[contractCount] = Parameters.getUnstakeStatus(stakingManagerAddr, params[i].requestId);\n indexMap[i] = contractCount;\n contractCount ++;\n continue;\n }\n\n results[i] = false;\n }\n contracts = contracts.slice(0, contractCount);\n\n let multiUnstakeStatus = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n });\n for (let i = 0; i < contracts.length; i++) {\n results[indexMap[i]] = multiUnstakeStatus[i] == UnstakeStatus.ReadyToClaim;\n }\n return results;\n\n }\n\n async getUnstakeStatus(stakingManager: Address, requestId: bigint): Promise<UnstakeStatus> {\n return await this.publicClient.readContract(Parameters.getUnstakeStatus(stakingManager, requestId));\n }\n\n async buildTx<\n TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>\n >(\n account: Account | Address,\n functionName: TFunctionName,\n args: ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>,\n value: bigint = 0n\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n await this.publicClient.simulateContract({\n address: this.governanceAddr,\n abi: GOVERNANCE_ABI,\n functionName,\n args,\n account,\n value,\n });\n\n return await this.publicClient.prepareTransactionRequest({\n account,\n to: this.governanceAddr,\n data: encodeFunctionData({\n abi: GOVERNANCE_ABI,\n functionName,\n args,\n } as any),\n value,\n });\n }\n async _buildTx(account: Address | Account, parameters: EncodeFunctionDataParameters, value: bigint = 0n): Promise<\n PrepareTransactionRequestReturnType\n > {\n await this.publicClient.simulateContract({\n address: this.governanceAddr,\n abi: parameters.abi,\n functionName: parameters.functionName,\n args: parameters.args,\n account: account,\n });\n return await this.publicClient.prepareTransactionRequest({\n account: account,\n to: this.governanceAddr,\n data: encodeFunctionData(parameters),\n value: value,\n });\n }\n\n async buildCreateProposalTx(\n account: Address | Account,\n pledgeWanAmount: bigint,\n requestWanAmount: bigint,\n category: ProposalCategory,\n pledgeType: PledgeType,\n description: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"createProposal\", [requestWanAmount, category, pledgeType, description], pledgeWanAmount);\n }\n\n async buildCancelProposalTx(account: Address | Account, proposalId: Hex, reason: Hex): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"cancelProposal\", [proposalId, reason]);\n }\n\n async buildReviewProposalTx(\n account: Address | Account,\n proposalId: Hex,\n isApproved: boolean,\n reason: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"reviewProposal\", [proposalId, isApproved, reason]);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'reviewProposal',\n // args: [proposalId, isApproved, reason]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildContributeProposalTx(\n account: Address | Account,\n proposalId: Hex,\n pledgeWanAmount: bigint,\n pledgeType: PledgeType,\n reason: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"contributeProposal\", [proposalId, pledgeType, reason], pledgeWanAmount);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'contributeProposal',\n // args: [proposalId, pledgeType, reason]\n // }\n // return await this._buildTx(account, parameters, pledgeWanAmount);\n }\n\n async buildVoteProposalTx(\n account: Address | Account,\n proposalId: Hex, pledgeWanAmount: bigint,\n lockDuration: bigint,\n pledgeType: PledgeType,\n voteType: VoteType,\n reason: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"voteProposal\", [proposalId, lockDuration, pledgeType, voteType, reason], pledgeWanAmount);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'voteProposal',\n // args: [proposalId, lockDuration, pledgeType, voteType, reason]\n // }\n // return await this._buildTx(account, parameters, pledgeWanAmount);\n }\n\n async buildTallyProposalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"tallyProposal\", [proposalId]);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'tallyProposal',\n // args: [proposalId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildRequestProposerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"requestProposerWithdrawal\", [proposalId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'requestProposerWithdrawal',\n // args: [proposalId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildClaimProposerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"claimProposerWithdrawal\", [proposalId, requestId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'claimProposerWithdrawal',\n // args: [proposalId, requestId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildRequestPartnerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"requestPartnerWithdrawal\", [proposalId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'requestPartnerWithdrawal',\n // args: [proposalId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildClaimPartnerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"claimPartnerWithdrawal\", [proposalId, requestId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'claimPartnerWithdrawal',\n // args: [proposalId, requestId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildRequestVoterWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"requestVoterWithdrawal\", [proposalId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'requestVoterWithdrawal',\n // args: [proposalId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildClaimVoterWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"claimVoterWithdrawal\", [proposalId, requestId], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'claimVoterWithdrawal',\n // args: [proposalId, requestId]\n // }\n // return await this._buildTx(account, parameters, 0n);\n }\n\n async buildUpdateFundraisingDurationTx(\n account: Address | Account,\n fundraisingDuration: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"updateFundraisingDuration\", [fundraisingDuration], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'updateFundraisingDuration',\n // args: [ fundraisingDuration ]\n // };\n return await this._buildTx(account, parameters, 0n);\n }\n\n async buildUpdateMinParticipationAmountTx(\n account: Address | Account,\n amount: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n return await this.buildTx(account, \"updateMinParticipationAmount\", [amount], 0n);\n // const parameters = {\n // abi: GOVERNANCE_ABI,\n // functionName: 'updateMinParticipationAmount',\n // args: [ amount ]\n // };\n // return await this._buildTx(account, parameters, 0n);\n }\n\n}"],"mappings":"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"}
|