{
  "_format": "hh-sol-artifact-1",
  "contractName": "DeflatingERC20",
  "sourceName": "contracts/soma/SomaSwap/test/DeflatingERC20.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_totalSupply",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "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": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610b51380380610b5183398101604081905261002f916101e2565b604080518082018252601481527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c0909201909352805191012060035561011f3383610126565b505061021c565b61013f816000546101cd60201b6105231790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101709183906105236101cd821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906101c19085815260200190565b60405180910390a35050565b60006101d982846101fb565b90505b92915050565b6000602082840312156101f457600080fd5b5051919050565b808201808211156101dc57634e487b7160e01b600052601160045260246000fd5b6109268061022b6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101f4578063a9059cbb14610216578063d505accf14610229578063dd62ed3e1461023e57600080fd5b80633644e515146101ab57806370a08231146101b45780637ecebe00146101d457600080fd5b806306fdde03146100d4578063095ea7b31461011d57806318160ddd1461014057806323b872dd1461015757806330adf81f1461016a578063313ce56714610191575b600080fd5b610107604051806040016040528060148152602001732232b33630ba34b733902a32b9ba102a37b5b2b760611b81525081565b6040516101149190610711565b60405180910390f35b61013061012b36600461077b565b610269565b6040519015158152602001610114565b61014960005481565b604051908152602001610114565b6101306101653660046107a5565b610280565b6101497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610199601281565b60405160ff9091168152602001610114565b61014960035481565b6101496101c23660046107e1565b60016020526000908152604090205481565b6101496101e23660046107e1565b60046020526000908152604090205481565b6101076040518060400160405280600381526020016211151560ea1b81525081565b61013061022436600461077b565b610314565b61023c6102373660046107fc565b610321565b005b61014961024c36600461086f565b600260209081526000928352604080842090915290825290205481565b6000610276338484610536565b5060015b92915050565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146102ff576001600160a01b03841660009081526002602090815260408083203384529091529020546102da9083610597565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61030a8484846105a3565b5060019392505050565b60006102763384846105a3565b428410156103605760405162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b60448201526064015b60405180910390fd5b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876103b3836108b8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161042c92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610497573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906104cd5750886001600160a01b0316816001600160a01b0316145b61050d5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b6044820152606401610357565b610518898989610536565b505050505050505050565b600061052f82846108d1565b9392505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052f82846108e4565b60006105b06064836108f7565b90506105bc8482610680565b60006105c88383610597565b6001600160a01b0386166000908152600160205260409020549091506105ee9082610597565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461061d9082610523565b6001600160a01b0380861660008181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106719085815260200190565b60405180910390a35050505050565b6001600160a01b0382166000908152600160205260409020546106a39082610597565b6001600160a01b038316600090815260016020526040812091909155546106ca9082610597565b60009081556040518281526001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b8181101561073e57858101830151858201604001528201610722565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077657600080fd5b919050565b6000806040838503121561078e57600080fd5b6107978361075f565b946020939093013593505050565b6000806000606084860312156107ba57600080fd5b6107c38461075f565b92506107d16020850161075f565b9150604084013590509250925092565b6000602082840312156107f357600080fd5b61052f8261075f565b600080600080600080600060e0888a03121561081757600080fd5b6108208861075f565b965061082e6020890161075f565b95506040880135945060608801359350608088013560ff8116811461085257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561088257600080fd5b61088b8361075f565b91506108996020840161075f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000600182016108ca576108ca6108a2565b5060010190565b8082018082111561027a5761027a6108a2565b8181038181111561027a5761027a6108a2565b60008261091457634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101f4578063a9059cbb14610216578063d505accf14610229578063dd62ed3e1461023e57600080fd5b80633644e515146101ab57806370a08231146101b45780637ecebe00146101d457600080fd5b806306fdde03146100d4578063095ea7b31461011d57806318160ddd1461014057806323b872dd1461015757806330adf81f1461016a578063313ce56714610191575b600080fd5b610107604051806040016040528060148152602001732232b33630ba34b733902a32b9ba102a37b5b2b760611b81525081565b6040516101149190610711565b60405180910390f35b61013061012b36600461077b565b610269565b6040519015158152602001610114565b61014960005481565b604051908152602001610114565b6101306101653660046107a5565b610280565b6101497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610199601281565b60405160ff9091168152602001610114565b61014960035481565b6101496101c23660046107e1565b60016020526000908152604090205481565b6101496101e23660046107e1565b60046020526000908152604090205481565b6101076040518060400160405280600381526020016211151560ea1b81525081565b61013061022436600461077b565b610314565b61023c6102373660046107fc565b610321565b005b61014961024c36600461086f565b600260209081526000928352604080842090915290825290205481565b6000610276338484610536565b5060015b92915050565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146102ff576001600160a01b03841660009081526002602090815260408083203384529091529020546102da9083610597565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61030a8484846105a3565b5060019392505050565b60006102763384846105a3565b428410156103605760405162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b60448201526064015b60405180910390fd5b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876103b3836108b8565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161042c92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610497573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906104cd5750886001600160a01b0316816001600160a01b0316145b61050d5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b6044820152606401610357565b610518898989610536565b505050505050505050565b600061052f82846108d1565b9392505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052f82846108e4565b60006105b06064836108f7565b90506105bc8482610680565b60006105c88383610597565b6001600160a01b0386166000908152600160205260409020549091506105ee9082610597565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461061d9082610523565b6001600160a01b0380861660008181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106719085815260200190565b60405180910390a35050505050565b6001600160a01b0382166000908152600160205260409020546106a39082610597565b6001600160a01b038316600090815260016020526040812091909155546106ca9082610597565b60009081556040518281526001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b8181101561073e57858101830151858201604001528201610722565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077657600080fd5b919050565b6000806040838503121561078e57600080fd5b6107978361075f565b946020939093013593505050565b6000806000606084860312156107ba57600080fd5b6107c38461075f565b92506107d16020850161075f565b9150604084013590509250925092565b6000602082840312156107f357600080fd5b61052f8261075f565b600080600080600080600060e0888a03121561081757600080fd5b6108208861075f565b965061082e6020890161075f565b95506040880135945060608801359350608088013560ff8116811461085257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561088257600080fd5b61088b8361075f565b91506108996020840161075f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000600182016108ca576108ca6108a2565b5060010190565b8082018082111561027a5761027a6108a2565b8181038181111561027a5761027a6108a2565b60008261091457634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
