[
  {
    "path": ".gitignore",
    "content": "node_modules\nbuild"
  },
  {
    "path": "contracts/LaqiraTokenFaucet.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IBEP20 {\n    function transfer(address recipient, uint256 amount) external returns (bool);\n}\n\ncontract LaqiraTokenFaucet {\n    address private owner;\n    address private laqiraTokenAddress;\n    uint256 private withdrawalAmount;\n    mapping(address => uint256) private withdrawTimestamp;\n    \n    constructor(address _laqiraToken) {\n        owner = msg.sender;\n        laqiraTokenAddress = _laqiraToken;\n        withdrawalAmount = 10000000000000000000000;\n    }\n\n    function setWithdrawalAmount(uint256 _amount) public onlyOwner {\n        withdrawalAmount = _amount;\n    }\n\n    function getWithdrawalAmount() public view returns (uint256) {\n        return withdrawalAmount;\n    }\n\n    function transferAnyBEP20() public returns (bool) {\n        require(block.timestamp - withdrawTimestamp[msg.sender] > 1 days, 'You have reached daily withdrawal limit');\n        IBEP20(laqiraTokenAddress).transfer(msg.sender, withdrawalAmount);\n        withdrawTimestamp[msg.sender] = block.timestamp;\n        return true;\n    }\n\n    function getLaqiraTokenAddress() public view returns (address) {\n        return laqiraTokenAddress;\n    }\n\n    function getUserTimestamp() public view returns (uint256) {\n        return withdrawTimestamp[msg.sender];\n    }\n\n    modifier onlyOwner {\n        require(msg.sender == owner);\n        _;\n    }\n}"
  },
  {
    "path": "contracts/Migrations.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.4.22 <0.9.0;\n\ncontract Migrations {\n  address public owner = msg.sender;\n  uint public last_completed_migration;\n\n  modifier restricted() {\n    require(\n      msg.sender == owner,\n      \"This function is restricted to the contract's owner\"\n    );\n    _;\n  }\n\n  function setCompleted(uint completed) public restricted {\n    last_completed_migration = completed;\n  }\n}\n"
  },
  {
    "path": "migrations/1_initial_migration.js",
    "content": "const Migrations = artifacts.require(\"Migrations\");\n\nmodule.exports = function (deployer) {\n  deployer.deploy(Migrations);\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"LaqiraTokenFaucet\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\"\n}\n"
  },
  {
    "path": "test/.gitkeep",
    "content": ""
  },
  {
    "path": "truffle-config.js",
    "content": "/**\n * Use this file to configure your truffle project. It's seeded with some\n * common settings for different networks and features like migrations,\n * compilation and testing. Uncomment the ones you need or modify\n * them to suit your project as necessary.\n *\n * More information about configuration can be found at:\n *\n * trufflesuite.com/docs/advanced/configuration\n *\n * To deploy via Infura you'll need a wallet provider (like @truffle/hdwallet-provider)\n * to sign your transactions before they're sent to a remote public node. Infura accounts\n * are available for free at: infura.io/register.\n *\n * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate\n * public/private key pairs. If you're publishing your code to GitHub make sure you load this\n * phrase from a file you've .gitignored so it doesn't accidentally become public.\n *\n */\n\n// const HDWalletProvider = require('@truffle/hdwallet-provider');\n//\n// const fs = require('fs');\n// const mnemonic = fs.readFileSync(\".secret\").toString().trim();\n\nmodule.exports = {\n  /**\n   * Networks define how you connect to your ethereum client and let you set the\n   * defaults web3 uses to send transactions. If you don't specify one truffle\n   * will spin up a development blockchain for you on port 9545 when you\n   * run `develop` or `test`. You can ask a truffle command to use a specific\n   * network from the command line, e.g\n   *\n   * $ truffle test --network <network-name>\n   */\n\n  networks: {\n    // Useful for testing. The `development` name is special - truffle uses it by default\n    // if it's defined here and no other network is specified at the command line.\n    // You should run a client (like ganache-cli, geth or parity) in a separate terminal\n    // tab if you use this network and you must also set the `host`, `port` and `network_id`\n    // options below to some value.\n    //\n    // development: {\n    //  host: \"127.0.0.1\",     // Localhost (default: none)\n    //  port: 8545,            // Standard Ethereum port (default: none)\n    //  network_id: \"*\",       // Any network (default: none)\n    // },\n    // Another network with more advanced options...\n    // advanced: {\n    // port: 8777,             // Custom port\n    // network_id: 1342,       // Custom network\n    // gas: 8500000,           // Gas sent with each transaction (default: ~6700000)\n    // gasPrice: 20000000000,  // 20 gwei (in wei) (default: 100 gwei)\n    // from: <address>,        // Account to send txs from (default: accounts[0])\n    // websocket: true        // Enable EventEmitter interface for web3 (default: false)\n    // },\n    // Useful for deploying to a public network.\n    // NB: It's important to wrap the provider as a function.\n    // ropsten: {\n    // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),\n    // network_id: 3,       // Ropsten's id\n    // gas: 5500000,        // Ropsten has a lower block limit than mainnet\n    // confirmations: 2,    // # of confs to wait between deployments. (default: 0)\n    // timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)\n    // skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )\n    // },\n    // Useful for private networks\n    // private: {\n    // provider: () => new HDWalletProvider(mnemonic, `https://network.io`),\n    // network_id: 2111,   // This network is yours, in the cloud.\n    // production: true    // Treats this network as if it was a public net. (default: false)\n    // }\n  },\n\n  // Set default mocha options here, use special reporters etc.\n  mocha: {\n    // timeout: 100000\n  },\n\n  // Configure your compilers\n  compilers: {\n    solc: {\n      version: \"0.8.0\",    // Fetch exact version from solc-bin (default: truffle's version)\n      // docker: true,        // Use \"0.5.1\" you've installed locally with docker (default: false)\n      // settings: {          // See the solidity docs for advice about optimization and evmVersion\n      //  optimizer: {\n      //    enabled: false,\n      //    runs: 200\n      //  },\n      //  evmVersion: \"byzantium\"\n      // }\n    }\n  },\n\n  // Truffle DB is currently disabled by default; to enable it, change enabled:\n  // false to enabled: true. The default storage location can also be\n  // overridden by specifying the adapter settings, as shown in the commented code below.\n  //\n  // NOTE: It is not possible to migrate your contracts to truffle DB and you should\n  // make a backup of your artifacts to a safe location before enabling this feature.\n  //\n  // After you backed up your artifacts you can utilize db by running migrate as follows: \n  // $ truffle migrate --reset --compile-all\n  //\n  // db: {\n    // enabled: false,\n    // host: \"127.0.0.1\",\n    // adapter: {\n    //   name: \"sqlite\",\n    //   settings: {\n    //     directory: \".db\"\n    //   }\n    // }\n  // }\n};\n"
  }
]