{
  "contractName": "TransferStructs",
  "abi": [],
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582049f74fb084e826aa2be5b5b650785c60e596aa44d17c52fb0180dfd32144df190029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582049f74fb084e826aa2be5b5b650785c60e596aa44d17c52fb0180dfd32144df190029",
  "sourceMap": "88:692:73:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "88:692:73:-;;;;;;;;",
  "source": "pragma solidity ^0.4.19;\n\nimport \"@digix/solidity-core-libraries/contracts/Types.sol\";\n\nlibrary TransferStructs {\n  using Types for Types.MutableUint;\n  using Types for Types.MutableTimestamp;\n\n  struct User {\n    address account;\n    Types.MutableUint balance;\n    bool no_transfer_fee;\n  }\n\n  struct Spender {\n    address account;\n    Types.MutableUint allowance;\n  }\n\n  struct Config {\n    Types.MutableUint collector_balance;\n    address collector;\n    uint256 base;\n    uint256 rate;\n    bool global_transfer_fee_disabled;\n    uint256 minimum_transfer_amount;\n  }\n\n  struct Transfer {\n    User sender;\n    User recipient;\n    Spender spender;\n    Config config;\n    Types.MutableUint received_amount;\n    uint256 sent_amount;\n    uint256 fee;\n    bool is_transfer_from;\n  }\n}\n",
  "sourcePath": "@digix/lite-dgx-contract/contracts/libs/TransferStructs.sol",
  "ast": {
    "absolutePath": "@digix/lite-dgx-contract/contracts/libs/TransferStructs.sol",
    "exportedSymbols": {
      "TransferStructs": [
        21293
      ]
    },
    "id": 21294,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21243,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:73"
      },
      {
        "absolutePath": "@digix/solidity-core-libraries/contracts/Types.sol",
        "file": "@digix/solidity-core-libraries/contracts/Types.sol",
        "id": 21244,
        "nodeType": "ImportDirective",
        "scope": 21294,
        "sourceUnit": 25518,
        "src": "26:60:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 21293,
        "linearizedBaseContracts": [
          21293
        ],
        "name": "TransferStructs",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21247,
            "libraryName": {
              "contractScope": null,
              "id": 21245,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25517,
              "src": "122:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$25517",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "116:34:73",
            "typeName": {
              "contractScope": null,
              "id": 21246,
              "name": "Types.MutableUint",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25204,
              "src": "132:17:73",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                "typeString": "struct Types.MutableUint"
              }
            }
          },
          {
            "id": 21250,
            "libraryName": {
              "contractScope": null,
              "id": 21248,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25517,
              "src": "159:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$25517",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "153:39:73",
            "typeName": {
              "contractScope": null,
              "id": 21249,
              "name": "Types.MutableTimestamp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25209,
              "src": "169:22:73",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MutableTimestamp_$25209_storage_ptr",
                "typeString": "struct Types.MutableTimestamp"
              }
            }
          },
          {
            "canonicalName": "TransferStructs.User",
            "id": 21257,
            "members": [
              {
                "constant": false,
                "id": 21252,
                "name": "account",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "214:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21251,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "214:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21254,
                "name": "balance",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "235:25:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21253,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "235:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21256,
                "name": "no_transfer_fee",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "266:20:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21255,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "266:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "196:95:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Spender",
            "id": 21262,
            "members": [
              {
                "constant": false,
                "id": 21259,
                "name": "account",
                "nodeType": "VariableDeclaration",
                "scope": 21262,
                "src": "316:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21258,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "316:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21261,
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "scope": 21262,
                "src": "337:27:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21260,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "337:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Spender",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "295:74:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Config",
            "id": 21275,
            "members": [
              {
                "constant": false,
                "id": 21264,
                "name": "collector_balance",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "393:35:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21263,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "393:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21266,
                "name": "collector",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "434:17:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21265,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "434:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21268,
                "name": "base",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "457:12:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21267,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "457:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21270,
                "name": "rate",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "475:12:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21269,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "475:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21272,
                "name": "global_transfer_fee_disabled",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "493:33:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21271,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "493:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21274,
                "name": "minimum_transfer_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "532:31:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21273,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "532:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Config",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "373:195:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Transfer",
            "id": 21292,
            "members": [
              {
                "constant": false,
                "id": 21277,
                "name": "sender",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "594:11:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                  "typeString": "struct TransferStructs.User"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21276,
                  "name": "User",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21257,
                  "src": "594:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                    "typeString": "struct TransferStructs.User"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21279,
                "name": "recipient",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "611:14:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                  "typeString": "struct TransferStructs.User"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21278,
                  "name": "User",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21257,
                  "src": "611:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                    "typeString": "struct TransferStructs.User"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21281,
                "name": "spender",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "631:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Spender_$21262_storage_ptr",
                  "typeString": "struct TransferStructs.Spender"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21280,
                  "name": "Spender",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21262,
                  "src": "631:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Spender_$21262_storage_ptr",
                    "typeString": "struct TransferStructs.Spender"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21283,
                "name": "config",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "652:13:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Config_$21275_storage_ptr",
                  "typeString": "struct TransferStructs.Config"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21282,
                  "name": "Config",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21275,
                  "src": "652:6:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Config_$21275_storage_ptr",
                    "typeString": "struct TransferStructs.Config"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21285,
                "name": "received_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "671:33:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21284,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "671:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21287,
                "name": "sent_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "710:19:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21286,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "710:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21289,
                "name": "fee",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "735:11:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21288,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "735:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21291,
                "name": "is_transfer_from",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "752:21:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21290,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "752:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Transfer",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "572:206:73",
            "visibility": "public"
          }
        ],
        "scope": 21294,
        "src": "88:692:73"
      }
    ],
    "src": "0:781:73"
  },
  "legacyAST": {
    "absolutePath": "@digix/lite-dgx-contract/contracts/libs/TransferStructs.sol",
    "exportedSymbols": {
      "TransferStructs": [
        21293
      ]
    },
    "id": 21294,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21243,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:73"
      },
      {
        "absolutePath": "@digix/solidity-core-libraries/contracts/Types.sol",
        "file": "@digix/solidity-core-libraries/contracts/Types.sol",
        "id": 21244,
        "nodeType": "ImportDirective",
        "scope": 21294,
        "sourceUnit": 25518,
        "src": "26:60:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 21293,
        "linearizedBaseContracts": [
          21293
        ],
        "name": "TransferStructs",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21247,
            "libraryName": {
              "contractScope": null,
              "id": 21245,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25517,
              "src": "122:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$25517",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "116:34:73",
            "typeName": {
              "contractScope": null,
              "id": 21246,
              "name": "Types.MutableUint",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25204,
              "src": "132:17:73",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                "typeString": "struct Types.MutableUint"
              }
            }
          },
          {
            "id": 21250,
            "libraryName": {
              "contractScope": null,
              "id": 21248,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25517,
              "src": "159:5:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$25517",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "153:39:73",
            "typeName": {
              "contractScope": null,
              "id": 21249,
              "name": "Types.MutableTimestamp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25209,
              "src": "169:22:73",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MutableTimestamp_$25209_storage_ptr",
                "typeString": "struct Types.MutableTimestamp"
              }
            }
          },
          {
            "canonicalName": "TransferStructs.User",
            "id": 21257,
            "members": [
              {
                "constant": false,
                "id": 21252,
                "name": "account",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "214:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21251,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "214:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21254,
                "name": "balance",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "235:25:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21253,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "235:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21256,
                "name": "no_transfer_fee",
                "nodeType": "VariableDeclaration",
                "scope": 21257,
                "src": "266:20:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21255,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "266:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "196:95:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Spender",
            "id": 21262,
            "members": [
              {
                "constant": false,
                "id": 21259,
                "name": "account",
                "nodeType": "VariableDeclaration",
                "scope": 21262,
                "src": "316:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21258,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "316:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21261,
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "scope": 21262,
                "src": "337:27:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21260,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "337:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Spender",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "295:74:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Config",
            "id": 21275,
            "members": [
              {
                "constant": false,
                "id": 21264,
                "name": "collector_balance",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "393:35:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21263,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "393:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21266,
                "name": "collector",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "434:17:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21265,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "434:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21268,
                "name": "base",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "457:12:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21267,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "457:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21270,
                "name": "rate",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "475:12:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21269,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "475:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21272,
                "name": "global_transfer_fee_disabled",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "493:33:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21271,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "493:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21274,
                "name": "minimum_transfer_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21275,
                "src": "532:31:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21273,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "532:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Config",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "373:195:73",
            "visibility": "public"
          },
          {
            "canonicalName": "TransferStructs.Transfer",
            "id": 21292,
            "members": [
              {
                "constant": false,
                "id": 21277,
                "name": "sender",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "594:11:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                  "typeString": "struct TransferStructs.User"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21276,
                  "name": "User",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21257,
                  "src": "594:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                    "typeString": "struct TransferStructs.User"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21279,
                "name": "recipient",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "611:14:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                  "typeString": "struct TransferStructs.User"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21278,
                  "name": "User",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21257,
                  "src": "611:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_User_$21257_storage_ptr",
                    "typeString": "struct TransferStructs.User"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21281,
                "name": "spender",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "631:15:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Spender_$21262_storage_ptr",
                  "typeString": "struct TransferStructs.Spender"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21280,
                  "name": "Spender",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21262,
                  "src": "631:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Spender_$21262_storage_ptr",
                    "typeString": "struct TransferStructs.Spender"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21283,
                "name": "config",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "652:13:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Config_$21275_storage_ptr",
                  "typeString": "struct TransferStructs.Config"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21282,
                  "name": "Config",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 21275,
                  "src": "652:6:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Config_$21275_storage_ptr",
                    "typeString": "struct TransferStructs.Config"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21285,
                "name": "received_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "671:33:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                  "typeString": "struct Types.MutableUint"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 21284,
                  "name": "Types.MutableUint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 25204,
                  "src": "671:17:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MutableUint_$25204_storage_ptr",
                    "typeString": "struct Types.MutableUint"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21287,
                "name": "sent_amount",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "710:19:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21286,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "710:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21289,
                "name": "fee",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "735:11:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21288,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "735:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21291,
                "name": "is_transfer_from",
                "nodeType": "VariableDeclaration",
                "scope": 21292,
                "src": "752:21:73",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 21290,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "752:4:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Transfer",
            "nodeType": "StructDefinition",
            "scope": 21293,
            "src": "572:206:73",
            "visibility": "public"
          }
        ],
        "scope": 21294,
        "src": "88:692:73"
      }
    ],
    "src": "0:781:73"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-13T02:38:46.136Z"
}