{
  "_format": "hh-sol-artifact-1",
  "contractName": "NavigatorVotingUtils",
  "sourceName": "contracts/navigator/libraries/NavigatorVotingUtils.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "DecisionAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "DecisionNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "DuplicateApp",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EmptyPreferences",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "decision",
          "type": "uint8"
        }
      ],
      "name": "InvalidDecision",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "appsLength",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "percentagesLength",
          "type": "uint256"
        }
      ],
      "name": "LengthMismatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotANavigator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "total",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        }
      ],
      "name": "PercentageMismatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "PreferencesAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "PreferencesNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "TooManyApps",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroPercentage",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "appIds",
          "type": "bytes32[]"
        }
      ],
      "name": "AllocationPreferencesSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "decision",
          "type": "uint8"
        }
      ],
      "name": "ProposalDecisionSet",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "decision",
          "type": "uint8"
        }
      ],
      "name": "decisionToSupport",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "support",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getAllocationPreferences",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "appIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256[]",
          "name": "percentages",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getPreferencesSetBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "getProposalDecision",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "hasSetDecision",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "hasSetPreferences",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x610c2161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100825760003560e01c80632246f2db1461008757806338b3ce13146100af578063394f8454146100cf5780638d5967e4146100e2578063cb5bfd7014610104578063eedb3a1f14610125578063f232dd6014610138578063fb335c3414610159575b600080fd5b61009a610095366004610925565b610179565b60405190151581526020015b60405180910390f35b6100c26100bd366004610925565b6101b9565b6040516100a6919061094f565b61009a6100dd366004610925565b610228565b8180156100ee57600080fd5b506101026100fd3660046109a1565b610262565b005b610117610112366004610925565b6105b4565b6040519081526020016100a6565b6100c2610133366004610a3b565b6105eb565b61014b610146366004610925565b61062d565b6040516100a6929190610a5d565b81801561016557600080fd5b50610102610174366004610ad8565b610721565b6000610183610885565b6001600160a01b0384166000908152600e919091016020908152604080832085845290915290205460ff16151590505b92915050565b6000806101c4610885565b6001600160a01b0385166000908152600e82016020908152604080832087845290915281205491925060ff909116908190036102205784846040516319d10b8560e01b8152600401610217929190610b14565b60405180910390fd5b949350505050565b6000610232610885565b6001600160a01b03939093166000908152600f909301602090815260408085209385529290525090205460ff1690565b600061026c610885565b6001600160a01b0388166000908152601a8201602052604090205490915060ff1615806102b357506001600160a01b0387166000908152601b8201602052604090205460ff165b156102d3578660405163046a49fb60e11b81526004016102179190610b2d565b60008490036102f55760405163f8ba61ed60e01b815260040160405180910390fd5b600f84111561031a5760405163d1a1422760e01b815260048101859052602401610217565b838214610344576040516355c5b3e360e11b81526004810185905260248101839052604401610217565b6001600160a01b0387166000908152600f82016020908152604080832089845290915290205460ff161561038f57868660405163a878708d60e01b8152600401610217929190610b14565b6000805b85811015610496578484828181106103ad576103ad610b41565b905060200201356000036103d45760405163b5646fa560e01b815260040160405180910390fd5b8484828181106103e6576103e6610b41565b90506020020135826103f89190610b6d565b915060005b818110156104835787878281811061041757610417610b41565b9050602002013588888481811061043057610430610b41565b90506020020135036104715787878381811061044e5761044e610b41565b9050602002013560405163de0927c960e01b815260040161021791815260200190565b8061047b81610b80565b9150506103fd565b508061048e81610b80565b915050610393565b5061271081146104c4576040516325f484f560e11b8152600481018290526127106024820152604401610217565b6001600160a01b0388166000908152600c8301602090815260408083208a845290915290206104f49087876108a9565b506001600160a01b0388166000908152600d8301602090815260408083208a845290915290206105259085856108a9565b506001600160a01b0388166000818152600f8401602090815260408083208b84528252808320805460ff191660011790558383526010860182528083208b845290915290819020439055518891907f4f18720ba255d35753a58bba29d296e450cb38f9e8ecb4e299de4f737ad5bb2b906105a2908a908a90610b99565b60405180910390a35050505050505050565b60006105be610885565b6001600160a01b039390931660009081526010909301602090815260408085209385529290525090205490565b600060018260ff161080610602575060038260ff16115b15610622578160405163065db53360e51b8152600401610217919061094f565b6101b3600183610bd2565b606080600061063a610885565b6001600160a01b0386166000818152600c8301602090815260408083208984528252808320938352600d850182528083208984528252918290208354835181840281018401909452808452949550929384918301828280156106bb57602002820191906000526020600020905b8154815260200190600101908083116106a7575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561070d57602002820191906000526020600020905b8154815260200190600101908083116106f9575b5050505050905092509250505b9250929050565b600061072b610885565b6001600160a01b0385166000908152601a8201602052604090205490915060ff16158061077257506001600160a01b0384166000908152601b8201602052604090205460ff165b15610792578360405163046a49fb60e11b81526004016102179190610b2d565b60018260ff1610806107a7575060038260ff16115b156107c7578160405163065db53360e51b8152600401610217919061094f565b6001600160a01b0384166000908152600e82016020908152604080832086845290915290205460ff161561081257838360405163da085c1d60e01b8152600401610217929190610b14565b6001600160a01b0384166000818152600e83016020908152604080832087845290915290819020805460ff191660ff8616179055518491907f43eed3fffc0ab14cd7c4cec7b12381068682d3c399e1e436bf05b08a004ec3339061087790869061094f565b60405180910390a350505050565b7f2556f61b975c74e3f128bbc478158bc306f6253c34d95084531f202ce74e570090565b8280548282559060005260206000209081019282156108e4579160200282015b828111156108e45782358255916020019190600101906108c9565b506108f09291506108f4565b5090565b5b808211156108f057600081556001016108f5565b80356001600160a01b038116811461092057600080fd5b919050565b6000806040838503121561093857600080fd5b61094183610909565b946020939093013593505050565b60ff91909116815260200190565b60008083601f84011261096f57600080fd5b5081356001600160401b0381111561098657600080fd5b6020830191508360208260051b850101111561071a57600080fd5b600080600080600080608087890312156109ba57600080fd5b6109c387610909565b95506020870135945060408701356001600160401b03808211156109e657600080fd5b6109f28a838b0161095d565b90965094506060890135915080821115610a0b57600080fd5b50610a1889828a0161095d565b979a9699509497509295939492505050565b803560ff8116811461092057600080fd5b600060208284031215610a4d57600080fd5b610a5682610a2a565b9392505050565b604080825283519082018190526000906020906060840190828701845b82811015610a9657815184529284019290840190600101610a7a565b5050508381038285015284518082528583019183019060005b81811015610acb57835183529284019291840191600101610aaf565b5090979650505050505050565b600080600060608486031215610aed57600080fd5b610af684610909565b925060208401359150610b0b60408501610a2a565b90509250925092565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101b3576101b3610b57565b600060018201610b9257610b92610b57565b5060010190565b6020808252810182905260006001600160fb1b03831115610bb957600080fd5b8260051b80856040850137919091016040019392505050565b60ff82811682821603908111156101b3576101b3610b5756fea2646970667358221220197d59e1e6111557ba3a62e29f299dbbbea336c463082ff0ab9ef8d67cf1f4f764736f6c63430008140033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100825760003560e01c80632246f2db1461008757806338b3ce13146100af578063394f8454146100cf5780638d5967e4146100e2578063cb5bfd7014610104578063eedb3a1f14610125578063f232dd6014610138578063fb335c3414610159575b600080fd5b61009a610095366004610925565b610179565b60405190151581526020015b60405180910390f35b6100c26100bd366004610925565b6101b9565b6040516100a6919061094f565b61009a6100dd366004610925565b610228565b8180156100ee57600080fd5b506101026100fd3660046109a1565b610262565b005b610117610112366004610925565b6105b4565b6040519081526020016100a6565b6100c2610133366004610a3b565b6105eb565b61014b610146366004610925565b61062d565b6040516100a6929190610a5d565b81801561016557600080fd5b50610102610174366004610ad8565b610721565b6000610183610885565b6001600160a01b0384166000908152600e919091016020908152604080832085845290915290205460ff16151590505b92915050565b6000806101c4610885565b6001600160a01b0385166000908152600e82016020908152604080832087845290915281205491925060ff909116908190036102205784846040516319d10b8560e01b8152600401610217929190610b14565b60405180910390fd5b949350505050565b6000610232610885565b6001600160a01b03939093166000908152600f909301602090815260408085209385529290525090205460ff1690565b600061026c610885565b6001600160a01b0388166000908152601a8201602052604090205490915060ff1615806102b357506001600160a01b0387166000908152601b8201602052604090205460ff165b156102d3578660405163046a49fb60e11b81526004016102179190610b2d565b60008490036102f55760405163f8ba61ed60e01b815260040160405180910390fd5b600f84111561031a5760405163d1a1422760e01b815260048101859052602401610217565b838214610344576040516355c5b3e360e11b81526004810185905260248101839052604401610217565b6001600160a01b0387166000908152600f82016020908152604080832089845290915290205460ff161561038f57868660405163a878708d60e01b8152600401610217929190610b14565b6000805b85811015610496578484828181106103ad576103ad610b41565b905060200201356000036103d45760405163b5646fa560e01b815260040160405180910390fd5b8484828181106103e6576103e6610b41565b90506020020135826103f89190610b6d565b915060005b818110156104835787878281811061041757610417610b41565b9050602002013588888481811061043057610430610b41565b90506020020135036104715787878381811061044e5761044e610b41565b9050602002013560405163de0927c960e01b815260040161021791815260200190565b8061047b81610b80565b9150506103fd565b508061048e81610b80565b915050610393565b5061271081146104c4576040516325f484f560e11b8152600481018290526127106024820152604401610217565b6001600160a01b0388166000908152600c8301602090815260408083208a845290915290206104f49087876108a9565b506001600160a01b0388166000908152600d8301602090815260408083208a845290915290206105259085856108a9565b506001600160a01b0388166000818152600f8401602090815260408083208b84528252808320805460ff191660011790558383526010860182528083208b845290915290819020439055518891907f4f18720ba255d35753a58bba29d296e450cb38f9e8ecb4e299de4f737ad5bb2b906105a2908a908a90610b99565b60405180910390a35050505050505050565b60006105be610885565b6001600160a01b039390931660009081526010909301602090815260408085209385529290525090205490565b600060018260ff161080610602575060038260ff16115b15610622578160405163065db53360e51b8152600401610217919061094f565b6101b3600183610bd2565b606080600061063a610885565b6001600160a01b0386166000818152600c8301602090815260408083208984528252808320938352600d850182528083208984528252918290208354835181840281018401909452808452949550929384918301828280156106bb57602002820191906000526020600020905b8154815260200190600101908083116106a7575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561070d57602002820191906000526020600020905b8154815260200190600101908083116106f9575b5050505050905092509250505b9250929050565b600061072b610885565b6001600160a01b0385166000908152601a8201602052604090205490915060ff16158061077257506001600160a01b0384166000908152601b8201602052604090205460ff165b15610792578360405163046a49fb60e11b81526004016102179190610b2d565b60018260ff1610806107a7575060038260ff16115b156107c7578160405163065db53360e51b8152600401610217919061094f565b6001600160a01b0384166000908152600e82016020908152604080832086845290915290205460ff161561081257838360405163da085c1d60e01b8152600401610217929190610b14565b6001600160a01b0384166000818152600e83016020908152604080832087845290915290819020805460ff191660ff8616179055518491907f43eed3fffc0ab14cd7c4cec7b12381068682d3c399e1e436bf05b08a004ec3339061087790869061094f565b60405180910390a350505050565b7f2556f61b975c74e3f128bbc478158bc306f6253c34d95084531f202ce74e570090565b8280548282559060005260206000209081019282156108e4579160200282015b828111156108e45782358255916020019190600101906108c9565b506108f09291506108f4565b5090565b5b808211156108f057600081556001016108f5565b80356001600160a01b038116811461092057600080fd5b919050565b6000806040838503121561093857600080fd5b61094183610909565b946020939093013593505050565b60ff91909116815260200190565b60008083601f84011261096f57600080fd5b5081356001600160401b0381111561098657600080fd5b6020830191508360208260051b850101111561071a57600080fd5b600080600080600080608087890312156109ba57600080fd5b6109c387610909565b95506020870135945060408701356001600160401b03808211156109e657600080fd5b6109f28a838b0161095d565b90965094506060890135915080821115610a0b57600080fd5b50610a1889828a0161095d565b979a9699509497509295939492505050565b803560ff8116811461092057600080fd5b600060208284031215610a4d57600080fd5b610a5682610a2a565b9392505050565b604080825283519082018190526000906020906060840190828701845b82811015610a9657815184529284019290840190600101610a7a565b5050508381038285015284518082528583019183019060005b81811015610acb57835183529284019291840191600101610aaf565b5090979650505050505050565b600080600060608486031215610aed57600080fd5b610af684610909565b925060208401359150610b0b60408501610a2a565b90509250925092565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101b3576101b3610b57565b600060018201610b9257610b92610b57565b5060010190565b6020808252810182905260006001600160fb1b03831115610bb957600080fd5b8260051b80856040850137919091016040019392505050565b60ff82811682821603908111156101b3576101b3610b5756fea2646970667358221220197d59e1e6111557ba3a62e29f299dbbbea336c463082ff0ab9ef8d67cf1f4f764736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
