{
  "name": "Nayro",
  "chain": {
    "name": "Robinhood Chain",
    "id": 4663,
    "rpc": "https://rpc.mainnet.chain.robinhood.com",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "contracts": {
    "NayroInvoiceDesk": {
      "address": null,
      "deployedBlock": null,
      "cellCodeHash": "0x9c17e144d0e271f463f7e0b58aa65aee808cd7b0652bebd13d4963d06d803da0",
      "abi": [
        {
          "type": "constructor",
          "inputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "CELL_CODE_HASH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CLOSE_TYPEHASH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_ASSETS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_BATCH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REDIRECT_TYPEHASH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cellOf",
          "inputs": [
            {
              "name": "payout",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "controller",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cellState",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct NayroInvoiceDesk.CellState",
              "components": [
                {
                  "name": "status",
                  "type": "uint8",
                  "internalType": "enum NayroInvoiceDesk.Status"
                },
                {
                  "name": "collections",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "redirects",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "openedAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "lastActionAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "nonce",
                  "type": "uint64",
                  "internalType": "uint64"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cellSummary",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "status",
              "type": "uint8",
              "internalType": "enum NayroInvoiceDesk.Status"
            },
            {
              "name": "collected",
              "type": "uint32",
              "internalType": "uint32"
            },
            {
              "name": "redirected",
              "type": "uint32",
              "internalType": "uint32"
            },
            {
              "name": "deployed",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cellsOpened",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "close",
          "inputs": [
            {
              "name": "terms",
              "type": "tuple",
              "internalType": "struct NayroInvoiceDesk.Terms",
              "components": [
                {
                  "name": "payout",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "controller",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "ref",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "signature",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "closeDigest",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "closures",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "collect",
          "inputs": [
            {
              "name": "terms",
              "type": "tuple",
              "internalType": "struct NayroInvoiceDesk.Terms",
              "components": [
                {
                  "name": "payout",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "controller",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "ref",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "assets",
              "type": "address[]",
              "internalType": "address[]"
            }
          ],
          "outputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "collectMany",
          "inputs": [
            {
              "name": "list",
              "type": "tuple[]",
              "internalType": "struct NayroInvoiceDesk.Terms[]",
              "components": [
                {
                  "name": "payout",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "controller",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "ref",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "assets",
              "type": "address[]",
              "internalType": "address[]"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "collections",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "domainSeparator",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "redirect",
          "inputs": [
            {
              "name": "terms",
              "type": "tuple",
              "internalType": "struct NayroInvoiceDesk.Terms",
              "components": [
                {
                  "name": "payout",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "controller",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "ref",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "assets",
              "type": "address[]",
              "internalType": "address[]"
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "signature",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "redirectDigest",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "assets",
              "type": "address[]",
              "internalType": "address[]"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "deadline",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "redirects",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "saltOf",
          "inputs": [
            {
              "name": "payout",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "controller",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "totals",
          "inputs": [],
          "outputs": [
            {
              "name": "opened",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "collected",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "redirected",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "closed",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "event",
          "name": "CellOpened",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "payout",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Closed",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Collected",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "payout",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "asset",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "moved",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "received",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Redirected",
          "inputs": [
            {
              "name": "cell",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "asset",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "moved",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "received",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "nonce",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyClosed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadSignature",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BatchTooLarge",
          "inputs": []
        },
        {
          "type": "error",
          "name": "CellCreationFailed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "Expired",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NoAssets",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NoController",
          "inputs": []
        },
        {
          "type": "error",
          "name": "Reentrancy",
          "inputs": []
        },
        {
          "type": "error",
          "name": "RepeatedAsset",
          "inputs": [
            {
              "name": "asset",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TooManyAssets",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroDestination",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroPayout",
          "inputs": []
        }
      ]
    }
  },
  "notes": "No owner, no admin, no fee. The desk never holds a balance; cells move only to their payout, or elsewhere with the controller's signature."
}