{
  "_format": "hh-sol-artifact-1",
  "contractName": "BridgeHelperLibrary",
  "sourceName": "contracts/messagePassingBridge/BridgeHelperLibrary.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "dailyLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "txLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "accountDailyLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "onlyWhitelisted",
              "type": "bool"
            }
          ],
          "internalType": "struct IMessagePassingBridge.BridgeLimits",
          "name": "bridgeLimits",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "lastTransferReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridged24Hours",
              "type": "uint256"
            }
          ],
          "internalType": "struct IMessagePassingBridge.AccountLimit",
          "name": "accountDailyLimit",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "lastTransferReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bridged24Hours",
              "type": "uint256"
            }
          ],
          "internalType": "struct IMessagePassingBridge.BridgeDailyLimit",
          "name": "bridgeDailyLimit",
          "type": "tuple"
        },
        {
          "internalType": "contract INameService",
          "name": "nameService",
          "type": "INameService"
        },
        {
          "internalType": "bool",
          "name": "isClosed",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "canBridge",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isWithinLimit",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "error",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "decimals",
          "type": "uint8"
        }
      ],
      "name": "normalizeFrom18ToTokenDecimals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "normalized",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "decimals",
          "type": "uint8"
        }
      ],
      "name": "normalizeFromTokenTo18Decimals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "normalized",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x6108e661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80637bc8f32e14610050578063aac673c31461007a578063e62381b61461009b575b600080fd5b61006361005e366004610577565b6100ae565b604051610071929190610641565b60405180910390f35b61008d6100883660046106a0565b6103c4565b604051908152602001610071565b61008d6100a93660046106a0565b61043d565b6000606084156100df57505060408051808201909152600681526518db1bdcd95960d21b60208201526000906103b8565b88606001518310156101155750506040805180820190915260098152681b5a5b905b5bdd5b9d60ba1b60208201526000906103b8565b602088015161012762015180426106ec565b89511015610136575082610143565b6101408482610703565b90505b8960800151801561015c57506001600160a01b03871615155b1561029b5760405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000906001600160a01b0389169063bf40fac190606401602060405180830381865afa1580156101c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e5919061071b565b90506001600160a01b0381161561029957604051633af32abf60e01b81526001600160a01b038781166004830152821690633af32abf90602401602060405180830381865afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610260919061073f565b6102995760006040518060400160405280600f81526020016e1b9bdd081dda1a5d195b1a5cdd1959608a1b8152509350935050506103b8565b505b89604001518111156102da5750506040805180820190915260118152701858d8dbdd5b9d11185a5b1e531a5b5a5d607a1b6020820152600091506103b8565b896020015184111561030f5750506040805180820190915260078152661d1e131a5b5a5d60ca1b6020820152600091506103b8565b61031c62015180426106ec565b8851101561035e57895184111561035957505060408051808201909152600a81526919185a5b1e531a5b5a5d60b21b6020820152600091506103b8565b6103a2565b89516020890151610370908690610703565b11156103a257505060408051808201909152600a81526919185a5b1e531a5b5a5d60b21b6020820152600091506103b8565b5050604080516020810190915260008152600191505b97509795505050505050565b81601260ff831610156104005760006103de83601261075c565b60ff1690506103ee81600a610863565b6103f8908561086f565b915050610437565b60128260ff16111561043757600061041960128461075c565b60ff16905061042981600a610863565b610433908561088e565b9150505b92915050565b81601260ff8316101561047157600061045783601261075c565b60ff16905061046781600a610863565b6103f8908561088e565b60128260ff16111561043757600061048a60128461075c565b60ff16905061049a81600a610863565b610433908561086f565b60405160a081016001600160401b03811182821017156104d457634e487b7160e01b600052604160045260246000fd5b60405290565b80151581146104e857600080fd5b50565b80356104f6816104da565b919050565b60006040828403121561050d57600080fd5b604080519081016001600160401b038111828210171561053d57634e487b7160e01b600052604160045260246000fd5b604052823581526020928301359281019290925250919050565b6001600160a01b03811681146104e857600080fd5b80356104f681610557565b60008060008060008060008789036101a081121561059457600080fd5b60a08112156105a257600080fd5b506105ab6104a4565b8835815260208901356020820152604089013560408201526060890135606082015260808901356105db816104da565b608082015296506105ef8960a08a016104fb565b95506105fe8960e08a016104fb565b945061060d610120890161056c565b935061061c61014089016104eb565b925061062b610160890161056c565b9150610180880135905092959891949750929550565b821515815260006020604081840152835180604085015260005b818110156106775785810183015185820160600152820161065b565b81811115610689576000606083870101525b50601f01601f191692909201606001949350505050565b600080604083850312156106b357600080fd5b82359150602083013560ff811681146106cb57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156106fe576106fe6106d6565b500390565b60008219821115610716576107166106d6565b500190565b60006020828403121561072d57600080fd5b815161073881610557565b9392505050565b60006020828403121561075157600080fd5b8151610738816104da565b600060ff821660ff841680821015610776576107766106d6565b90039392505050565b600181815b808511156107ba5781600019048211156107a0576107a06106d6565b808516156107ad57918102915b93841c9390800290610784565b509250929050565b6000826107d157506001610437565b816107de57506000610437565b81600181146107f457600281146107fe5761081a565b6001915050610437565b60ff84111561080f5761080f6106d6565b50506001821b610437565b5060208310610133831016604e8410600b841016171561083d575081810a610437565b610847838361077f565b806000190482111561085b5761085b6106d6565b029392505050565b600061073883836107c2565b6000816000190483118215151615610889576108896106d6565b500290565b6000826108ab57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220d179affcd7d8bf338fe657e2e5e4d176fd74a1fc0d83d0200c1a8eb05ce04f1464736f6c634300080a0033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c80637bc8f32e14610050578063aac673c31461007a578063e62381b61461009b575b600080fd5b61006361005e366004610577565b6100ae565b604051610071929190610641565b60405180910390f35b61008d6100883660046106a0565b6103c4565b604051908152602001610071565b61008d6100a93660046106a0565b61043d565b6000606084156100df57505060408051808201909152600681526518db1bdcd95960d21b60208201526000906103b8565b88606001518310156101155750506040805180820190915260098152681b5a5b905b5bdd5b9d60ba1b60208201526000906103b8565b602088015161012762015180426106ec565b89511015610136575082610143565b6101408482610703565b90505b8960800151801561015c57506001600160a01b03871615155b1561029b5760405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000906001600160a01b0389169063bf40fac190606401602060405180830381865afa1580156101c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e5919061071b565b90506001600160a01b0381161561029957604051633af32abf60e01b81526001600160a01b038781166004830152821690633af32abf90602401602060405180830381865afa15801561023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610260919061073f565b6102995760006040518060400160405280600f81526020016e1b9bdd081dda1a5d195b1a5cdd1959608a1b8152509350935050506103b8565b505b89604001518111156102da5750506040805180820190915260118152701858d8dbdd5b9d11185a5b1e531a5b5a5d607a1b6020820152600091506103b8565b896020015184111561030f5750506040805180820190915260078152661d1e131a5b5a5d60ca1b6020820152600091506103b8565b61031c62015180426106ec565b8851101561035e57895184111561035957505060408051808201909152600a81526919185a5b1e531a5b5a5d60b21b6020820152600091506103b8565b6103a2565b89516020890151610370908690610703565b11156103a257505060408051808201909152600a81526919185a5b1e531a5b5a5d60b21b6020820152600091506103b8565b5050604080516020810190915260008152600191505b97509795505050505050565b81601260ff831610156104005760006103de83601261075c565b60ff1690506103ee81600a610863565b6103f8908561086f565b915050610437565b60128260ff16111561043757600061041960128461075c565b60ff16905061042981600a610863565b610433908561088e565b9150505b92915050565b81601260ff8316101561047157600061045783601261075c565b60ff16905061046781600a610863565b6103f8908561088e565b60128260ff16111561043757600061048a60128461075c565b60ff16905061049a81600a610863565b610433908561086f565b60405160a081016001600160401b03811182821017156104d457634e487b7160e01b600052604160045260246000fd5b60405290565b80151581146104e857600080fd5b50565b80356104f6816104da565b919050565b60006040828403121561050d57600080fd5b604080519081016001600160401b038111828210171561053d57634e487b7160e01b600052604160045260246000fd5b604052823581526020928301359281019290925250919050565b6001600160a01b03811681146104e857600080fd5b80356104f681610557565b60008060008060008060008789036101a081121561059457600080fd5b60a08112156105a257600080fd5b506105ab6104a4565b8835815260208901356020820152604089013560408201526060890135606082015260808901356105db816104da565b608082015296506105ef8960a08a016104fb565b95506105fe8960e08a016104fb565b945061060d610120890161056c565b935061061c61014089016104eb565b925061062b610160890161056c565b9150610180880135905092959891949750929550565b821515815260006020604081840152835180604085015260005b818110156106775785810183015185820160600152820161065b565b81811115610689576000606083870101525b50601f01601f191692909201606001949350505050565b600080604083850312156106b357600080fd5b82359150602083013560ff811681146106cb57600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156106fe576106fe6106d6565b500390565b60008219821115610716576107166106d6565b500190565b60006020828403121561072d57600080fd5b815161073881610557565b9392505050565b60006020828403121561075157600080fd5b8151610738816104da565b600060ff821660ff841680821015610776576107766106d6565b90039392505050565b600181815b808511156107ba5781600019048211156107a0576107a06106d6565b808516156107ad57918102915b93841c9390800290610784565b509250929050565b6000826107d157506001610437565b816107de57506000610437565b81600181146107f457600281146107fe5761081a565b6001915050610437565b60ff84111561080f5761080f6106d6565b50506001821b610437565b5060208310610133831016604e8410600b841016171561083d575081810a610437565b610847838361077f565b806000190482111561085b5761085b6106d6565b029392505050565b600061073883836107c2565b6000816000190483118215151615610889576108896106d6565b500290565b6000826108ab57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220d179affcd7d8bf338fe657e2e5e4d176fd74a1fc0d83d0200c1a8eb05ce04f1464736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
