{
  "_format": "hh-sol-artifact-1",
  "contractName": "SetTokenViewer",
  "sourceName": "contracts/protocol-viewers/SetTokenViewer.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ISetToken[]",
          "name": "_setTokens",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "_moduleList",
          "type": "address[]"
        }
      ],
      "name": "batchFetchDetails",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "manager",
              "type": "address"
            },
            {
              "internalType": "address[]",
              "name": "modules",
              "type": "address[]"
            },
            {
              "internalType": "enum ISetToken.ModuleState[]",
              "name": "moduleStatuses",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "component",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "module",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "unit",
                  "type": "int256"
                },
                {
                  "internalType": "uint8",
                  "name": "positionState",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct ISetToken.Position[]",
              "name": "positions",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            }
          ],
          "internalType": "struct SetTokenViewer.SetDetails[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken[]",
          "name": "_setTokens",
          "type": "address[]"
        }
      ],
      "name": "batchFetchManagers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken[]",
          "name": "_setTokens",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "_modules",
          "type": "address[]"
        }
      ],
      "name": "batchFetchModuleStates",
      "outputs": [
        {
          "internalType": "enum ISetToken.ModuleState[][]",
          "name": "",
          "type": "uint8[][]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_moduleList",
          "type": "address[]"
        }
      ],
      "name": "getSetDetails",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "manager",
              "type": "address"
            },
            {
              "internalType": "address[]",
              "name": "modules",
              "type": "address[]"
            },
            {
              "internalType": "enum ISetToken.ModuleState[]",
              "name": "moduleStatuses",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "component",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "module",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "unit",
                  "type": "int256"
                },
                {
                  "internalType": "uint8",
                  "name": "positionState",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct ISetToken.Position[]",
              "name": "positions",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            }
          ],
          "internalType": "struct SetTokenViewer.SetDetails",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610ff7806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631453a2991461005157806333d23f3f1461007a578063c094686e1461009a578063e7aed7ab146100ba575b600080fd5b61006461005f366004610a15565b6100da565b6040516100719190610e4f565b60405180910390f35b61008d610088366004610a4f565b6101e4565b6040516100719190610ec2565b6100ad6100a8366004610bbc565b610597565b6040516100719190610f15565b6100cd6100c8366004610a4f565b610618565b6040516100719190610e62565b60608082516001600160401b03811180156100f457600080fd5b5060405190808252806020026020018201604052801561011e578160200160208202803683370190505b50905060005b83518110156101dd5783818151811061013957fe5b60200260200101516001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561017957600080fd5b505afa15801561018d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b1919061095e565b8282815181106101bd57fe5b6001600160a01b0390921660209283029190910190910152600101610124565b5092915050565b6060806101f2858585610618565b9050606085516001600160401b038111801561020d57600080fd5b5060405190808252806020026020018201604052801561024757816020015b6102346107d6565b81526020019060019003908161022c5790505b50905060005b865181101561058d57600087828151811061026457fe5b602002602001015190506040518060e00160405280826001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156102b257600080fd5b505afa1580156102c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ee9190810190610c20565b8152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561032c57600080fd5b505afa158015610340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103689190810190610c20565b8152602001826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a657600080fd5b505afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de919061095e565b6001600160a01b03168152602001826001600160a01b031663b2494df36040518163ffffffff1660e01b815260040160006040518083038186803b15801561042557600080fd5b505afa158015610439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610461919081019061097a565b815260200185848151811061047257fe5b60200260200101518152602001826001600160a01b031663802758606040518163ffffffff1660e01b815260040160006040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f49190810190610ab4565b8152602001826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561053257600080fd5b505afa158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190610c52565b81525083838151811061057957fe5b60209081029190910101525060010161024d565b5095945050505050565b61059f6107d6565b6040805160018082528183019092526060916020808301908036833701905050905084816000815181106105cf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506105fa8185856101e4565b60008151811061060657fe5b60200260200101519150509392505050565b60608084516001600160401b038111801561063257600080fd5b5060405190808252806020026020018201604052801561066657816020015b60608152602001906001900390816106515790505b50905060005b85518110156107cd576060846001600160401b038111801561068d57600080fd5b506040519080825280602002602001820160405280156106b7578160200160208202803683370190505b50905060005b858110156107ab578783815181106106d157fe5b60200260200101516001600160a01b03166335bc4e528888848181106106f357fe5b9050602002016020810190610708919061093b565b6040518263ffffffff1660e01b81526004016107249190610e3b565b60206040518083038186803b15801561073c57600080fd5b505afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190610c01565b82828151811061078057fe5b6020026020010190600281111561079357fe5b908160028111156107a057fe5b9052506001016106bd565b50808383815181106107b957fe5b60209081029190910101525060010161066c565b50949350505050565b6040518060e00160405280606081526020016060815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600081525090565b60008083601f84011261082d578182fd5b5081356001600160401b03811115610843578182fd5b602083019150836020808302850101111561085d57600080fd5b9250929050565b600082601f830112610874578081fd5b813561088761088282610f4e565b610f28565b8181529150602080830190848101818402860182018710156108a857600080fd5b60005b848110156108d05781356108be81610fa9565b845292820192908201906001016108ab565b505050505092915050565b600082601f8301126108eb578081fd5b81516001600160401b03811115610900578182fd5b610913601f8201601f1916602001610f28565b915080825283602082850101111561092a57600080fd5b6101dd816020840160208601610f79565b60006020828403121561094c578081fd5b813561095781610fa9565b9392505050565b60006020828403121561096f578081fd5b815161095781610fa9565b6000602080838503121561098c578182fd5b82516001600160401b038111156109a1578283fd5b80840185601f8201126109b2578384fd5b805191506109c261088283610f4e565b82815283810190828501858502840186018910156109de578687fd5b8693505b84841015610a095780516109f581610fa9565b8352600193909301929185019185016109e2565b50979650505050505050565b600060208284031215610a26578081fd5b81356001600160401b03811115610a3b578182fd5b610a4784828501610864565b949350505050565b600080600060408486031215610a63578182fd5b83356001600160401b0380821115610a79578384fd5b610a8587838801610864565b94506020860135915080821115610a9a578384fd5b50610aa78682870161081c565b9497909650939450505050565b60006020808385031215610ac6578182fd5b82516001600160401b0380821115610adc578384fd5b81850186601f820112610aed578485fd5b80519250610afd61088284610f4e565b83815284810190828601875b86811015610bad578151850160a080601f19838f03011215610b29578a8bfd5b610b3281610f28565b8a830151610b3f81610fa9565b81526040830151610b4f81610fa9565b818c015260608301516040820152608083015160ff81168114610b70578c8dfd5b60608201528282015189811115610b85578c8dfd5b610b938f8d838701016108db565b608083015250865250509287019290870190600101610b09565b50909998505050505050505050565b600080600060408486031215610bd0578283fd5b8335610bdb81610fa9565b925060208401356001600160401b03811115610bf5578283fd5b610aa78682870161081c565b600060208284031215610c12578081fd5b815160038110610957578182fd5b600060208284031215610c31578081fd5b81516001600160401b03811115610c46578182fd5b610a47848285016108db565b600060208284031215610c63578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610ca25781516001600160a01b031687529582019590820190600101610c7d565b509495945050505050565b6000815180845260208085019450808401835b83811015610ca257815160038110610cd457fe5b87529582019590820190600101610cc0565b60008151808452610cfe816020860160208601610f79565b601f01601f19169290920160200192915050565b6000815160e08452610d2760e0850182610ce6565b602091508184015185820383870152610d408282610ce6565b6040868101516001600160a01b03908116898301526060808901518a8503828c0152929550935090610d728382610c6a565b60809350838901519150898103848b0152610d8d8183610cad565b60a08a8101518c83038d83015280518084529194508a935089830191908a820284018b01908b015b82861015610e1c57601f198583030184528051610dd28151610f6d565b8352888d820151168d8401528b8101518c84015260ff8b820151168b84015289810151888b850152610e0689850182610ce6565b60019890980197958e0195935050508b01610db5565b5060c08d015160c08f0152809b50505050505050505050505092915050565b6001600160a01b0391909116815260200190565b6000602082526109576020830184610c6a565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015610eb557603f19888603018452610ea3858351610cad565b94509285019290850190600101610e87565b5092979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015610eb557603f19888603018452610f03858351610d12565b94509285019290850190600101610ee7565b6000602082526109576020830184610d12565b6040518181016001600160401b0381118282101715610f4657600080fd5b604052919050565b60006001600160401b03821115610f63578081fd5b5060209081020190565b6001600160a01b031690565b60005b83811015610f94578181015183820152602001610f7c565b83811115610fa3576000848401525b50505050565b6001600160a01b0381168114610fbe57600080fd5b5056fea26469706673582212206237fc691a06c1d11dd9ed611ce2b7e2d95d664bbc9f6e4fd4d8b0c690a8244864736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80631453a2991461005157806333d23f3f1461007a578063c094686e1461009a578063e7aed7ab146100ba575b600080fd5b61006461005f366004610a15565b6100da565b6040516100719190610e4f565b60405180910390f35b61008d610088366004610a4f565b6101e4565b6040516100719190610ec2565b6100ad6100a8366004610bbc565b610597565b6040516100719190610f15565b6100cd6100c8366004610a4f565b610618565b6040516100719190610e62565b60608082516001600160401b03811180156100f457600080fd5b5060405190808252806020026020018201604052801561011e578160200160208202803683370190505b50905060005b83518110156101dd5783818151811061013957fe5b60200260200101516001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561017957600080fd5b505afa15801561018d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b1919061095e565b8282815181106101bd57fe5b6001600160a01b0390921660209283029190910190910152600101610124565b5092915050565b6060806101f2858585610618565b9050606085516001600160401b038111801561020d57600080fd5b5060405190808252806020026020018201604052801561024757816020015b6102346107d6565b81526020019060019003908161022c5790505b50905060005b865181101561058d57600087828151811061026457fe5b602002602001015190506040518060e00160405280826001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156102b257600080fd5b505afa1580156102c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102ee9190810190610c20565b8152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561032c57600080fd5b505afa158015610340573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103689190810190610c20565b8152602001826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a657600080fd5b505afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de919061095e565b6001600160a01b03168152602001826001600160a01b031663b2494df36040518163ffffffff1660e01b815260040160006040518083038186803b15801561042557600080fd5b505afa158015610439573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610461919081019061097a565b815260200185848151811061047257fe5b60200260200101518152602001826001600160a01b031663802758606040518163ffffffff1660e01b815260040160006040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f49190810190610ab4565b8152602001826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561053257600080fd5b505afa158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190610c52565b81525083838151811061057957fe5b60209081029190910101525060010161024d565b5095945050505050565b61059f6107d6565b6040805160018082528183019092526060916020808301908036833701905050905084816000815181106105cf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506105fa8185856101e4565b60008151811061060657fe5b60200260200101519150509392505050565b60608084516001600160401b038111801561063257600080fd5b5060405190808252806020026020018201604052801561066657816020015b60608152602001906001900390816106515790505b50905060005b85518110156107cd576060846001600160401b038111801561068d57600080fd5b506040519080825280602002602001820160405280156106b7578160200160208202803683370190505b50905060005b858110156107ab578783815181106106d157fe5b60200260200101516001600160a01b03166335bc4e528888848181106106f357fe5b9050602002016020810190610708919061093b565b6040518263ffffffff1660e01b81526004016107249190610e3b565b60206040518083038186803b15801561073c57600080fd5b505afa158015610750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107749190610c01565b82828151811061078057fe5b6020026020010190600281111561079357fe5b908160028111156107a057fe5b9052506001016106bd565b50808383815181106107b957fe5b60209081029190910101525060010161066c565b50949350505050565b6040518060e00160405280606081526020016060815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600081525090565b60008083601f84011261082d578182fd5b5081356001600160401b03811115610843578182fd5b602083019150836020808302850101111561085d57600080fd5b9250929050565b600082601f830112610874578081fd5b813561088761088282610f4e565b610f28565b8181529150602080830190848101818402860182018710156108a857600080fd5b60005b848110156108d05781356108be81610fa9565b845292820192908201906001016108ab565b505050505092915050565b600082601f8301126108eb578081fd5b81516001600160401b03811115610900578182fd5b610913601f8201601f1916602001610f28565b915080825283602082850101111561092a57600080fd5b6101dd816020840160208601610f79565b60006020828403121561094c578081fd5b813561095781610fa9565b9392505050565b60006020828403121561096f578081fd5b815161095781610fa9565b6000602080838503121561098c578182fd5b82516001600160401b038111156109a1578283fd5b80840185601f8201126109b2578384fd5b805191506109c261088283610f4e565b82815283810190828501858502840186018910156109de578687fd5b8693505b84841015610a095780516109f581610fa9565b8352600193909301929185019185016109e2565b50979650505050505050565b600060208284031215610a26578081fd5b81356001600160401b03811115610a3b578182fd5b610a4784828501610864565b949350505050565b600080600060408486031215610a63578182fd5b83356001600160401b0380821115610a79578384fd5b610a8587838801610864565b94506020860135915080821115610a9a578384fd5b50610aa78682870161081c565b9497909650939450505050565b60006020808385031215610ac6578182fd5b82516001600160401b0380821115610adc578384fd5b81850186601f820112610aed578485fd5b80519250610afd61088284610f4e565b83815284810190828601875b86811015610bad578151850160a080601f19838f03011215610b29578a8bfd5b610b3281610f28565b8a830151610b3f81610fa9565b81526040830151610b4f81610fa9565b818c015260608301516040820152608083015160ff81168114610b70578c8dfd5b60608201528282015189811115610b85578c8dfd5b610b938f8d838701016108db565b608083015250865250509287019290870190600101610b09565b50909998505050505050505050565b600080600060408486031215610bd0578283fd5b8335610bdb81610fa9565b925060208401356001600160401b03811115610bf5578283fd5b610aa78682870161081c565b600060208284031215610c12578081fd5b815160038110610957578182fd5b600060208284031215610c31578081fd5b81516001600160401b03811115610c46578182fd5b610a47848285016108db565b600060208284031215610c63578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610ca25781516001600160a01b031687529582019590820190600101610c7d565b509495945050505050565b6000815180845260208085019450808401835b83811015610ca257815160038110610cd457fe5b87529582019590820190600101610cc0565b60008151808452610cfe816020860160208601610f79565b601f01601f19169290920160200192915050565b6000815160e08452610d2760e0850182610ce6565b602091508184015185820383870152610d408282610ce6565b6040868101516001600160a01b03908116898301526060808901518a8503828c0152929550935090610d728382610c6a565b60809350838901519150898103848b0152610d8d8183610cad565b60a08a8101518c83038d83015280518084529194508a935089830191908a820284018b01908b015b82861015610e1c57601f198583030184528051610dd28151610f6d565b8352888d820151168d8401528b8101518c84015260ff8b820151168b84015289810151888b850152610e0689850182610ce6565b60019890980197958e0195935050508b01610db5565b5060c08d015160c08f0152809b50505050505050505050505092915050565b6001600160a01b0391909116815260200190565b6000602082526109576020830184610c6a565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015610eb557603f19888603018452610ea3858351610cad565b94509285019290850190600101610e87565b5092979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015610eb557603f19888603018452610f03858351610d12565b94509285019290850190600101610ee7565b6000602082526109576020830184610d12565b6040518181016001600160401b0381118282101715610f4657600080fd5b604052919050565b60006001600160401b03821115610f63578081fd5b5060209081020190565b6001600160a01b031690565b60005b83811015610f94578181015183820152602001610f7c565b83811115610fa3576000848401525b50505050565b6001600160a01b0381168114610fbe57600080fd5b5056fea26469706673582212206237fc691a06c1d11dd9ed611ce2b7e2d95d664bbc9f6e4fd4d8b0c690a8244864736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
