{
  "contractName": "Chisel",
  "sourceName": "contracts/Chisel.sol",
  "compiler": "0.8.30+commit.73712a01.Emscripten.clang",
  "settings": {
    "evmVersion": "paris",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "metadata": {
      "appendCBOR": false
    }
  },
  "sourceSha256": "9746bb27382f0c344837d0342ac2f1c1dd565226c20bbc4540f2da6c7c15d99d",
  "bytecodeSha256": "4e986639a58e0beb71b0e5cebe4fb79bba254e37d430350eba404427b4941da6",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidPayment",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RefundFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "TransferFailed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "artifactKeyHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "revision",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "artifact",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "body",
          "type": "string"
        }
      ],
      "name": "ArtifactMapped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "format",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "RecordLogged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RefundCredited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RefundWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "status",
          "type": "uint8"
        }
      ],
      "name": "TransferResult",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "PAYMENT_CALL_GAS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "creator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address payable",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Chisel.Payment[]",
          "name": "payments",
          "type": "tuple[]"
        }
      ],
      "name": "distribute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address payable",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Chisel.Payment[]",
          "name": "payments",
          "type": "tuple[]"
        }
      ],
      "name": "distributeChecked",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "artifact",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "body",
          "type": "string"
        },
        {
          "components": [
            {
              "internalType": "address payable",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "internalType": "struct Chisel.Payment[]",
          "name": "payments",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32",
          "name": "logFormat",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "logData",
          "type": "bytes"
        }
      ],
      "name": "execute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "writer",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "artifact",
          "type": "string"
        }
      ],
      "name": "getArtifact",
      "outputs": [
        {
          "internalType": "string",
          "name": "body",
          "type": "string"
        },
        {
          "internalType": "uint64",
          "name": "revision",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "format",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "logRecord",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "artifact",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "body",
          "type": "string"
        }
      ],
      "name": "mapArtifact",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "pendingRefunds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawRefund",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052348015600f57600080fd5b5033608052608051610f3d61002e600039600060a80152610f3d6000f3fe6080604052600436106100915760003560e01c80633becb236116100595780633becb236146101555780635d9c3e4314610168578063a6d2743e14610188578063b613b114146101b6578063c7e2e7c1146101e357600080fd5b806302d05d3f14610096578063110f8874146100e757806316fb242a146100fe5780631c3785731461011e5780632c3abaa714610131575b600080fd5b3480156100a257600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b506100fc6101f6565b005b34801561010a57600080fd5b506100fc6101193660046109df565b6102c2565b6100fc61012c366004610a92565b6102d4565b34801561013d57600080fd5b5061014761c35081565b6040519081526020016100de565b6100fc610163366004610ad3565b6102e2565b34801561017457600080fd5b506100fc610183366004610bb2565b610354565b34801561019457600080fd5b506101a86101a3366004610c15565b61039d565b6040516100de929190610c50565b3480156101c257600080fd5b506101476101d1366004610cae565b60016020526000908152604090205481565b6100fc6101f1366004610a92565b6104a5565b33600090815260016020526040812054908190036102115750565b336000818152600160205260408082208290555190919083908381818185875af1925050503d8060008114610262576040519150601f19603f3d011682016040523d82523d6000602084013e610267565b606091505b505090508061028957604051633c31275160e21b815260040160405180910390fd5b60405182815233907f3d97f39b86d061200a7834082f5926e58ec10fd85a9d6930f497729d5e6cc35c9060200160405180910390a25050565b6102ce84848484610665565b50505050565b6102de8282610754565b5050565b87156102f4576102f489898989610665565b801561033f5782336001600160a01b03167fbb77339a4253cf6ea94453adee0c3e85d6a24624385c9bbe9e51840374c7885c8484604051610336929190610cfb565b60405180910390a35b6103498585610754565b505050505050505050565b82336001600160a01b03167fbb77339a4253cf6ea94453adee0c3e85d6a24624385c9bbe9e51840374c7885c8484604051610390929190610cfb565b60405180910390a3505050565b6060600080600080876001600160a01b03166001600160a01b03168152602001908152602001600020600086866040516103d8929190610d17565b604051809103902081526020019081526020016000209050806000018160010160009054906101000a90046001600160401b031681805461041890610d27565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d27565b80156104915780601f1061046657610100808354040283529160200191610491565b820191906000526020600020905b81548152906001019060200180831161047457829003601f168201915b505050505091509250925050935093915050565b6000805b8281101561052c57368484838181106104c4576104c4610d61565b604002919091019150600090506104de6020830183610cae565b6001600160a01b031614806104f557506020810135155b156105135760405163078d696560e31b815260040160405180910390fd5b610521602082013584610d8d565b9250506001016104a9565b5034811461054d5760405163078d696560e31b815260040160405180910390fd5b60005b828110156102ce573684848381811061056b5761056b610d61565b604002919091019150600090506105856020830183610cae565b6001600160a01b0316826020013560405160006040518083038185875af1925050503d80600081146105d3576040519150601f19603f3d011682016040523d82523d6000602084013e6105d8565b606091505b50509050806106015760405163c39ba1a960e01b81526004810184905260240160405180910390fd5b8261060f6020840184610cae565b6040805160208087013582526002908201526001600160a01b03929092169133917faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e8759910160405180910390a45050600101610550565b60008484604051610677929190610d17565b60408051918290039091203360009081526020818152838220838352905291909120909150806106a8848683610e0a565b50600181810180546000906106c79084906001600160401b0316610ec9565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081336001600160a01b03167fbcc2d5073707b2a8fdf36ad3b4ef84878174199ee2766121f5d76cffdb0b86c68360010160009054906101000a90046001600160401b031689898989604051610744959493929190610ee8565b60405180910390a3505050505050565b3460005b828110156108db573684848381811061077357610773610d61565b905060400201905082816020013511156107e757816107956020830183610cae565b6040805160208086013582526000908201526001600160a01b03929092169133917faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e8759910160405180910390a4506108d3565b60006107f66020830183610cae565b6001600160a01b0316826020013561c35090604051600060405180830381858888f193505050503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050801561086957610866602083013585610f2a565b93505b826108776020840184610cae565b6001600160a01b0316337faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e87596020860135856108b35760016108b6565b60025b6040805192835260ff90911660208301520160405180910390a450505b600101610758565b50801561099257604051600090339061c35090849084818181858888f193505050503d8060008114610929576040519150601f19603f3d011682016040523d82523d6000602084013e61092e565b606091505b50509050806102ce573360009081526001602052604081208054849290610956908490610d8d565b909155505060405182815233907f57b31d08aad1b08f38687f5d1a07c24f3c09768a493b5b11f4de021a3ac6fbb99060200160405180910390a2505b505050565b60008083601f8401126109a957600080fd5b5081356001600160401b038111156109c057600080fd5b6020830191508360208285010111156109d857600080fd5b9250929050565b600080600080604085870312156109f557600080fd5b84356001600160401b03811115610a0b57600080fd5b610a1787828801610997565b90955093505060208501356001600160401b03811115610a3657600080fd5b610a4287828801610997565b95989497509550505050565b60008083601f840112610a6057600080fd5b5081356001600160401b03811115610a7757600080fd5b6020830191508360208260061b85010111156109d857600080fd5b60008060208385031215610aa557600080fd5b82356001600160401b03811115610abb57600080fd5b610ac785828601610a4e565b90969095509350505050565b600080600080600080600080600060a08a8c031215610af157600080fd5b89356001600160401b03811115610b0757600080fd5b610b138c828d01610997565b909a5098505060208a01356001600160401b03811115610b3257600080fd5b610b3e8c828d01610997565b90985096505060408a01356001600160401b03811115610b5d57600080fd5b610b698c828d01610a4e565b90965094505060608a0135925060808a01356001600160401b03811115610b8f57600080fd5b610b9b8c828d01610997565b915080935050809150509295985092959850929598565b600080600060408486031215610bc757600080fd5b8335925060208401356001600160401b03811115610be457600080fd5b610bf086828701610997565b9497909650939450505050565b6001600160a01b0381168114610c1257600080fd5b50565b600080600060408486031215610c2a57600080fd5b8335610c3581610bfd565b925060208401356001600160401b03811115610be457600080fd5b604081526000835180604084015260005b81811015610c7e5760208187018101516060868401015201610c61565b506000606082850101526060601f19601f8301168401019150506001600160401b03831660208301529392505050565b600060208284031215610cc057600080fd5b8135610ccb81610bfd565b9392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d0f602083018486610cd2565b949350505050565b8183823760009101908152919050565b600181811c90821680610d3b57607f821691505b602082108103610d5b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610da057610da0610d77565b92915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561099257806000526020600020601f840160051c81016020851015610de35750805b601f840160051c820191505b81811015610e035760008155600101610def565b5050505050565b6001600160401b03831115610e2157610e21610da6565b610e3583610e2f8354610d27565b83610dbc565b6000601f841160018114610e695760008515610e515750838201355b600019600387901b1c1916600186901b178355610e03565b600083815260209020601f19861690835b82811015610e9a5786850135825560209485019460019092019101610e7a565b5086821015610eb75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160401b038181168382160190811115610da057610da0610d77565b6001600160401b0386168152606060208201526000610f0b606083018688610cd2565b8281036040840152610f1e818587610cd2565b98975050505050505050565b81810381811115610da057610da0610d7756",
  "deployedBytecode": "0x6080604052600436106100915760003560e01c80633becb236116100595780633becb236146101555780635d9c3e4314610168578063a6d2743e14610188578063b613b114146101b6578063c7e2e7c1146101e357600080fd5b806302d05d3f14610096578063110f8874146100e757806316fb242a146100fe5780631c3785731461011e5780632c3abaa714610131575b600080fd5b3480156100a257600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100f357600080fd5b506100fc6101f6565b005b34801561010a57600080fd5b506100fc6101193660046109df565b6102c2565b6100fc61012c366004610a92565b6102d4565b34801561013d57600080fd5b5061014761c35081565b6040519081526020016100de565b6100fc610163366004610ad3565b6102e2565b34801561017457600080fd5b506100fc610183366004610bb2565b610354565b34801561019457600080fd5b506101a86101a3366004610c15565b61039d565b6040516100de929190610c50565b3480156101c257600080fd5b506101476101d1366004610cae565b60016020526000908152604090205481565b6100fc6101f1366004610a92565b6104a5565b33600090815260016020526040812054908190036102115750565b336000818152600160205260408082208290555190919083908381818185875af1925050503d8060008114610262576040519150601f19603f3d011682016040523d82523d6000602084013e610267565b606091505b505090508061028957604051633c31275160e21b815260040160405180910390fd5b60405182815233907f3d97f39b86d061200a7834082f5926e58ec10fd85a9d6930f497729d5e6cc35c9060200160405180910390a25050565b6102ce84848484610665565b50505050565b6102de8282610754565b5050565b87156102f4576102f489898989610665565b801561033f5782336001600160a01b03167fbb77339a4253cf6ea94453adee0c3e85d6a24624385c9bbe9e51840374c7885c8484604051610336929190610cfb565b60405180910390a35b6103498585610754565b505050505050505050565b82336001600160a01b03167fbb77339a4253cf6ea94453adee0c3e85d6a24624385c9bbe9e51840374c7885c8484604051610390929190610cfb565b60405180910390a3505050565b6060600080600080876001600160a01b03166001600160a01b03168152602001908152602001600020600086866040516103d8929190610d17565b604051809103902081526020019081526020016000209050806000018160010160009054906101000a90046001600160401b031681805461041890610d27565b80601f016020809104026020016040519081016040528092919081815260200182805461044490610d27565b80156104915780601f1061046657610100808354040283529160200191610491565b820191906000526020600020905b81548152906001019060200180831161047457829003601f168201915b505050505091509250925050935093915050565b6000805b8281101561052c57368484838181106104c4576104c4610d61565b604002919091019150600090506104de6020830183610cae565b6001600160a01b031614806104f557506020810135155b156105135760405163078d696560e31b815260040160405180910390fd5b610521602082013584610d8d565b9250506001016104a9565b5034811461054d5760405163078d696560e31b815260040160405180910390fd5b60005b828110156102ce573684848381811061056b5761056b610d61565b604002919091019150600090506105856020830183610cae565b6001600160a01b0316826020013560405160006040518083038185875af1925050503d80600081146105d3576040519150601f19603f3d011682016040523d82523d6000602084013e6105d8565b606091505b50509050806106015760405163c39ba1a960e01b81526004810184905260240160405180910390fd5b8261060f6020840184610cae565b6040805160208087013582526002908201526001600160a01b03929092169133917faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e8759910160405180910390a45050600101610550565b60008484604051610677929190610d17565b60408051918290039091203360009081526020818152838220838352905291909120909150806106a8848683610e0a565b50600181810180546000906106c79084906001600160401b0316610ec9565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081336001600160a01b03167fbcc2d5073707b2a8fdf36ad3b4ef84878174199ee2766121f5d76cffdb0b86c68360010160009054906101000a90046001600160401b031689898989604051610744959493929190610ee8565b60405180910390a3505050505050565b3460005b828110156108db573684848381811061077357610773610d61565b905060400201905082816020013511156107e757816107956020830183610cae565b6040805160208086013582526000908201526001600160a01b03929092169133917faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e8759910160405180910390a4506108d3565b60006107f66020830183610cae565b6001600160a01b0316826020013561c35090604051600060405180830381858888f193505050503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050801561086957610866602083013585610f2a565b93505b826108776020840184610cae565b6001600160a01b0316337faaeaa5eaf963c1b9aece6395583735ab278b3a63647fcaa21a26dab9007e87596020860135856108b35760016108b6565b60025b6040805192835260ff90911660208301520160405180910390a450505b600101610758565b50801561099257604051600090339061c35090849084818181858888f193505050503d8060008114610929576040519150601f19603f3d011682016040523d82523d6000602084013e61092e565b606091505b50509050806102ce573360009081526001602052604081208054849290610956908490610d8d565b909155505060405182815233907f57b31d08aad1b08f38687f5d1a07c24f3c09768a493b5b11f4de021a3ac6fbb99060200160405180910390a2505b505050565b60008083601f8401126109a957600080fd5b5081356001600160401b038111156109c057600080fd5b6020830191508360208285010111156109d857600080fd5b9250929050565b600080600080604085870312156109f557600080fd5b84356001600160401b03811115610a0b57600080fd5b610a1787828801610997565b90955093505060208501356001600160401b03811115610a3657600080fd5b610a4287828801610997565b95989497509550505050565b60008083601f840112610a6057600080fd5b5081356001600160401b03811115610a7757600080fd5b6020830191508360208260061b85010111156109d857600080fd5b60008060208385031215610aa557600080fd5b82356001600160401b03811115610abb57600080fd5b610ac785828601610a4e565b90969095509350505050565b600080600080600080600080600060a08a8c031215610af157600080fd5b89356001600160401b03811115610b0757600080fd5b610b138c828d01610997565b909a5098505060208a01356001600160401b03811115610b3257600080fd5b610b3e8c828d01610997565b90985096505060408a01356001600160401b03811115610b5d57600080fd5b610b698c828d01610a4e565b90965094505060608a0135925060808a01356001600160401b03811115610b8f57600080fd5b610b9b8c828d01610997565b915080935050809150509295985092959850929598565b600080600060408486031215610bc757600080fd5b8335925060208401356001600160401b03811115610be457600080fd5b610bf086828701610997565b9497909650939450505050565b6001600160a01b0381168114610c1257600080fd5b50565b600080600060408486031215610c2a57600080fd5b8335610c3581610bfd565b925060208401356001600160401b03811115610be457600080fd5b604081526000835180604084015260005b81811015610c7e5760208187018101516060868401015201610c61565b506000606082850101526060601f19601f8301168401019150506001600160401b03831660208301529392505050565b600060208284031215610cc057600080fd5b8135610ccb81610bfd565b9392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d0f602083018486610cd2565b949350505050565b8183823760009101908152919050565b600181811c90821680610d3b57607f821691505b602082108103610d5b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610da057610da0610d77565b92915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561099257806000526020600020601f840160051c81016020851015610de35750805b601f840160051c820191505b81811015610e035760008155600101610def565b5050505050565b6001600160401b03831115610e2157610e21610da6565b610e3583610e2f8354610d27565b83610dbc565b6000601f841160018114610e695760008515610e515750838201355b600019600387901b1c1916600186901b178355610e03565b600083815260209020601f19861690835b82811015610e9a5786850135825560209485019460019092019101610e7a565b5086821015610eb75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160401b038181168382160190811115610da057610da0610d77565b6001600160401b0386168152606060208201526000610f0b606083018688610cd2565b8281036040840152610f1e818587610cd2565b98975050505050505050565b81810381811115610da057610da0610d7756"
}
