mirror of
https://github.com/luxfhe/example-confidential-contracts.git
synced 2026-10-30 18:13:34 +00:00
1 line
57 KiB
JSON
1 line
57 KiB
JSON
{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfIsIndicator","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"confidentialBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"indicatorTick","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isFherc20","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"resetIndicatedBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"until","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ConfidentialTransfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value_hash","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"holder","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"until","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"permitOwner","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"permitSpender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch","inputs":[{"name":"inValueHash","type":"uint256","internalType":"uint256"},{"name":"permitValueHash","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FHERC20IncompatibleFunction","inputs":[]},{"type":"error","name":"FHERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedSpender","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount","inputs":[{"name":"value","type":"uint256","internalType":"euint64"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfIsIndicator()":"a415f269","confidentialBalanceOf(address)":"344ff101","confidentialTotalSupply()":"54095227","confidentialTransfer(address,(uint256,uint8,uint8,bytes))":"a794ee95","confidentialTransfer(address,uint256)":"fe3f670d","confidentialTransferAndCall(address,(uint256,uint8,uint8,bytes),bytes)":"d174999a","confidentialTransferAndCall(address,uint256,bytes)":"a9fe9959","confidentialTransferFrom(address,address,(uint256,uint8,uint8,bytes))":"7edb0e7d","confidentialTransferFrom(address,address,uint256)":"ca49d7cd","confidentialTransferFromAndCall(address,address,(uint256,uint8,uint8,bytes),bytes)":"fca114d6","confidentialTransferFromAndCall(address,address,uint256,bytes)":"9645edd4","decimals()":"313ce567","indicatorTick()":"490690f3","isFherc20()":"365ac002","isOperator(address,address)":"b6363cf2","name()":"06fdde03","resetIndicatedBalance()":"b4b20190","setOperator(address,uint48)":"d4febb96","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitOwner\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromOwnerMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitSpender\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromSpenderMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inValueHash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permitValueHash\",\"type\":\"uint256\"}],\"name\":\"FHERC20ConfidentialTransferFromValueHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FHERC20IncompatibleFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"FHERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedUseOfEncryptedAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value_hash\",\"type\":\"uint256\"}],\"name\":\"ConfidentialTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balanceOfIsIndicator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"confidentialBalanceOf\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confidentialTotalSupply\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indicatorTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFherc20\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetIndicatedBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications. Note: This FHERC20 does not include FHE operations, and is intended to decouple the frontend work from the active LuxFHE (FHE Coprocessor) work during development and auditing.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FHERC20ConfidentialTransferFromOwnerMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"permitOwner\":\"token owner included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20ConfidentialTransferFromSpenderMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `to` and `permit.spender` don't match\",\"params\":{\"permitSpender\":\"token receiver included in FHERC20_EIP712_Permit struct.\",\"to\":\"ConfidentialTransferFrom param.\"}}],\"FHERC20ConfidentialTransferFromValueHashMismatch(uint256,uint256)\":[{\"details\":\"ConfidentialTransferFrom `value` greater than `permit.value_hash` dont match (permit doesn't match Euint64)\",\"params\":{\"inValueHash\":\"ConfidentialTransferFrom param inValue.ctHash.\",\"permitValueHash\":\"token amount hash included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20IncompatibleFunction()\":[{\"details\":\"Indicates an incompatible function being called. Prevents unintentional treatment of an FHERC20 as a cleartext ERC20\"}],\"FHERC20InvalidReceiver(address)\":[{\"details\":\"The given receiver `receiver` is invalid for transfers.\"}],\"FHERC20UnauthorizedSpender(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"spender\":\"operator authorized to spent tokens from.\"}}],\"FHERC20UnauthorizedUseOfEncryptedAmount(uint256,address)\":[{\"details\":\"The caller `owner` does not have access to the encrypted value `value`.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ConfidentialTransfer(address,address,uint256)\":{\"details\":\"Emitted when `value_hash` encrypted tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"OperatorSet(address,address,uint48)\":{\"details\":\"Emitted when the expiration timestamp for an operator `operator` is updated for a given `holder`. The operator may move any amount of tokens on behalf of the holder until the timestamp `until`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"balanceOf(address)\":{\"details\":\"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token.\"},\"balanceOfIsIndicator()\":{\"details\":\"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001.\"},\"confidentialBalanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)\"},\"confidentialTotalSupply()\":{\"details\":\"Returns the encrypted total supply.\"},\"confidentialTransfer(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality.\"},\"confidentialTransfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"indicatorTick()\":{\"details\":\"Returns the true size of the indicator tick\"},\"isFherc20()\":{\"details\":\"Returns true if the token is a FHERC20.\"},\"isOperator(address,address)\":{\"details\":\"Returns true if `spender` is currently an operator for `holder`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"setOperator(address,uint48)\":{\"details\":\"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. Returns the indicated total supply.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FHERC20.sol\":\"FHERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHERC20.sol\":{\"keccak256\":\"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5\",\"dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv\"]},\"contracts/interfaces/IFHERC20.sol\":{\"keccak256\":\"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d\",\"dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4\"]},\"contracts/interfaces/IFHERC20Errors.sol\":{\"keccak256\":\"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371\",\"dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW\"]},\"contracts/interfaces/IFHERC20Receiver.sol\":{\"keccak256\":\"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb\",\"dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS\"]},\"contracts/utils/FHERC20Utils.sol\":{\"keccak256\":\"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5\",\"dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7\"]},\"node_modules/@luxfi/contracts/fhe/FHE.sol\":{\"keccak256\":\"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9\",\"dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn\"]},\"node_modules/@luxfi/contracts/fhe/FHECommon.sol\":{\"keccak256\":\"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37\",\"dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY\"]},\"node_modules/@luxfi/contracts/fhe/FHENetwork.sol\":{\"keccak256\":\"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f\",\"dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF\"]},\"node_modules/@luxfi/contracts/fhe/FHETypes.sol\":{\"keccak256\":\"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264\",\"dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn\"]},\"node_modules/@luxfi/contracts/fhe/IFHE.sol\":{\"keccak256\":\"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc\",\"dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"permitOwner","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"permitSpender","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch"},{"inputs":[{"internalType":"uint256","name":"inValueHash","type":"uint256"},{"internalType":"uint256","name":"permitValueHash","type":"uint256"}],"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch"},{"inputs":[],"type":"error","name":"FHERC20IncompatibleFunction"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"FHERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"FHERC20UnauthorizedSpender"},{"inputs":[{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value_hash","type":"uint256","indexed":false}],"type":"event","name":"ConfidentialTransfer","anonymous":false},{"inputs":[{"internalType":"address","name":"holder","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint48","name":"until","type":"uint48","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"balanceOfIsIndicator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"confidentialBalanceOf","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"confidentialTotalSupply","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indicatorTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isFherc20","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetIndicatedBalance"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"until","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"approve(address,uint256)":{"details":"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"balanceOf(address)":{"details":"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token."},"balanceOfIsIndicator()":{"details":"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001."},"confidentialBalanceOf(address)":{"details":"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)"},"confidentialTotalSupply()":{"details":"Returns the encrypted total supply."},"confidentialTransfer(address,(uint256,uint8,uint8,bytes))":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality."},"confidentialTransfer(address,uint256)":{"details":"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"indicatorTick()":{"details":"Returns the true size of the indicator tick"},"isFherc20()":{"details":"Returns true if the token is a FHERC20."},"isOperator(address,address)":{"details":"Returns true if `spender` is currently an operator for `holder`."},"name()":{"details":"Returns the name of the token."},"setOperator(address,uint48)":{"details":"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}. Returns the indicated total supply."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/FHERC20.sol":"FHERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHERC20.sol":{"keccak256":"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349","urls":["bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5","dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv"],"license":"MIT"},"contracts/interfaces/IFHERC20.sol":{"keccak256":"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6","urls":["bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d","dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4"],"license":"MIT"},"contracts/interfaces/IFHERC20Errors.sol":{"keccak256":"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef","urls":["bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371","dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW"],"license":"MIT"},"contracts/interfaces/IFHERC20Receiver.sol":{"keccak256":"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741","urls":["bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb","dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS"],"license":"MIT"},"contracts/utils/FHERC20Utils.sol":{"keccak256":"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947","urls":["bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5","dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHE.sol":{"keccak256":"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424","urls":["bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9","dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHECommon.sol":{"keccak256":"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01","urls":["bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37","dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHENetwork.sol":{"keccak256":"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337","urls":["bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f","dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHETypes.sol":{"keccak256":"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445","urls":["bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264","dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/IFHE.sol":{"keccak256":"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4","urls":["bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc","dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994","urls":["bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c","dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":0} |