@wandevs/governance-contracts-sdk 1.0.1 → 1.1.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.
@@ -1 +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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"}
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","GOVERNANCE_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"],"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":["import {\n encodeAbiParameters,\n decodeAbiParameters,\n type Hex\n} from 'viem';\n\n/**\n * Type definition for proposal description schema structure\n * @interface ProposalDescriptionSchema\n * @property {Array<{ type: string }>} types - ABI parameter types array\n * @property {string[]} names - Corresponding parameter names array (no undefined values)\n */\ninterface ProposalDescriptionSchema {\n types: Array<{ type: 'uint8' | 'string' }>;\n names: string[]; // Explicitly enforce string array (no undefined)\n}\n\n/**\n * Type definition for decoded proposal description data\n * @type {Record<string, number | string>}\n * Key-value pairs of proposal description data (version/title/description etc.)\n */\nexport type ProposalDescriptionData = Record<string, number | string>;\n\n/**\n * Valid version types for proposal description schema\n * @type {1 | 2 | 3}\n */\nexport type ValidVersion = 1 | 2 | 3;\n\n/**\n * Supported proposal description data type schemas by version\n * @readonly\n * @type {Record<ValidVersion, ProposalDescriptionSchema>}\n * Schema definitions for different versions of proposal description data:\n * - Version 1: basic fields (version/title/description/email/telegram)\n * - Version 2: adds twitter field\n * - Version 3: adds discord field\n */\nexport const supportedProposalDescriptionDataTypeSchema: Record<ValidVersion, ProposalDescriptionSchema> = {\n 1: {\n types: [\n { type: 'uint8' }, // 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: 'uint8' }, // 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: 'uint8' }, // 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/**\n * Type guard to check if a number is a valid version (1/2/3)\n * @function isValidVersion\n * @param {number} version - Number to check\n * @returns {version is ValidVersion} True if version is 1/2/3\n */\nfunction isValidVersion(version: number): version is ValidVersion {\n return version === 1 || version === 2 || version === 3;\n}\n\n/**\n * Type guard to check if a value is a non-empty string (valid for object indexing)\n * @function isValidIndexString\n * @param {unknown} value - Value to check\n * @returns {value is string} True if value is a non-empty string\n */\nfunction isValidIndexString(value: unknown): value is string {\n return typeof value === 'string' && value.trim() !== '';\n}\n\n/**\n * Encodes proposal description data to Hex format using viem's encodeAbiParameters\n * @function encodeProposalDescriptionData\n * @param {...(number | string)} args - Proposal description parameters (matches schema by version):\n * - First argument: version (uint8, 1/2/3)\n * - Subsequent arguments: title, description, email, telegram, [twitter], [discord]\n * @returns {Hex} Encoded Hex string of proposal description data\n * @throws {Error} If version is unsupported or argument count doesn't match schema\n * @example\n * // Encode version 2 proposal data\n * const encoded = encodeProposalDescriptionData(2, \"Test Proposal\", \"Test Description\", \"test@example.com\", \"@test\", \"@test_twitter\");\n * console.log(encoded); // Hex string\n */\nexport function encodeProposalDescriptionData(...args: (number | string)[]): Hex {\n const version = args[0] as number;\n \n if (!isValidVersion(version)) {\n throw new Error(\"Unsupported version - only versions 1, 2, 3 are supported\");\n }\n \n const typeSchema = supportedProposalDescriptionDataTypeSchema[version];\n \n if (args.length !== typeSchema.types.length) {\n throw new Error(`Invalid number of arguments for version ${version} - expected ${typeSchema.types.length}, got ${args.length}`);\n }\n \n const encoded = encodeAbiParameters(typeSchema.types, args);\n return encoded;\n}\n\n/**\n * Decodes Hex formatted proposal description data back to object format\n * @function decodeProposalDescriptionData\n * @param {Hex} hexData - Encoded Hex string of proposal description data\n * @returns {ProposalDescriptionData} Decoded proposal description object with named fields\n * @throws {Error} If version from hexData is unsupported or data is corrupted\n * @example\n * // Decode Hex data to proposal object\n * const decoded = decodeProposalDescriptionData(\"0x...\");\n * console.log(decoded.title); // \"Test Proposal\"\n */\nexport function decodeProposalDescriptionData(hexData: Hex): ProposalDescriptionData {\n const version = getVersionFromData(hexData);\n \n // Fix 2: Use type guard for version validation in decode function\n if (!isValidVersion(version)) {\n throw new Error(`Unsupported version ${version} - only versions 1, 2, 3 are supported`);\n }\n \n const typeSchema = supportedProposalDescriptionDataTypeSchema[version];\n const decoded = decodeAbiParameters(typeSchema.types, hexData);\n \n // Validate decoded array length matches schema (prevent index out of bounds)\n if (decoded.length !== typeSchema.names.length) {\n throw new Error(`Corrupted data: decoded values count (${decoded.length}) does not match schema (${typeSchema.names.length})`);\n }\n\n console.log(\"decoded:\", decoded);\n\n // Map decoded array to named object (type-safe)\n const result: ProposalDescriptionData = {};\n for (let i = 0; i < typeSchema.names.length; i++) {\n // Fix: Strict check to ensure index is a valid non-empty string\n const fieldName = typeSchema.names[i];\n const fieldValue = decoded[i];\n\n // Skip invalid fields (or throw error if you want strict validation)\n if (!isValidIndexString(fieldName)) {\n continue; // Or: throw new Error(`Invalid field name at index ${i}: ${fieldName}`);\n }\n\n // Only assign if value is defined (matches number/string type)\n if (fieldValue !== undefined && (typeof fieldValue === 'number' || typeof fieldValue === 'string')) {\n result[fieldName] = fieldValue;\n }\n }\n \n return result;\n}\n\n/**\n * Extracts version number from encoded Hex proposal data\n * @function getVersionFromData\n * @param {Hex} hexData - Encoded Hex string of proposal description data\n * @returns {ValidVersion | 0} Extracted valid version (1/2/3) or 0 if invalid\n * Reads the first 32-byte slot of Hex data to get uint8 version value\n * @example\n * const version = getVersionFromData(\"0x...\");\n * console.log(version); // 2\n */\nexport function getVersionFromData(hexData: Hex): ValidVersion | 0 {\n if (!hexData || typeof hexData !== 'string' || hexData.length < 66) return 0;\n\n const offset = hexData.startsWith('0x') ? 2 : 0;\n const versionPart = hexData.substring(offset, offset + 64);\n \n const version = parseInt(versionPart, 16);\n return isValidVersion(version) ? version : 0;\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/**\n * @enum {number} UnstakeStatus\n * Define unstake status at different stages.\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/**\n * @enum {number} ProposalRole\n * Define the roles of proposal participants.\n */\nexport enum ProposalRole {\n Proposer = 0,\n Partner = 1,\n Voter = 2\n};\n/**\n * @enum {number} PledgeType\n * Define the type of pledged.\n */\nexport enum PledgeType {\n None = 0,\n Burn = 1,\n Lock = 2\n};\n/**\n * @enum {number} VoteType\n * Define the type of vote.\n */\nexport enum VoteType {\n None = 0,\n For = 1,\n Against = 2\n};\n/**\n * @enum {number} ProposalState\n * Define the different stages of a proposal.\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};\n/**\n * @enum {number} ProposalCategory\n * Define the category of proposal.\n */\nexport enum ProposalCategory {\n Funding = 0,\n Technical = 1\n};\n/**\n * Funding info.\n */\nexport interface FundInfo {\n /**\n * Amount of WAN.\n * @type {bigint}\n */\n wanAmount: bigint; // uint256\n /**\n * Amount of WAN power.\n * @type {bigint}\n */\n wanPower: bigint; // uint256\n /**\n * ID of proposal request withdrawal to be queried for proposer, partner or voter.\n * @type {bigint}\n */\n requestId: bigint; // uint256\n /**\n * The amount of StWan that can be withdrawn after staking WAN in the proposal for proposer, partner or voter.\n * @type {bigint}\n */\n claimStWanAmount: bigint; // uint256\n /**\n * The amount of WAN that can be received after claim StWan in the proposal for proposer, partner or voter.\n * @type {bigint}\n */\n claimWanAmount: bigint; // uint256\n /**\n * Lock duration of proposal be queried for proposer, partner or voter.\n * @type {bigint}\n */\n lockDuration: bigint; // uint128\n /**\n * PledgeType of proposal be queried for proposer, partner or voter.\n * @type {PledgeType}\n */\n pledgeType: PledgeType;\n /**\n * Reasons for participating in the proposal.\n * @type {Hex}\n */\n reason: Hex; // bytes\n /**\n * Indicator showing whether it has been claimed.\n * @type {boolean}\n */\n exited: boolean;\n};\n/**\n * Pproposal vote statistics.\n */\nexport interface Tally {\n /**\n * Amount of WAN power for yes.\n * @type {bigint}\n */\n yes: bigint;\n /**\n * Amount of WAN power for no.\n * @type {bigint}\n */\n no: bigint;\n};\n\n/**\n * ContractProposal: proposal info of Wanchain governance contract.\n */\nexport interface ContractProposal {\n /**\n * Amount of XP required when proposal creation.\n * @type {bigint}\n */\n requireXpAmount: bigint; // uint256\n /**\n * Amount of WAN request when proposal creation.\n * @type {bigint}\n */\n requestWanAmount: bigint; // uint256\n /**\n * Minimum amount of WAN power to win proposal vote.\n * @type {bigint}\n */\n requestMinVotingWanPower: bigint; // uint256\n /**\n * Amount of WAN that proposal total pledged for proposer and partner.\n * @type {bigint}\n */\n\n totalPledgingWanAmount: bigint; // uint256\n /**\n * Amount of WAN power that proposal total pledged.\n * @type {bigint}\n */\n totalPledgingWanPower: bigint; // uint256\n /**\n * Amount of WAN voted.\n * @type {bigint}\n */\n\n totalVotingWanAmount: bigint; // uint256\n /**\n * Amount of WAN power voted.\n * @type {bigint}\n */\n totalVotingWanPower: bigint; // uint256\n /**\n * The total amount of T involved in the proposal.\n * @type {bigint}\n */\n\n totalWanAmount: bigint; // uint256\n /**\n * The amount of WAN's that have passed review in the proposal.\n * @type {bigint}\n */\n totalLockingWanAmount: bigint; // uint256\n /**\n * The amount of WAN's that have burned in the proposal.\n * @type {bigint}\n */\n totalBurnedWanAmount: bigint; // uint256\n /**\n * The total amount of StWan received after staking WAN in the proposal.\n * @type {bigint}\n */\n totalStWanAmount: bigint; // uint256\n /**\n * The amount of StWan that can be withdrawn after staking WAN in the proposal.\n * @type {bigint}\n */\n\n totalClaimeStWanAmount: bigint; // uint256\n /**\n * Timestamp of proposal creation.\n * @type {bigint}\n */\n\n submitTimestamp: bigint; // uint256\n /**\n * Fundraising deadline for prospective proposal.\n * @type {bigint}\n */\n fundraisingDeadline: bigint; // uint256\n /**\n * Vote deadline for active(voting) proposal.\n * @type {bigint}\n */\n voteDeadline: bigint; // uint256\n /**\n * Current proposal vote statistics.\n * @type {bigint}\n */\n\n tally: Tally;\n /**\n * Funding info of proposer.\n * @type {Hex}\n */\n\n proposerFundInfo: FundInfo;\n /**\n * Category of proposal.\n * @type {Hex}\n */\n category: ProposalCategory;\n /**\n * State of proposal.\n * @type {Hex}\n */\n\n state: ProposalState;\n /**\n * Proposer of proposal.\n * @type {Hex}\n */\n proposer: Address;\n /**\n * Description of proposal creation.\n * @type {Hex}\n */\n\n description: Hex; // bytes\n /**\n * Reasons to cancel or review proposal.\n * @type {Hex}\n */\n reason: Hex; // bytes\n};\n\n/**\n * ProposalInfo: proposal info extends contract proposal(ContractProposal)\n */\nexport interface ProposalInfo extends ContractProposal {\n /**\n * ID of proposal, should be bytes32.\n * @type {Hex}\n */\n proposalId: Hex,\n};\n\n/**\n * PartnerInfo: partner info in proposal\n */\nexport interface PartnerInfo {\n /**\n * Fund info for partner.\n * @type {FundInfo}\n */\n fundInfo: FundInfo;\n}\n/**\n * VoterInfo: voter info in proposal\n */\nexport interface VoterInfo {\n /**\n * Fund info for voter.\n * @type {FundInfo}\n */\n fundInfo: FundInfo;\n /**\n * Vote type for voter.\n * @type {VoteType}\n */\n voteType: VoteType;\n}\n\n/**\n * IndexRange: Index range: [start, index]\n */\nexport interface IndexRange {\n /**\n * Start index.\n * @type {number}\n */\n start: number;\n /**\n * End index.\n * @type {number}\n */\n end: number;\n}\n/**\n * PlegeMultiplierReturn: Return type for getProposalMultipliers.\n */\n\nexport interface PlegeMultiplierReturn {\n /**\n * PledgeType of proposal be queried for proposer, partner or voter.\n * @type {PledgeType}\n */\n pledgeType: PledgeType;\n /**\n * Lock duration of proposal be queried for proposer, partner or voter.\n * @type {bigint}\n */\n lockDuration: bigint;\n /**\n * Multiplier of proposal be queried for proposer, partner or voter.\n * @type {bigint}\n */\n multiplier: bigint;\n}\n\n/**\n * CanRequestProposalWithdrawalParam: Input parameter type for canRequestProposalWithdrawal, same as CanClaimProposalWithdrawalParam.\n */\nexport interface CanRequestProposalWithdrawalParam {\n /**\n * State of proposal to be queried.\n * @type {ProposalState}\n */\n state: ProposalState;\n /**\n * PledgeType of proposal to be queried.\n * @type {PledgeType}\n */\n pledgeType: PledgeType;\n /**\n * Lock duration of proposal be queried for proposer, partner or voter.\n * @type {bigint}\n */\n lockDuration: bigint;\n /**\n * Vote deadlint for proposal to be queried.\n * @type {bigint}\n */\n voteDeadline: bigint;\n /**\n * ID of proposal request withdrawal to be queried for proposer, partner or voter.\n * @type {bigint}\n */\n requestId: bigint;\n /**\n * Check if already claimed of proposal to be queried for proposer, partner or voter.\n * @type {boolean}\n */\n exited: boolean;\n}\n\n/**\n * CanClaimProposalWithdrawalParam: Input parameter type for canClaimProposalWithdrawal, same as CanRequestProposalWithdrawalParam.\n */\nexport type CanClaimProposalWithdrawalParam = CanRequestProposalWithdrawalParam;\n\n/**\n * CanRequestProposalWithdrawalRetrunItem: Return array item for canRequestProposalWithdrawal\n */\nexport interface CanRequestProposalWithdrawalRetrunItem {\n /**\n * Check if need to request withdrawal for proposer, partner or voter.\n * @type {boolean}\n */\n needRequestWithdrawal: boolean;\n /**\n * Check if can request withdrawal for proposer, partner or voter.\n * @type {boolean}\n */\n canRequestWithdrawal: boolean;\n}\n\n/**\n * BaseParametersReturnType: Return type for getBaseParameters.\n */\nexport interface BaseParametersReturnType {\n /**\n * All reviewed proposal WAN amounts.\n * @type {bigint}\n */\n allProposalWanAmount: bigint;\n /**\n * All locking WAN amounts.\n * @type {bigint}\n */\n allProposalLockingWanAmount: bigint;\n /**\n * All burned WAN amounts.\n * @type {bigint}\n */\n allProposalBurnedWanAmount: bigint;\n\n /**\n * WAN transfer gaslimit\n * @type {bigint}\n */\n ethTransferGasLimit: bigint;\n /**\n * Minimum amount of WANs a participant can participate in for funding proposal\n * @type {bigint}\n */\n minParticipationAmount: bigint;\n /**\n * Multiplier to request WANs from Wanchain Treasury\n * @type {bigint}\n */\n requestWanMultiplier: bigint;\n /**\n * Threshold to succeed proposal\n * @type {bigint}\n */\n succeedThreshold: bigint;\n /**\n * Proposal creation require amount of XP\n * @type {bigint}\n */\n requireXpAmount: bigint;\n /**\n * Proposer or partner pledge WAN by locking duration\n * @type {bigint}\n */\n pledgeLockDuration: bigint;\n /**\n * Duration for partners to pledge their WAN to help a Prospective Proposal meet the pledge requirements.\n * @type {bigint}\n */\n fundraisingDuration: bigint;\n /**\n * Duration for voters to vote active proposal\n * @type {bigint}\n */\n voteDuration: bigint;\n /**\n * for XP token\n * @type {bigint}\n */\n xp: Address;\n /**\n * Address for StakingManager\n * @type {bigint}\n */\n stakingManager: Address;\n /**\n * Address for Wanchain community treasury\n * @type {bigint}\n */\n wanTreasury: Address;\n /**\n * Address for WAN burned\n * @type {bigint}\n */\n burnAddr: Address;\n /**\n * Count for total proposal: include reviewing proposals, canceled proposals, prospective proposals, active proposals, succeeded proposals and failed proposals\n * @type {bigint}\n */\n\n proposalCount: bigint;\n /**\n * Count for reviewing proposals\n * @type {bigint}\n */\n reviewPendingProposalCount: bigint;\n /**\n * Count for prospective proposals\n * @type {bigint}\n */\n prospectiveProposalCount: bigint;\n /**\n * Count for active(voting) proposals\n * @type {bigint}\n */\n votingProposalCount: bigint;\n /**\n * Count for succeeded proposals\n * @type {bigint}\n */\n succeededProposalCount: bigint;\n /**\n * Count for rejected proposals\n * @type {bigint}\n */\n failedProposalCount: bigint;\n /**\n * Count for canceled proposals\n * @type {bigint}\n */\n canceledProposalCount: bigint;\n /**\n * Count of multipliers for proposer and partner \n * @type {bigint}\n */\n\n proposalWanMultiplierCount: bigint;\n /**\n * Count of multipliers for voter\n * @type {bigint}\n */\n votingWanMultiplierCount: bigint;\n}\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: number) {\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: number) {\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';\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, ContractFunctionParameters } 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: number): ContractFunctionParameters {\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, ContractFunctionParameters } 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: number): ContractFunctionParameters {\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 createPublicClient,\n encodeFunctionData,\n http,\n type Abi,\n type Address,\n type Account,\n type Hex,\n type Chain,\n type EncodeFunctionDataParameters,\n type ContractFunctionArgs,\n type ContractFunctionName,\n type ContractFunctionParameters,\n type PrepareTransactionRequestParameters,\n type PrepareTransactionRequestReturnType,\n type PublicClient,\n} from 'viem';\nimport { wanchain } from 'viem/chains';\nimport {\n UnstakeStatus,\n ProposalRole,\n PledgeType,\n VoteType,\n ProposalState,\n ProposalCategory,\n type BaseParametersReturnType,\n type ContractProposal,\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\n/**\n * Wanchain governance\n * @remarks Providing creation, cancellation, review, contribute, voting, query, etc. proposal API\n */\n/**\n * Governance Core Class: Encapsulates Viem's PublicClient and Wanchain governance contract address management\n * @class SDK\n * @template TAbi - Contract ABI type, the built-in GOVERNANCE_ABI constant is used by default\n * @param {Address} governanceAddr - Wanchain governance contract address\n * @param {Chain} chain - Block chain from Viem's chains(such as wanchain, wanchainTestnet)\n * @param {string} [rpcUrl] - Optional custom RPC; if not provided, the chain's default RPC is used.\n * @example\n * const sdk = new Governance('0x123...', wanchain);\n * console.log(sdk.governanceAddr); // '0x123...'\n */\nexport class Governance<TAbi extends Abi = typeof GOVERNANCE_ABI> {\n public readonly publicClient: PublicClient;\n public readonly governanceAddr: Address;\n public readonly governanceAbi: Abi = GOVERNANCE_ABI;\n\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 /**\n * Get the basic parameters(return JSON object)\n * @returns {Promise<BaseParametersReturnType>}\n * @example\n * const ret = await sdk.getBaseParameters();\n * console.log(ret);\n */\n async getBaseParameters(): Promise<BaseParametersReturnType> {\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 /**\n * Get the basic parameters(return JSON object)\n * @param options - Optional parameters\n * @param options.proposalWanMultiplier - Index range of proposal WAN multipliers\n * @param options.votingWanMultiplier - Index range of voter WAN multipliers\n * @returns {Promise<{\n proposalWanMultipliers: PlegeMultiplierReturn[] | []\n votingWanMultipliers: PlegeMultiplierReturn[] | []\n }>}\n * @example\n * const ret = await sdk.getProposalMultipliers({proposalWanMultiplier:{start: 0, end: 0}, votingWanMultiplier:{start: 0, end: 0}});\n * console.log(ret);\n */\n async getProposalMultipliers(options:{proposalWanMultiplier: IndexRange | undefined, votingWanMultiplier: IndexRange | undefined}): Promise<{\n proposalWanMultipliers: PlegeMultiplierReturn[] | []\n votingWanMultipliers: PlegeMultiplierReturn[] | []\n }> {\n let proposalWanMultiplierCount = 0;\n let votingWanMultiplierCount = 0;\n if (options.proposalWanMultiplier) {\n if (options.proposalWanMultiplier.end < options.proposalWanMultiplier.start || options.proposalWanMultiplier.start < 0) {\n throw new Error('Invalid proposalWanMultiplier');\n }\n proposalWanMultiplierCount = options.proposalWanMultiplier.end - options.proposalWanMultiplier.start + 1;\n }\n if (options.votingWanMultiplier) {\n if (options.votingWanMultiplier.end < options.votingWanMultiplier.start || options.votingWanMultiplier.start < 0) {\n throw new Error('Invalid votingWanMultiplier');\n }\n votingWanMultiplierCount = options.votingWanMultiplier.end - options.votingWanMultiplier.start + 1;\n }\n\n let contractCount = proposalWanMultiplierCount + votingWanMultiplierCount;\n\n let hasProposalWanMultipliers = proposalWanMultiplierCount > 0;\n let hasVotingWanMultipliers = votingWanMultiplierCount > 0;\n let contracts: ContractFunctionParameters[] = 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 = 0; i < results.length; ++i) {\n if (i < proposalWanMultiplierCount) {\n let data = results[i] as [PledgeType, bigint, bigint];\n proposalWanMultipliers[i] = {\n pledgeType: data[0],\n lockDuration: data[1],\n multiplier: data[2],\n };\n } else {\n let data = results[i] as [PledgeType, bigint, bigint];\n votingWanMultipliers[i - proposalWanMultiplierCount] = {\n pledgeType: data[0],\n lockDuration: data[1],\n multiplier: data[2],\n };\n }\n }\n\n return {\n proposalWanMultipliers: proposalWanMultipliers,\n votingWanMultipliers: votingWanMultipliers,\n }\n }\n\n /**\n * Get proposal counts for all, recviewPending, prospective, voting, succeeded, failed and canceled proposal\n * @returns {Promise<{\n allProposalCount: bigint\n reviewPendingProposalCount: bigint\n prospectiveProposalCount: bigint\n votingProposalCount: bigint\n succeededProposalCount: bigint\n failedProposalCount: bigint\n canceledProposalCount: bigint\n }>}\n * @example\n * const ret = await sdk.getProposalCounts();\n * console.log(ret);\n */\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 /**\n * Get active proposal counts by category\n * @returns {Promise<{\n fundingProposalCount: bigint\n technicalProposalCount: bigint\n }>}\n * @example\n * const ret = await sdk.getActiveProposalCategoryCounts();\n * console.log(ret);\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.VotingInProgress, ProposalCategory.Funding),\n Parameters.proposalCategoryCount(this.governanceAddr, ProposalState.VotingInProgress, ProposalCategory.Technical),\n ],\n allowFailure: false,\n });\n\n return {\n fundingProposalCount: results[0],\n technicalProposalCount: results[1],\n }\n }\n\n /**\n * Get prospective + active proposal counts by category\n * @returns {Promise<{\n fundingProposalCount: bigint\n technicalProposalCount: bigint\n }>}\n * @example\n * const ret = await sdk.getParticipableProposalCategoryCounts();\n * console.log(ret);\n */\n async getParticipableProposalCategoryCounts(): 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 /**\n * Get WAN and XP balance for identified account\n * @returns {Promise<{\n ethBalance: bigint\n xpBalance: bigint\n }>}\n * @example\n * const xpAddress = '0x123...';\n * const account = '0x456...';\n * const ret = await sdk.getAssetBalances(xpAddress, account);\n * console.log(ret);\n */\n async getAssetBalances(xpAddress: Address, account: Address): Promise<{\n ethBalance: bigint\n xpBalance: bigint\n }> {\n if (!this.publicClient?.chain?.contracts?.multicall3?.address) {\n throw new Error('not support multicall3');\n }\n const results = await this.publicClient.multicall({\n contracts: [\n Parameters.getEthBalance(this.publicClient?.chain?.contracts?.multicall3?.address, account),\n Parameters.getErc20Balance(xpAddress, account)\n ],\n allowFailure: false,\n });\n\n return {\n ethBalance: results[0],\n xpBalance: results[1],\n }\n }\n\n /**\n * Get counts proposal count for identified account\n * @param {Address} account - Account to be queried\n * @returns {Promise<{\n proposerProposalCount: bigint,\n partnerProposalCount: bigint,\n voterProposalCount: bigint,\n }>}\n * @example\n * const account = '0x456...';\n * const ret = await sdk.getAccountProposalCount(account);\n * console.log(ret);\n */\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 /**\n * Get fouondations\n * @returns {Promise<readonly Address[]>} - Array of foundations\n * @example\n * const ret = await sdk.getFoundations(account);\n * console.log(ret);\n */\n async getFoundations(): Promise<readonly Address[]> {\n const results = await this.publicClient.readContract(Parameters.getFoundations(this.governanceAddr));\n return results;\n }\n\n /**\n * Caculate proposal ID\n * @param {Address} account - Account of proposer\n * @param {bigint} requestWanAmount - Amount of WAN's requested for proposal\n * @param {ProposalCategory} category - Category of proposal\n * @param {PledgeType} pledgeType - PledgeType of proposal for proposer\n * @param {Hex} description - Description of proposal\n * @returns {Promise<Hex>} - ID of proposal\n * @example\n * const account = '0x456...';\n * const requestWanAmount = 100n;\n * const category = ProposalCategory.ProposalCategory;\n * const pledgeType = PledgeType.Burn;\n * const description = 'request';\n * const ret = await sdk.getAccountProposalId(account, requestWanAmount, category, pledgeType, description);\n * console.log(ret);\n */\n async getAccountProposalId(\n account: Address,\n requestWanAmount: bigint,\n category: ProposalCategory,\n pledgeType: PledgeType,\n description: Hex\n\n ): Promise<Hex> {\n const proposalId = await this.publicClient.readContract(Parameters.getProposalId(this.governanceAddr, requestWanAmount, account, category, pledgeType, description));\n return proposalId;\n }\n\n /**\n * Get counts for the proposal partners and voteres\n * @param {Hex} proposalId - ID of propsal\n * @returns {Promise<{\n partnerCount: bigint,\n voterCount: bigint\n }>}\n * @example\n * const proposalId = '0x456...';\n * const ret = await sdk.getProposalPartnerAndVoterCounts(proposalId);\n * console.log(ret);\n */\n async getProposalPartnerAndVoterCounts(proposalId: Hex): Promise<{\n partnerCount: bigint,\n voterCount: bigint\n }> {\n const result = await this.publicClient.readContract(Parameters.getProposalPartnerAndVoterCounts(this.governanceAddr, proposalId));\n return {\n partnerCount: result[0],\n voterCount: result[1]\n };\n }\n\n /**\n * Get multi-proposasl info of proposer\n * @param {Address} proposerAddr - Proposer address\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const proposerAddr = '0x456...';\n * const indexRange = {start:0, end: 1};\n * const ret = await sdk.getProposerProposals(proposerAddr, indexRange);\n * console.log(ret);\n */\n async getProposerProposals(proposerAddr: Address, indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; i++) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let multiProposalData = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n const results: ProposalInfo[] = multiProposalData.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}));\n return results;\n }\n\n /**\n * Get multi-proposasl info of partner\n * @param {Address} partnerAddr - Partner address\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const partnerAddr = '0x456...';\n * const indexRange = {start:0, end: 1};\n * const ret = await sdk.getPartnerProposals(partnerAddr, indexRange);\n * console.log(ret);\n */\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 < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length * 2);\n for (let i = 0; i < proposalIds.length; ++i) {\n const index = i * 2;\n const proposalId = proposalIds[i]!;\n contracts[index] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n contracts[index + 1] = Parameters.getProposalPartnerInfo(this.governanceAddr, proposalId, 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 let contractProposal = results[index] as ContractProposal;\n let partnerInfo = results[index + 1] as PartnerInfo;\n\n const proposalId = proposalIds[i]!;\n const proposalInfo: ProposalInfo = {proposalId: proposalId, ...contractProposal};\n\n partnerProposals[i] = {\n proposalInfo: proposalInfo,\n partnerInfo: partnerInfo,\n \n }\n }\n return partnerProposals;\n }\n\n /**\n * Get multi-proposasl info of voter\n * @param {Address} voterAddr - Voter address\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const voterAddr = '0x456...';\n * const indexRange = {start:0, end: 1};\n * const ret = await sdk.getPartnerProposals(voterAddr, indexRange);\n * console.log(ret);\n */\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 < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length * 2);\n for (let i = 0; i < proposalIds.length; ++i) {\n const index = i * 2;\n const proposalId = proposalIds[i]!;\n contracts[index] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n contracts[index + 1] = Parameters.getProposalVoterInfo(this.governanceAddr, proposalId, 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 const index = i * 2;\n let contractProposal = results[index] as ContractProposal;\n let voterInfo = results[index + 1] as VoterInfo;\n\n const proposalId = proposalIds[i]!;\n const proposalInfo: ProposalInfo = {proposalId, ...contractProposal};\n\n voterProposals[i] = {\n proposalInfo: proposalInfo,\n voterInfo: voterInfo,\n \n }\n }\n return voterProposals;\n }\n\n /**\n * Get multi-info of partner\n * @param {Address} partnerAddr - Partner address\n * @param {Hex[]} proposalIds - IDs of proposal\n * @returns {Promise<PartnerInfo[]>} - Multi-info of partner\n * @example\n * const partnerAddr = '0x456...';\n * const proposalIds = ['0x1...','[0x2...]];\n * const ret = await sdk.getPartnerInfo(partnerAddr, proposalIds);\n * console.log(ret);\n */\n async getPartnerInfo(partnerAddr: Address, proposalIds: Hex[]): Promise<PartnerInfo[]> {\n let contracts: ContractFunctionParameters[] = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalPartnerInfo(this.governanceAddr, proposalId, partnerAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as PartnerInfo[];\n\n return results;\n }\n\n /**\n * Get multi-info of voter\n * @param {Address} voterAddr - Voter address\n * @param {Hex[]} proposalIds - IDs of proposal\n * @returns {Promise<PartnerInfo[]>} - Multi-info of voter\n * @example\n * const voterAddr = '0x456...';\n * const proposalIds = ['0x1...','[0x2...]];\n * const ret = await sdk.getVoterInfo(voterAddr, proposalIds);\n * console.log(ret);\n */\n async getVoterInfo(voterAddr: Address, proposalIds: Hex[]): Promise<VoterInfo[]> {\n let contracts: ContractFunctionParameters[] = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalVoterInfo(this.governanceAddr, proposalId, voterAddr);\n }\n\n let results = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as VoterInfo[];\n\n return results;\n }\n\n /**\n * Get review pending proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getReviewPendingProposals(indexRange);\n * console.log(ret);\n */\n async getReviewPendingProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n\n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get prospective proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getProspectiveProposals(indexRange);\n * console.log(ret);\n */\n async getProspectiveProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n \n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get active(voting) proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getVotingProposals(indexRange);\n * console.log(ret);\n */\n async getVotingProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n\n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get succeed proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getSucceedProposals(indexRange);\n * console.log(ret);\n */\n async getSucceedProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n\n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get failed proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getFailedProposals(indexRange);\n * console.log(ret);\n */\n async getFailedProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\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 }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n\n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get canceled proposals\n * @param {IndexRange} indexRange - Range of index\n * @returns {Promise<ProposalInfo[]>} - Multi-info of proposal\n * @example\n * const indexRange = {start:0, end: 5};\n * const ret = await sdk.getCanceledProposals(indexRange);\n * console.log(ret);\n */\n async getCanceledProposals(indexRange: IndexRange): Promise<ProposalInfo[]> {\n if (indexRange.end < indexRange.start || indexRange.start < 0) {\n throw new Error('Invalid indexRange');\n }\n\n let contracts: ContractFunctionParameters[] = new Array(indexRange.end - indexRange.start + 1);\n for (let i = indexRange.start; i <= indexRange.end; ++i) {\n contracts[i - indexRange.start] = Parameters.getProposalIdByStateAt(this.governanceAddr, ProposalState.Canceled, i);\n }\n const proposalIds = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false\n }) as Hex[];\n contracts = new Array(proposalIds.length);\n for (let i = 0; i < proposalIds.length; ++i) {\n const proposalId = proposalIds[i]!;\n contracts[i] = Parameters.getProposalInfo(this.governanceAddr, proposalId);\n }\n let contractProposals = await this.publicClient.multicall({\n contracts: contracts,\n allowFailure: false,\n }) as ContractProposal[];\n\n let results: ProposalInfo[] = contractProposals.map((proposal, i) => ({proposalId: proposalIds[i]!, ...proposal}))\n return results;\n }\n\n /**\n * Get specified proposal info\n * @param {Hex} proposalId - ID of proposal\n * @returns {Promise<ProposalInfo>} - Proposal info\n * @example\n * const proposalId = '0x12...';\n * const ret = await sdk.getProposalInfo(proposalId);\n * console.log(ret);\n */\n async getProposalInfo(proposalId: Hex): Promise<ProposalInfo> {\n let contractProposal = await this.publicClient.readContract(Parameters.getProposalInfo(this.governanceAddr, proposalId)) as ContractProposal;\n let result: ProposalInfo = {proposalId, ...contractProposal};\n return result;\n }\n\n /**\n * Check whether need or can request proposal withdrawal\n * @param {bigint} timestamp - Timestamp of latest block\n * @param {CanRequestProposalWithdrawalParam[]} params - Parameters\n * @returns {Promise<CanRequestProposalWithdrawalRetrunItem[]>} - Array of {needRequestWithdrawal, canRequestWithdrawal}\n * @example\n * var proposalId = '0x12...';\n * var proposalInfo = await sdk.getProposalInfo(proposalId);\n * var latestBlock = await sdk.publicClient.getBlock();\n * var [{needRequestWithdrawal, canRequestWithdrawal}] = sdk.canRequestProposalWithdrawal(latestBlock.timestamp, [\n {\n state: proposalInfo.state,\n pledgeType: proposalInfo.proposerFundInfo.pledgeType,\n lockDuration: proposalInfo.proposerFundInfo.lockDuration,\n voteDeadline: proposalInfo.voteDeadline,\n requestId: proposalInfo.proposerFundInfo.requestId,\n exited: proposalInfo.proposerFundInfo.exited,\n }\n ]);\n */\n canRequestProposalWithdrawal(timestamp: bigint, params: CanRequestProposalWithdrawalParam[]): CanRequestProposalWithdrawalRetrunItem[] {\n if (params.length == 0) {\n return [];\n }\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 == BigInt(0) || params[i]!.requestId > BigInt(0))) {\n needRequestWithdrawal = false;\n }\n if (params[i]!.state == ProposalState.Succeeded && params[i]!.lockDuration > 0 && timestamp > params[i]!.voteDeadline + params[i]!.lockDuration && params[i]!.requestId == BigInt(0) && !params[i]!.exited) {\n canRequestWithdrawal = true;\n }\n results[i] = {needRequestWithdrawal, canRequestWithdrawal};\n }\n return results;\n }\n\n /**\n * Check whether can claim proposal withdrawal or not\n * @param {Address} stakingManagerAddr - Address of stakingManager\n * @param {bigint} timestamp - Timestamp of latest block\n * @param {CanClaimProposalWithdrawalParam[]} params - Parameters\n * @returns {Promise<boolean[]>} - Array of boolean\n * @example\n * var stakingManagerAddr = '0x34...';\n * var proposalId = '0x12...';\n * var proposalInfo = await sdk.getProposalInfo(proposalId);\n * var latestBlock = await sdk.publicClient.getBlock();\n * var ret = sdk.canClaimProposalWithdrawal(stakingManagerAddr, latestBlock.timestamp, [\n {\n state: proposalInfo.state,\n pledgeType: proposalInfo.proposerFundInfo.pledgeType,\n lockDuration: proposalInfo.proposerFundInfo.lockDuration,\n voteDeadline: proposalInfo.voteDeadline,\n requestId: proposalInfo.proposerFundInfo.requestId,\n exited: proposalInfo.proposerFundInfo.exited,\n }\n ]);\n * console.log(ret);\n */\n async canClaimProposalWithdrawal(stakingManagerAddr: Address, timestamp: bigint, params: CanClaimProposalWithdrawalParam[]): Promise<boolean[]> {\n if (params.length == 0) {\n return [];\n }\n\n let contractCount = 0;\n let indexMap: Record<number, number> = {};\n let results = new Array(params.length);\n let contracts: ContractFunctionParameters[] = 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 == BigInt(0) && !params[i]!.exited) {\n results[i] = true;\n continue;\n }\n\n if (params[i]!.state == ProposalState.Succeeded && params[i]!.lockDuration > 0 && timestamp > params[i]!.voteDeadline + params[i]!.lockDuration && params[i]!.requestId > BigInt(0) && !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 /**\n * Get unstake status after request proposal withdrawal\n * @param {Address} stakingManagerAddr - Address of stakingManager\n * @param {bigint} requestId - ID of proposal request withdrawal to be queried for proposer, partner or voter.\n * @returns {Promise<UnstakeStatus>} - Status of unstake\n * @example\n * var stakingManagerAddr = '0x34...';\n * var proposalId = '0x12...';\n * var proposalInfo = await sdk.getProposalInfo(proposalId);\n * var ret = sdk.getUnstakeStatus(stakingManagerAddr, proposalInfo.proposerFundInfo.requestId);\n * console.log(ret);\n */\n async getUnstakeStatus(stakingManagerAddr: Address, requestId: bigint): Promise<UnstakeStatus> {\n return await this.publicClient.readContract(Parameters.getUnstakeStatus(stakingManagerAddr, requestId));\n }\n\n /**\n * Build transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {ContractFunctionName} functionName - Function name\n * @param {ContractFunctionArgs} args - Parameters\n * @param {bigint} value - Amount of WAN\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const functionName = 'cancelProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n * const args = [proposalId, reason] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n * const ret = await sdk.buildTx(account, functionName, args, BigInt(0));\n * console.log(ret);\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 = BigInt(0)\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n await this.publicClient.simulateContract({\n address: this.governanceAddr,\n abi: this.governanceAbi,\n functionName,\n args: args as ContractFunctionArgs,\n account,\n value,\n });\n\n return await this.publicClient.prepareTransactionRequest({\n account,\n to: this.governanceAddr,\n data: encodeFunctionData({\n abi: this.governanceAbi,\n functionName,\n args: args as ContractFunctionArgs,\n } as EncodeFunctionDataParameters),\n value,\n } as PrepareTransactionRequestParameters);\n }\n\n /**\n * Build createProposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {bigint} pledgeWanAmount - Amount of WAN that proposer pledged\n * @param {bigint} requestWanAmount - Amount of WAN that proposer request.\n * @param {ProposalCategory} category - Category of proposal\n * @param {PledgeType} pledgeType - Pledge type\n * @param {Hex} description - Description of proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const pledgeWanAmount = parseEther(\"1\");\n * const requestWanAmount = parseEther(\"100\");\n * const category = ProposalCategory.Funding;\n * const pledgeType = PledgeType.Lock;\n * const ret = await sdk.buildCreateProposalTx(walletClient.account!, pledgeWanAmount, requestWanAmount, category, pledgeType, description);\n * console.log(ret);\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 const functionName = 'createProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [requestWanAmount, category, pledgeType, description] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, pledgeWanAmount);\n }\n\n /**\n * Build cancelProposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {Hex} reason - Cancel reason.\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const reason = toHex('cancel');\n * const ret = await sdk.buildCancelProposalTx(walletClient.account!, proposalId, reason);\n * console.log(ret);\n */\n async buildCancelProposalTx(account: Address | Account, proposalId: Hex, reason: Hex): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'cancelProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, reason] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"cancelProposal\" as const, [proposalId, reason]);\n }\n\n /**\n * Build reviewPoposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {boolean} isApproved - For or against.\n * @param {Hex} reason - Cancel reason.\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const isApproved = true;\n * const reason = toHex('greate');\n * const ret = await sdk.buildReviewProposalTx(walletClient.account!, proposalId, isApproved, reason);\n * console.log(ret);\n */\n async buildReviewProposalTx(\n account: Address | Account,\n proposalId: Hex,\n isApproved: boolean,\n reason: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'reviewProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, isApproved, reason] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"reviewProposal\" as const, [proposalId, isApproved, reason]);\n }\n\n /**\n * Build contributePoposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {bigint} pledgeWanAmount - Amount of WAN that partner pledged\n * @param {PledgeType} pledgeType - Pledge type\n * @param {Hex} reason - Reason.\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const pledgeWanAmount = parseEther(\"1\");\n * const pledgeType = PledgeType.Lock;\n * const reason = toHex('support');\n * const ret = await sdk.buildContributeProposalTx(walletClient.account!, proposalId, pledgeWanAmount, pledgeType, toHex(reason));\n * console.log(ret);\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 const functionName = 'contributeProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, pledgeType, reason] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, pledgeWanAmount);\n // return await this.buildTx(account, \"contributeProposal\" as const, [proposalId, pledgeType, reason], pledgeWanAmount);\n }\n\n /**\n * Build votePoposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {bigint} pledgeWanAmount - Amount of WAN that partner pledged\n * @param {bigint} lockDuration - Lock duration of proposal for voter\n * @param {PledgeType} pledgeType - Pledge type\n * @param {VoteType} voteType - Vote type\n * @param {Hex} reason - Reason.\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const pledgeWanAmount = parseEther(\"1\");\n * const lockDuration = 8...;\n * const pledgeType = PledgeType.Lock;\n * const voteType = VoteType.For;\n * const reason = toHex('support');\n * const ret = await sdk.buildVoteProposalTx(walletClient.account!, proposalId, pledgeWanAmount, lockDuration, pledgeType, voteType, toHex(reason));\n * console.log(ret);\n */\n async buildVoteProposalTx(\n account: Address | Account,\n proposalId: Hex,\n pledgeWanAmount: bigint,\n lockDuration: bigint,\n pledgeType: PledgeType,\n voteType: VoteType,\n reason: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'voteProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, lockDuration, pledgeType, voteType, reason] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, pledgeWanAmount);\n // return await this.buildTx(account, \"voteProposal\" as const, [proposalId, lockDuration, pledgeType, voteType, reason], pledgeWanAmount);\n }\n\n /**\n * Build tallyPoposal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const ret = await sdk.buildTallyProposalTx(walletClient.account!, proposalId);\n * console.log(ret);\n */\n async buildTallyProposalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'tallyProposal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"tallyProposal\" as const, [proposalId], BigInt(0));\n }\n\n /**\n * Build requestProposerWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const ret = await sdk.buildRequestProposerWithdrawalTx(walletClient.account!, proposalId);\n * console.log(ret);\n */\n async buildRequestProposerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'requestProposerWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"requestProposerWithdrawal\" as const, [proposalId], BigInt(0));\n }\n\n /**\n * Build claimProposerWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {bigint} requestId - ID of proposal request withdrawal to be queried\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const requestId = 34...n;\n * const ret = await sdk.buildClaimProposerWithdrawalTx(walletClient.account!, proposalId, requestId);\n * console.log(ret);\n */\n async buildClaimProposerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'claimProposerWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, requestId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"claimProposerWithdrawal\" as const, [proposalId, requestId], BigInt(0));\n }\n\n /**\n * Build requestPartnerWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const ret = await sdk.buildRequestPartnerWithdrawalTx(walletClient.account!, proposalId);\n * console.log(ret);\n */\n async buildRequestPartnerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'requestPartnerWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"requestPartnerWithdrawal\" as const, [proposalId], BigInt(0));\n }\n\n /**\n * Build claimPartnerWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {bigint} requestId - ID of proposal request withdrawal to be queried\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const requestId = 34...n;\n * const ret = await sdk.buildClaimPartnerWithdrawalTx(walletClient.account!, proposalId, requestId);\n * console.log(ret);\n */\n async buildClaimPartnerWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'claimPartnerWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, requestId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"claimPartnerWithdrawal\" as const, [proposalId, requestId], BigInt(0));\n }\n\n /**\n * Build requestVoterWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const ret = await sdk.buildRequestVoterWithdrawalTx(walletClient.account!, proposalId);\n * console.log(ret);\n */\n async buildRequestVoterWithdrawalTx(\n account: Address | Account,\n proposalId: Hex\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'requestVoterWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"requestVoterWithdrawal\" as const, [proposalId], BigInt(0));\n }\n\n /**\n * Build claimVoterWithdrawal transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {Hex} proposalId - ID of proposal\n * @param {bigint} requestId - ID of proposal request withdrawal to be queried\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const proposalId = '0x12...';\n * const requestId = 34...n;\n * const ret = await sdk.buildClaimVoterWithdrawalTx(walletClient.account!, proposalId, requestId);\n * console.log(ret);\n */\n async buildClaimVoterWithdrawalTx(\n account: Address | Account,\n proposalId: Hex,\n requestId: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'claimVoterWithdrawal' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [proposalId, requestId] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"claimVoterWithdrawal\" as const, [proposalId, requestId], BigInt(0));\n }\n\n /**\n * Build updateFundraisingDuration transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {bigint} fundraisingDuration - Fundraising duration\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const fundraisingDuration = 34...n;\n * const ret = await sdk.buildUpdateFundraisingDurationTx(walletClient.account!, fundraisingDuration);\n * console.log(ret);\n */\n async buildUpdateFundraisingDurationTx(\n account: Address | Account,\n fundraisingDuration: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'updateFundraisingDuration' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [fundraisingDuration] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"updateFundraisingDuration\" as const, [fundraisingDuration], BigInt(0));\n }\n\n /**\n * Build updateMinParticipationAmount transaction\n * @param {Account | Address} account - Account | Address of sender\n * @param {bigint} amount - Minimum amount of WANs a participant can participate in proposal\n * @returns {Promise<PrepareTransactionRequestReturnType>} - Transaction\n * @example\n * const walletClient = createWalletClient({ account: privateKeyToAccount(`0x${process.env.PK}`), chain: sdk.publicClient.chain, transport: http() });\n * const amount = 34...n;\n * const ret = await sdk.buildUpdateMinParticipationAmountTx(walletClient.account!, amount);\n * console.log(ret);\n */\n async buildUpdateMinParticipationAmountTx(\n account: Address | Account,\n amount: bigint\n ): Promise<\n PrepareTransactionRequestReturnType\n > {\n const functionName = 'updateMinParticipationAmount' as ContractFunctionName<TAbi, 'nonpayable' | 'payable'>;\n const args = [amount] as ContractFunctionArgs<TAbi, 'nonpayable' | 'payable'>;\n return await this.buildTx(account, functionName, args, BigInt(0));\n // return await this.buildTx(account, \"updateMinParticipationAmount\" as const, [amount], BigInt(0));\n }\n\n}"],"mappings":"qKAuCA,MAAa,EAA8F,CACzG,EAAG,CACD,MAAO,CACL,CAAE,KAAM,QAAS,CACjB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CACnB,CACD,MAAO,CAAC,UAAW,QAAS,cAAe,QAAS,WAAW,CAChE,CACD,EAAG,CACD,MAAO,CACL,CAAE,KAAM,QAAS,CACjB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CACnB,CACD,MAAO,CAAC,UAAW,QAAS,cAAe,QAAS,WAAY,UAAU,CAC3E,CACD,EAAG,CACD,MAAO,CACL,CAAE,KAAM,QAAS,CACjB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CAClB,CAAE,KAAM,SAAU,CACnB,CACD,MAAO,CAAC,UAAW,QAAS,cAAe,QAAS,WAAY,UAAW,UAAU,CACtF,CACF,CAQD,SAAS,EAAe,EAA0C,CAChE,OAAO,IAAY,GAAK,IAAY,GAAK,IAAY,EASvD,SAAS,EAAmB,EAAiC,CAC3D,OAAO,OAAO,GAAU,UAAY,EAAM,MAAM,GAAK,GAgBvD,SAAgB,EAA8B,GAAG,EAAgC,CAC/E,IAAM,EAAU,EAAK,GAErB,GAAI,CAAC,EAAe,EAAQ,CACxB,MAAU,MAAM,4DAA4D,CAGhF,IAAM,EAAa,EAA2C,GAE9D,GAAI,EAAK,SAAW,EAAW,MAAM,OACjC,MAAU,MAAM,2CAA2C,EAAQ,cAAc,EAAW,MAAM,OAAO,QAAQ,EAAK,SAAS,CAInI,OADgB,EAAoB,EAAW,MAAO,EAAK,CAe7D,SAAgB,EAA8B,EAAuC,CACnF,IAAM,EAAU,EAAmB,EAAQ,CAG3C,GAAI,CAAC,EAAe,EAAQ,CACxB,MAAU,MAAM,uBAAuB,EAAQ,wCAAwC,CAG3F,IAAM,EAAa,EAA2C,GACxD,EAAU,EAAoB,EAAW,MAAO,EAAQ,CAG9D,GAAI,EAAQ,SAAW,EAAW,MAAM,OACtC,MAAU,MAAM,yCAAyC,EAAQ,OAAO,2BAA2B,EAAW,MAAM,OAAO,GAAG,CAGhI,QAAQ,IAAI,WAAY,EAAQ,CAGhC,IAAM,EAAkC,EAAE,CAC1C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,MAAM,OAAQ,IAAK,CAEhD,IAAM,EAAY,EAAW,MAAM,GAC7B,EAAa,EAAQ,GAGtB,EAAmB,EAAU,EAK9B,IAAe,IAAA,KAAc,OAAO,GAAe,UAAY,OAAO,GAAe,YACvF,EAAO,GAAa,GAIxB,OAAO,EAaT,SAAgB,EAAmB,EAAgC,CACjE,GAAI,CAAC,GAAW,OAAO,GAAY,UAAY,EAAQ,OAAS,GAAI,MAAO,GAE3E,IAAM,EAAS,EAAQ,WAAW,KAAK,CAAG,EAAI,EACxC,EAAc,EAAQ,UAAU,EAAQ,EAAS,GAAG,CAEpD,EAAU,SAAS,EAAa,GAAG,CACzC,OAAO,EAAe,EAAQ,CAAG,EAAU,ECzL7C,IAAY,EAAA,SAAA,EAAL,OACH,GAAA,EAAA,UAAA,GAAA,YACA,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,WAAA,GAAA,aACA,EAAA,EAAA,aAAA,GAAA,sBAMQ,EAAA,SAAA,EAAL,OACH,GAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,eAMQ,GAAA,SAAA,EAAL,OACH,GAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,KAAA,GAAA,cAMQ,EAAA,SAAA,EAAL,OACH,GAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,QAAA,GAAA,iBAMQ,EAAA,SAAA,EAAL,OACH,GAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,YAAA,GAAA,cACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,YAAA,GAAA,cACA,EAAA,EAAA,iBAAA,GAAA,mBACA,EAAA,EAAA,UAAA,GAAA,YACA,EAAA,EAAA,SAAA,GAAA,kBAMQ,EAAA,SAAA,EAAL,OACH,GAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,UAAA,GAAA,mBC3DJ,MAAa,EAAM,CACf,CACI,KAAQ,cACR,OAAU,EAAE,CACZ,gBAAmB,aACtB,CACD,CACI,KAAQ,UACR,gBAAmB,UACtB,CACD,CACI,KAAQ,WACR,KAAQ,OACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,cACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,6BACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,UACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,UACtB,CACD,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,QACR,aAAgB,qCACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,UACtB,CACD,CACI,KAAQ,WACR,KAAQ,sBACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,YACR,aAAgB,YACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,iCACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,kCACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,gBACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,QACR,aAAgB,qCACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,wBACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,iCACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,kCACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,kBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,OACR,KAAQ,QACR,aAAgB,mCAChB,WAAc,CACV,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,2BACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,4BAChB,WAAc,CACV,CACI,KAAQ,MACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,KACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,mBACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACD,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,qCACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,QACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,OACR,KAAQ,QACR,aAAgB,mCAChB,WAAc,CACV,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,2BACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,4BAChB,WAAc,CACV,CACI,KAAQ,MACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,KACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,mBACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACD,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,qCACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,QACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,8BACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,6BACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,2BACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,mCACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,kCAChB,WAAc,CACV,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,kCAChB,WAAc,CACV,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,YACR,KAAQ,QACR,aAAgB,gCAChB,WAAc,CACV,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACD,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,6BACnB,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,QACR,aAAgB,gCAChB,WAAc,CACV,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACV,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,SACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACJ,CACD,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,6BACnB,CACJ,CACJ,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,6BACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,YACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,aACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,wBACR,KAAQ,QACR,aAAgB,2CAChB,WAAc,CACV,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,qBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,KACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,qBACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,wBACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACnB,CACD,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,qCACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,uBACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,qBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,KACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,qBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,oBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,OACR,aAAgB,OACnB,CACD,CACI,KAAQ,UACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,aACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,2CAChB,WAAc,CACV,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,qBACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACJ,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,yCAChB,WAAc,CACV,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACJ,CACJ,CACD,CACI,KAAQ,UACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,yCAChB,WAAc,CACV,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACJ,CACJ,CACD,CACI,KAAQ,UACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,SACR,aAAgB,SACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,OACR,aAAgB,OACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,gBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,8BACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,6BACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACD,CACI,KAAQ,WACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,+BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,6BACR,OAAU,CACN,CACI,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,aACtB,CACD,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,iBACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,YACR,KAAQ,QACR,aAAgB,6BACnB,CACD,CACI,KAAQ,UACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,QAAW,EAAE,CACb,gBAAmB,UACtB,CACD,CACI,KAAQ,QACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,OACR,KAAQ,WACR,QAAW,GACX,aAAgB,WACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,QAAW,GACX,aAAgB,kCACnB,CACD,CACI,KAAQ,OACR,KAAQ,WACR,QAAW,GACX,aAAgB,WACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,QAAW,GACX,aAAgB,kCACnB,CACD,CACI,KAAQ,OACR,KAAQ,WACR,QAAW,GACX,aAAgB,WACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,SACR,QAAW,GACX,aAAgB,SACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,OACR,QAAW,GACX,aAAgB,OACnB,CACD,CACI,KAAQ,QACR,KAAQ,QACR,QAAW,GACX,aAAgB,kCACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,QAAW,GACX,aAAgB,QACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,oBACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,gBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,qBACR,KAAQ,OACR,QAAW,GACX,aAAgB,OACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,QACR,QAAW,GACX,aAAgB,QACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,OACR,QAAW,GACX,aAAgB,OACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,QAAW,GACX,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,QACR,QAAW,GACX,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,gBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,cACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,WACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,WACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,+BACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,eACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,6BACR,OAAU,CACN,CACI,KAAQ,uBACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,WACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,QACR,QAAW,GACX,aAAgB,6BACnB,CACD,CACI,KAAQ,OACR,KAAQ,WACR,QAAW,GACX,aAAgB,WACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,QAAW,GACX,aAAgB,UACnB,CACJ,CACD,UAAa,GAChB,CACD,CACI,KAAQ,QACR,KAAQ,+BACR,OAAU,EAAE,CACf,CACD,CACI,KAAQ,QACR,KAAQ,mCACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,KACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,wBACR,OAAU,EAAE,CACf,CACD,CACI,KAAQ,QACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,kBACR,OAAU,CACN,CACI,KAAQ,WACR,KAAQ,QACR,aAAgB,6BACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,WACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,kBACR,OAAU,EAAE,CACf,CACD,CACI,KAAQ,QACR,KAAQ,sBACR,OAAU,EAAE,CACf,CACD,CACI,KAAQ,QACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,6BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACnB,CACD,CACI,KAAQ,eACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,uBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,sBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,+BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,8BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,sBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,wBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,8BACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,+BACR,OAAU,EAAE,CACf,CACD,CACI,KAAQ,QACR,KAAQ,gCACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,iCACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,QACR,aAAgB,QACnB,CACD,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,UACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACJ,CACD,CACI,KAAQ,QACR,KAAQ,cACR,OAAU,EAAE,CACf,CACJ,CCxgGKA,EAAM,CACV,CACE,KAAM,WACN,KAAM,gBACN,OAAQ,CAAC,CAAE,KAAQ,OAAQ,KAAQ,UAAW,aAAgB,UAAW,CAAC,CAC1E,QAAS,CAAC,CAAE,KAAM,UAAW,KAAM,UAAW,aAAc,UAAW,CAAC,CACxE,gBAAiB,OAClB,CACF,CAGD,SAAgB,EAAc,EAAyB,EAAgB,CAQrE,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,gBACd,KAAM,CAAE,EAAO,CAChB,CCjBH,MAAMC,EAAM,CACV,CACE,KAAM,YACN,KAAM,WACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,UAAW,CAAC,CAC5C,QAAS,CAAC,CAAE,KAAM,UAAW,KAAM,UAAW,CAAC,CAC/C,gBAAiB,OAClB,CACF,CAGD,SAAgB,GAAgB,EAAoB,EAAgB,CAQlE,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,YACd,KAAM,CAAE,EAAO,CAChB,CCjBH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,OACR,OAAU,EAAE,CACZ,QAAW,CACT,CACE,KAAQ,GACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAK,EAAyB,CAO5C,MANa,CACX,QAAS,EACT,IAAA,EACA,aAAc,OACf,CCtBH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,iBACR,OAAU,EAAE,CACZ,QAAW,CACT,CACE,KAAQ,GACR,KAAQ,YACR,aAAgB,YACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,GAAe,EAAyB,CAOtD,MANa,CACX,QAAS,EACT,IAAA,EACA,aAAc,iBACf,CCrBH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,wBACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACjB,CACD,CACE,KAAQ,WACR,KAAQ,QACR,aAAgB,qCACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,QACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAsB,EAAyB,EAAsB,EAA4B,CAQ/G,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,wBACd,KAAM,CAAC,EAAO,EAAS,CACxB,CClCH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,gBACR,OAAU,CACR,CACE,KAAQ,gBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,YACR,KAAQ,QACR,aAAgB,qCACjB,CACD,CACE,KAAQ,cACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,eACR,KAAQ,QACR,aAAgB,QACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,aACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAc,EAAyB,EAAsB,EAAmB,EAA4B,EAAwB,EAAkB,CAQpK,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,gBACd,KAAM,CAAE,EAAc,EAAU,EAAU,EAAY,EAAa,CACpE,CClDH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,kBACR,OAAU,CACR,CACE,KAAQ,cACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,OACR,KAAQ,QACR,aAAgB,mCAChB,WAAc,CACZ,CACE,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,2BACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,wBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,QACR,KAAQ,QACR,aAAgB,4BAChB,WAAc,CACZ,CACE,KAAQ,MACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,KACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACF,CACD,CACE,KAAQ,mBACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACZ,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,SACR,KAAQ,OACR,aAAgB,OACjB,CACD,CACE,KAAQ,SACR,KAAQ,QACR,aAAgB,QACjB,CACF,CACF,CACD,CACE,KAAQ,WACR,KAAQ,QACR,aAAgB,qCACjB,CACD,CACE,KAAQ,QACR,KAAQ,QACR,aAAgB,kCACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,cACR,KAAQ,QACR,aAAgB,QACjB,CACD,CACE,KAAQ,SACR,KAAQ,QACR,aAAgB,QACjB,CACF,CACF,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAgB,EAAyB,EAAiB,CAQxE,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,kBACd,KAAM,CAAE,EAAY,CACrB,CCvMH,MAAMC,EAAM,CACR,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,QACR,aAAgB,kCACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,GACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACJ,CAGD,SAAgB,EAAuB,EAAyB,EAAsB,EAAe,CAQjG,MAPa,CACT,QAAS,EACT,IAAA,EACA,aAAc,yBACd,KAAM,CAAE,EAAO,EAAO,CACzB,CClCL,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,0BACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,QACR,aAAgB,kCACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,QACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAwB,EAAyB,EAAsB,CAQrF,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,0BACd,KAAM,CAAE,EAAO,CAChB,CC7BH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,yBACR,OAAU,CACR,CACE,KAAQ,QACR,KAAQ,QACR,aAAgB,iCACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,QACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAuB,EAAyB,EAAoB,EAAkB,CAQpG,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,yBACd,KAAM,CAAE,EAAM,EAAS,CACxB,CCnCH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,mCACR,OAAU,CACR,CACE,KAAQ,cACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAiC,EAAyB,EAAiB,CAQzF,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,mCACd,KAAM,CAAE,EAAY,CACrB,CClCH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,yBACR,OAAU,CACR,CACE,KAAQ,cACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,cACR,KAAQ,QACR,aAAgB,kCAChB,WAAc,CACZ,CACE,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACZ,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,SACR,KAAQ,OACR,aAAgB,OACjB,CACD,CACE,KAAQ,SACR,KAAQ,QACR,aAAgB,QACjB,CACF,CACF,CACF,CACF,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAuB,EAAyB,EAAiB,EAAsB,CAQrG,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,yBACd,KAAM,CAAE,EAAY,EAAa,CAClC,CCvFH,MAAMC,EAAM,CACR,CACI,KAAQ,WACR,KAAQ,wBACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,QACR,aAAgB,iCACnB,CACD,CACI,KAAQ,WACR,KAAQ,UACR,aAAgB,UACnB,CACD,CACI,KAAQ,SACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,aACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACJ,CAGD,SAAgB,EAAsB,EAAyB,EAAoB,EAAkB,EAAe,CAQhH,MAPa,CACT,QAAS,EACT,IAAA,EACA,aAAc,wBACd,KAAM,CAAC,EAAM,EAAS,EAAM,CAC/B,CCxCL,MAAMC,EAAM,CACR,CACI,KAAQ,WACR,KAAQ,sBACR,OAAU,EAAE,CACZ,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,gBAAmB,OACtB,CACJ,CAGD,SAAgB,EAAoB,EAAyB,CAQzD,MAPa,CACT,QAAS,EACT,IAAA,EACA,aAAc,sBACd,KAAM,EAAE,CACX,CCvBL,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,0BACR,OAAU,EAAE,CACZ,QAAW,CACT,CACE,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,8BACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,6BACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAwB,EAAyB,CAO/D,MANa,CACX,QAAS,EACT,IAAA,EACA,aAAc,0BACf,CChCH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,uBACR,OAAU,EAAE,CACZ,QAAW,CACT,CACE,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,yBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,uBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,kBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,qBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,sBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,KACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,cACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAqB,EAAyB,CAO5D,MANa,CACX,QAAS,EACT,IAAA,EACA,aAAc,uBACf,CCxEH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,uBACR,OAAU,CACR,CACE,KAAQ,cACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,SACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,YACR,KAAQ,QACR,aAAgB,gCAChB,WAAc,CACZ,CACE,KAAQ,WACR,KAAQ,QACR,aAAgB,+BAChB,WAAc,CACZ,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,WACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,YACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,mBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,iBACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,SACR,KAAQ,OACR,aAAgB,OACjB,CACD,CACE,KAAQ,SACR,KAAQ,QACR,aAAgB,QACjB,CACF,CACF,CACD,CACE,KAAQ,WACR,KAAQ,QACR,aAAgB,6BACjB,CACF,CACF,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAAqB,EAAyB,EAAiB,EAAoB,CAQjG,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,uBACd,KAAM,CAAC,EAAY,EAAU,CAC9B,CC7FH,MAAMC,EAAM,CACV,CACE,KAAQ,WACR,KAAQ,8BACR,OAAU,EAAE,CACZ,QAAW,CACT,CACE,KAAQ,6BACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,2BACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAA4B,EAAyB,CAQnE,MAPa,CACX,QAAS,EACT,IAAA,EACA,aAAc,8BACd,KAAM,EAAE,CACT,CC5BH,MAAMC,GAAM,CACV,CACE,KAAQ,WACR,KAAQ,6BACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,EAA2B,EAAyB,EAA2C,CAQ7G,MAPa,CACX,QAAS,EACT,IAAA,GACA,aAAc,6BACd,KAAM,CAAE,EAAO,CAChB,CCvCH,MAAMC,GAAM,CACV,CACE,KAAQ,WACR,KAAQ,2BACR,OAAU,CACR,CACE,KAAQ,SACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,QAAW,CACT,CACE,KAAQ,aACR,KAAQ,QACR,aAAgB,+BACjB,CACD,CACE,KAAQ,eACR,KAAQ,UACR,aAAgB,UACjB,CACD,CACE,KAAQ,aACR,KAAQ,UACR,aAAgB,UACjB,CACF,CACD,gBAAmB,OACpB,CACF,CAGD,SAAgB,GAAyB,EAAyB,EAA2C,CAQ3G,MAPa,CACX,QAAS,EACT,IAAA,GACA,aAAc,2BACd,KAAM,CAAE,EAAO,CAChB,CCvCH,MAAM,GAAM,CACR,CACI,KAAQ,WACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,UACR,aAAgB,UACnB,CACJ,CACD,QAAW,CACP,CACI,KAAQ,gBACR,KAAQ,QACR,aAAgB,QACnB,CACJ,CACD,gBAAmB,OACtB,CACJ,CAGD,SAAgB,EAAiB,EAA6B,EAAmB,CAQ7E,MAPa,CACT,QAAS,EACT,OACA,aAAc,mBACd,KAAM,CAAE,EAAW,CACtB,CCuBL,IAAa,GAAb,KAAkE,CAKhE,YAAY,EAAyB,EAAe,EAAU,EAAiB,MAF/D,cAAqBC,EAInC,KAAK,aAAe,EAAmB,CACrC,QACA,UAAW,EAAS,EAAK,EAAO,CAAG,GAAM,CAC1C,CAAC,CACF,KAAK,eAAiB,EAUxB,MAAM,mBAAuD,CAC3D,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTC,EAAmC,KAAK,eAAe,CACvDC,EAAgC,KAAK,eAAe,CACpDC,EAAgB,KAAK,eAAe,CACpCC,EAA+B,KAAK,eAAe,CACnDC,EAAmC,KAAK,eAAgB,EAAc,YAAY,CAClFA,EAAmC,KAAK,eAAgB,EAAc,YAAY,CAClFA,EAAmC,KAAK,eAAgB,EAAc,iBAAiB,CACvFA,EAAmC,KAAK,eAAgB,EAAc,UAAU,CAChFA,EAAmC,KAAK,eAAgB,EAAc,SAAS,CAC/EA,EAAmC,KAAK,eAAgB,EAAc,SAAS,CAC/EC,EAAuC,KAAK,eAAe,CAC5D,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,qBAAsB,EAAQ,GAAG,GACjC,4BAA6B,EAAQ,GAAG,GACxC,2BAA4B,EAAQ,GAAG,GAEvC,oBAAqB,EAAQ,GAAG,GAChC,uBAAwB,EAAQ,GAAG,GACnC,qBAAsB,EAAQ,GAAG,GACjC,iBAAkB,EAAQ,GAAG,GAC7B,gBAAiB,EAAQ,GAAG,GAC5B,mBAAoB,EAAQ,GAAG,GAC/B,oBAAqB,EAAQ,GAAG,GAChC,aAAc,EAAQ,GAAG,GACzB,GAAI,EAAQ,GAAG,GACf,eAAgB,EAAQ,GAAG,GAC3B,YAAa,EAAQ,GAAG,IAExB,SAAU,EAAQ,GAElB,cAAe,EAAQ,GACvB,2BAA4B,EAAQ,GACpC,yBAA0B,EAAQ,GAClC,oBAAqB,EAAQ,GAC7B,uBAAwB,EAAQ,GAChC,oBAAqB,EAAQ,GAC7B,sBAAuB,EAAQ,GAE/B,2BAA4B,EAAQ,IAAI,GACxC,yBAA0B,EAAQ,IAAI,GACvC,CAgBH,MAAM,uBAAuB,EAG1B,CACD,IAAI,EAA6B,EAC7B,EAA2B,EAC/B,GAAI,EAAQ,sBAAuB,CACjC,GAAI,EAAQ,sBAAsB,IAAM,EAAQ,sBAAsB,OAAS,EAAQ,sBAAsB,MAAQ,EACnH,MAAU,MAAM,gCAAgC,CAElD,EAA6B,EAAQ,sBAAsB,IAAM,EAAQ,sBAAsB,MAAQ,EAEzG,GAAI,EAAQ,oBAAqB,CAC/B,GAAI,EAAQ,oBAAoB,IAAM,EAAQ,oBAAoB,OAAS,EAAQ,oBAAoB,MAAQ,EAC7G,MAAU,MAAM,8BAA8B,CAEhD,EAA2B,EAAQ,oBAAoB,IAAM,EAAQ,oBAAoB,MAAQ,EAGnG,IAAI,EAAgB,EAA6B,EAE7C,EAA4B,EAA6B,EACzD,EAA0B,EAA2B,EACrD,EAA8C,MAAM,EAAc,CACtE,GAAI,EACF,IAAK,IAAI,EAAI,EAAG,EAAI,EAA4B,EAAE,EAChD,EAAU,GAAKC,EAAsC,KAAK,eAAgB,EAAE,CAGhF,GAAI,EACF,IAAK,IAAI,EAAI,EAA4B,EAAI,EAAe,EAAE,EAC5D,EAAU,GAAKC,GAAoC,KAAK,eAAgB,EAAI,EAA2B,CAI3G,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CACnC,YACX,aAAc,GACjB,CAAC,CAEE,EAAyB,EAAgC,MAAM,EAA2B,CAAG,EAAE,CAC/F,EAAuB,EAA8B,MAAM,EAAyB,CAAG,EAAE,CAE7F,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EACpC,GAAI,EAAI,EAA4B,CAClC,IAAI,EAAO,EAAQ,GACnB,EAAuB,GAAK,CAC1B,WAAY,EAAK,GACjB,aAAc,EAAK,GACnB,WAAY,EAAK,GAClB,KACI,CACL,IAAI,EAAO,EAAQ,GACnB,EAAqB,EAAI,GAA8B,CACrD,WAAY,EAAK,GACjB,aAAc,EAAK,GACnB,WAAY,EAAK,GAClB,CAIL,MAAO,CACmB,yBACF,uBACvB,CAkBH,MAAM,mBAQH,CAED,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTJ,EAA+B,KAAK,eAAe,CACnDC,EAAmC,KAAK,eAAgB,EAAc,YAAY,CAClFA,EAAmC,KAAK,eAAgB,EAAc,YAAY,CAClFA,EAAmC,KAAK,eAAgB,EAAc,iBAAiB,CACvFA,EAAmC,KAAK,eAAgB,EAAc,UAAU,CAChFA,EAAmC,KAAK,eAAgB,EAAc,SAAS,CAC/EA,EAAmC,KAAK,eAAgB,EAAc,SAAS,CAChF,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,iBAAkB,EAAQ,GAC1B,2BAA4B,EAAQ,GACpC,yBAA0B,EAAQ,GAClC,oBAAqB,EAAQ,GAC7B,uBAAwB,EAAQ,GAChC,oBAAqB,EAAQ,GAC7B,sBAAuB,EAAQ,GAChC,CAaH,MAAM,iCAGH,CACD,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTI,EAAiC,KAAK,eAAgB,EAAc,iBAAkB,EAAiB,QAAQ,CAC/GA,EAAiC,KAAK,eAAgB,EAAc,iBAAkB,EAAiB,UAAU,CAClH,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,qBAAsB,EAAQ,GAC9B,uBAAwB,EAAQ,GACjC,CAaH,MAAM,uCAGH,CACD,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTA,EAAiC,KAAK,eAAgB,EAAc,YAAa,EAAiB,QAAQ,CAC1GA,EAAiC,KAAK,eAAgB,EAAc,YAAa,EAAiB,UAAU,CAC5GA,EAAiC,KAAK,eAAgB,EAAc,iBAAkB,EAAiB,QAAQ,CAC/GA,EAAiC,KAAK,eAAgB,EAAc,iBAAkB,EAAiB,UAAU,CAClH,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,qBAAsB,EAAQ,GAAK,EAAQ,GAC3C,uBAAwB,EAAQ,GAAK,EAAQ,GAC9C,CAeH,MAAM,iBAAiB,EAAoB,EAGxC,CACD,GAAI,CAAC,KAAK,cAAc,OAAO,WAAW,YAAY,QACpD,MAAU,MAAM,yBAAyB,CAE3C,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTC,EAAyB,KAAK,cAAc,OAAO,WAAW,YAAY,QAAS,EAAQ,CAC3FC,GAA2B,EAAW,EAAQ,CAC/C,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,WAAY,EAAQ,GACpB,UAAW,EAAQ,GACpB,CAgBH,MAAM,wBAAwB,EAI3B,CACD,IAAM,EAAU,MAAM,KAAK,aAAa,UAAU,CAC9C,UAAW,CACTC,EAAkC,KAAK,eAAgB,EAAa,SAAU,EAAQ,CACtFA,EAAkC,KAAK,eAAgB,EAAa,QAAS,EAAQ,CACrFA,EAAkC,KAAK,eAAgB,EAAa,MAAO,EAAQ,CACpF,CACD,aAAc,GACjB,CAAC,CAEF,MAAO,CACL,sBAAuB,EAAQ,GAC/B,qBAAsB,EAAQ,GAC9B,mBAAoB,EAAQ,GAC7B,CAUH,MAAM,gBAA8C,CAElD,OADgB,MAAM,KAAK,aAAa,aAAaC,GAA0B,KAAK,eAAe,CAAC,CAqBtG,MAAM,qBACJ,EACA,EACA,EACA,EACA,EAEc,CAEd,OADmB,MAAM,KAAK,aAAa,aAAaC,EAAyB,KAAK,eAAgB,EAAkB,EAAS,EAAU,EAAY,EAAY,CAAC,CAgBtK,MAAM,iCAAiC,EAGpC,CACD,IAAM,EAAS,MAAM,KAAK,aAAa,aAAaC,EAA4C,KAAK,eAAgB,EAAW,CAAC,CACjI,MAAO,CACL,aAAc,EAAO,GACrB,WAAY,EAAO,GACpB,CAcH,MAAM,qBAAqB,EAAuB,EAAiD,CACjG,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASC,EAAiC,KAAK,eAAgB,EAAa,SAAU,EAAc,EAAE,CAGjI,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,IAAK,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKC,EAA2B,KAAK,eAAgB,EAAW,CAO5E,OALwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EACgD,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAetH,MAAM,oBAAoB,EAAsB,EAK9C,CACA,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAE9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASD,EAAiC,KAAK,eAAgB,EAAa,QAAS,EAAa,EAAE,CAE/H,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAS,EAAE,CAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAQ,EAAI,EACZ,EAAa,EAAY,GAC/B,EAAU,GAASC,EAA2B,KAAK,eAAgB,EAAW,CAC9E,EAAU,EAAQ,GAAKC,EAAkC,KAAK,eAAgB,EAAY,EAAY,CAGxG,IAAI,EAAU,MAAM,KAAK,aAAa,UAAU,CACjC,YACX,aAAc,GACjB,CAAC,CAEE,EAAuB,MAAM,EAAY,OAAO,CAEpD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAI,EAAQ,EAAI,EACZ,EAAmB,EAAQ,GAC3B,EAAc,EAAQ,EAAQ,GAKlC,EAAiB,GAAK,CACpB,aAHiC,CAAC,WADjB,EAAY,GAC6B,GAAG,EAAiB,CAIjE,cAEd,CAEH,OAAO,EAcT,MAAM,kBAAkB,EAAoB,EAK1C,CACA,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASF,EAAiC,KAAK,eAAgB,EAAa,MAAO,EAAW,EAAE,CAE3H,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAS,EAAE,CAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAQ,EAAI,EACZ,EAAa,EAAY,GAC/B,EAAU,GAASC,EAA2B,KAAK,eAAgB,EAAW,CAC9E,EAAU,EAAQ,GAAKE,EAAgC,KAAK,eAAgB,EAAY,EAAU,CAGpG,IAAI,EAAU,MAAM,KAAK,aAAa,UAAU,CACjC,YACX,aAAc,GACjB,CAAC,CAEE,EAAqB,MAAM,EAAY,OAAO,CAElD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAQ,EAAI,EACd,EAAmB,EAAQ,GAC3B,EAAY,EAAQ,EAAQ,GAKhC,EAAe,GAAK,CAClB,aAHiC,CAAC,WADjB,EAAY,GACiB,GAAG,EAAiB,CAIvD,YAEZ,CAEH,OAAO,EAcT,MAAM,eAAe,EAAsB,EAA4C,CACrF,IAAI,EAA8C,MAAM,EAAY,OAAO,CAC3E,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKD,EAAkC,KAAK,eAAgB,EAAY,EAAY,CAQhG,OALc,MAAM,KAAK,aAAa,UAAU,CACjC,YACX,aAAc,GACjB,CAAC,CAgBJ,MAAM,aAAa,EAAoB,EAA0C,CAC/E,IAAI,EAA8C,MAAM,EAAY,OAAO,CAC3E,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKC,EAAgC,KAAK,eAAgB,EAAY,EAAU,CAQ5F,OALc,MAAM,KAAK,aAAa,UAAU,CACjC,YACX,aAAc,GACjB,CAAC,CAcJ,MAAM,0BAA0B,EAAiD,CAC/E,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASC,EAAkC,KAAK,eAAgB,EAAc,YAAa,EAAE,CAGxH,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CAEF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAS5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,wBAAwB,EAAiD,CAC7E,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASG,EAAkC,KAAK,eAAgB,EAAc,YAAa,EAAE,CAExH,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAQ5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,mBAAmB,EAAiD,CACxE,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASG,EAAkC,KAAK,eAAgB,EAAc,iBAAkB,EAAE,CAE7H,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAQ5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,oBAAoB,EAAiD,CACzE,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASG,EAAkC,KAAK,eAAgB,EAAc,UAAW,EAAE,CAEtH,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAQ5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,mBAAmB,EAAiD,CACxE,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASG,EAAkC,KAAK,eAAgB,EAAc,SAAU,EAAE,CAErH,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAQ5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,qBAAqB,EAAiD,CAC1E,GAAI,EAAW,IAAM,EAAW,OAAS,EAAW,MAAQ,EAC1D,MAAU,MAAM,qBAAqB,CAGvC,IAAI,EAA8C,MAAM,EAAW,IAAM,EAAW,MAAQ,EAAE,CAC9F,IAAK,IAAI,EAAI,EAAW,MAAO,GAAK,EAAW,IAAK,EAAE,EACpD,EAAU,EAAI,EAAW,OAASG,EAAkC,KAAK,eAAgB,EAAc,SAAU,EAAE,CAErH,IAAM,EAAc,MAAM,KAAK,aAAa,UAAU,CACvC,YACX,aAAc,GACjB,CAAC,CACF,EAAgB,MAAM,EAAY,OAAO,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,IAAM,EAAa,EAAY,GAC/B,EAAU,GAAKH,EAA2B,KAAK,eAAgB,EAAW,CAQ5E,OANwB,MAAM,KAAK,aAAa,UAAU,CAC3C,YACX,aAAc,GACjB,CAAC,EAE8C,KAAK,EAAU,KAAO,CAAC,WAAY,EAAY,GAAK,GAAG,EAAS,EAAE,CAapH,MAAM,gBAAgB,EAAwC,CAG5D,MAD2B,CAAC,aAAY,GADjB,MAAM,KAAK,aAAa,aAAaA,EAA2B,KAAK,eAAgB,EAAW,CAAC,CAC5D,CAwB9D,6BAA6B,EAAmB,EAAuF,CACrI,GAAI,EAAO,QAAU,EACnB,MAAO,EAAE,CAEX,IAAI,EAAc,MAAM,EAAO,OAAO,CACtC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,IAAI,EAAwB,GACxB,EAAuB,IACvB,EAAO,GAAI,OAAS,EAAc,UAAY,EAAO,GAAI,OAAS,EAAc,YAAc,EAAO,GAAI,cAAgB,OAAO,EAAE,EAAI,EAAO,GAAI,UAAY,OAAO,EAAE,KACxK,EAAwB,IAEtB,EAAO,GAAI,OAAS,EAAc,WAAa,EAAO,GAAI,aAAe,GAAK,EAAY,EAAO,GAAI,aAAe,EAAO,GAAI,cAAgB,EAAO,GAAI,WAAa,OAAO,EAAE,EAAI,CAAC,EAAO,GAAI,SAClM,EAAuB,IAEzB,EAAQ,GAAK,CAAC,wBAAuB,uBAAqB,CAE5D,OAAO,EA0BT,MAAM,2BAA2B,EAA6B,EAAmB,EAA+D,CAC9I,GAAI,EAAO,QAAU,EACnB,MAAO,EAAE,CAGX,IAAI,EAAgB,EAChB,EAAmC,EAAE,CACrC,EAAc,MAAM,EAAO,OAAO,CAClC,EAA8C,MAAM,EAAO,OAAO,CACtE,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAI,EAAO,GAAI,OAAS,EAAc,UAAY,EAAO,GAAI,OAAS,EAAc,WAAa,EAAO,GAAI,cAAgB,OAAO,EAAE,EAAI,CAAC,EAAO,GAAI,OAAQ,CAC3J,EAAQ,GAAK,GACb,SAGF,GAAI,EAAO,GAAI,OAAS,EAAc,WAAa,EAAO,GAAI,aAAe,GAAK,EAAY,EAAO,GAAI,aAAe,EAAO,GAAI,cAAgB,EAAO,GAAI,UAAY,OAAO,EAAE,EAAI,CAAC,EAAO,GAAI,OAAQ,CACzM,EAAU,GAAiBI,EAA4B,EAAoB,EAAO,GAAI,UAAU,CAChG,EAAS,GAAK,EACd,IACA,SAGF,EAAQ,GAAK,GAEf,EAAY,EAAU,MAAM,EAAG,EAAc,CAE7C,IAAI,EAAqB,MAAM,KAAK,aAAa,UAAU,CAC5C,YACX,aAAc,GACjB,CAAC,CACF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAQ,EAAS,IAAO,EAAmB,IAAM,EAAc,aAEjE,OAAO,EAgBT,MAAM,iBAAiB,EAA6B,EAA2C,CAC7F,OAAO,MAAM,KAAK,aAAa,aAAaA,EAA4B,EAAoB,EAAU,CAAC,CAgBzG,MAAM,QAGJ,EACA,EACA,EACA,EAAgB,OAAO,EAAE,CAGxB,CAUD,OATA,MAAM,KAAK,aAAa,iBAAiB,CACvC,QAAS,KAAK,eACd,IAAK,KAAK,cACV,eACM,OACN,UACA,QACD,CAAC,CAEK,MAAM,KAAK,aAAa,0BAA0B,CACvD,UACA,GAAI,KAAK,eACT,KAAM,EAAmB,CACvB,IAAK,KAAK,cACV,eACM,OACP,CAAiC,CAClC,QACD,CAAwC,CAqB3C,MAAM,sBACJ,EACA,EACA,EACA,EACA,EACA,EAGA,CACA,IACM,EAAO,CAAC,EAAkB,EAAU,EAAY,EAAY,CAClE,OAAO,MAAM,KAAK,QAAQ,EAAS,iBAAc,EAAM,EAAgB,CAgBzE,MAAM,sBAAsB,EAA4B,EAAiB,EAEvE,CACA,IACM,EAAO,CAAC,EAAY,EAAO,CACjC,OAAO,MAAM,KAAK,QAAQ,EAAS,iBAAc,EAAM,OAAO,EAAE,CAAC,CAmBnE,MAAM,sBACJ,EACA,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAY,EAAO,CAC7C,OAAO,MAAM,KAAK,QAAQ,EAAS,iBAAc,EAAM,OAAO,EAAE,CAAC,CAqBnE,MAAM,0BACJ,EACA,EACA,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAY,EAAO,CAC7C,OAAO,MAAM,KAAK,QAAQ,EAAS,qBAAc,EAAM,EAAgB,CAyBzE,MAAM,oBACJ,EACA,EACA,EACA,EACA,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAc,EAAY,EAAU,EAAO,CACrE,OAAO,MAAM,KAAK,QAAQ,EAAS,eAAc,EAAM,EAAgB,CAezE,MAAM,qBACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAW,CACzB,OAAO,MAAM,KAAK,QAAQ,EAAS,gBAAc,EAAM,OAAO,EAAE,CAAC,CAenE,MAAM,iCACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAW,CACzB,OAAO,MAAM,KAAK,QAAQ,EAAS,4BAAc,EAAM,OAAO,EAAE,CAAC,CAiBnE,MAAM,+BACJ,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAU,CACpC,OAAO,MAAM,KAAK,QAAQ,EAAS,0BAAc,EAAM,OAAO,EAAE,CAAC,CAenE,MAAM,gCACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAW,CACzB,OAAO,MAAM,KAAK,QAAQ,EAAS,2BAAc,EAAM,OAAO,EAAE,CAAC,CAiBnE,MAAM,8BACJ,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAU,CACpC,OAAO,MAAM,KAAK,QAAQ,EAAS,yBAAc,EAAM,OAAO,EAAE,CAAC,CAenE,MAAM,8BACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAW,CACzB,OAAO,MAAM,KAAK,QAAQ,EAAS,yBAAc,EAAM,OAAO,EAAE,CAAC,CAiBnE,MAAM,4BACJ,EACA,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAY,EAAU,CACpC,OAAO,MAAM,KAAK,QAAQ,EAAS,uBAAc,EAAM,OAAO,EAAE,CAAC,CAenE,MAAM,iCACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAoB,CAClC,OAAO,MAAM,KAAK,QAAQ,EAAS,4BAAc,EAAM,OAAO,EAAE,CAAC,CAenE,MAAM,oCACJ,EACA,EAGC,CACD,IACM,EAAO,CAAC,EAAO,CACrB,OAAO,MAAM,KAAK,QAAQ,EAAS,+BAAc,EAAM,OAAO,EAAE,CAAC"}