Help needed to create a smart contract for bep 20

Core ERC-20 Functions

  1. balanceOf(address account) → uint256 - Returns the balance of a specific user.
  2. transfer(address recipient, uint256 amount) → bool - Transfers tokens from the sender to another user.
  3. approve(address spender, uint256 amount) → bool - Allows another address to spend tokens on behalf of the sender.
  4. allowance(address owner, address spender) → uint256 - Returns the remaining amount that a spender can transfer.
  5. transferFrom(address sender, address recipient, uint256 amount) → bool - Transfers tokens using an approved allowance.
  6. totalSupply() → uint256 - Returns the total token supply.
  7. burn(uint256 amount) - Burns a specific amount of tokens from the caller's balance.
  8. _mint(address to, uint256 amount) - Mints new tokens to a specified address (used for auto-minting).

:two: Burn & Auto-Minting

  1. _transfer(address sender, address recipient, uint256 amount) - Overrides standard transfer to apply 1% burn per transaction and auto-mint if supply drops below 80% of maxSupply.

:three: DAO Governance

  1. getVotes(address account) → uint256 - Returns the governance voting power based on token balance.
  2. _authorizeUpgrade(address newImplementation) - Ensures only the owner can authorize contract upgrades.

:four: Staking (Proof of Authority - PoA)

  1. requestStake(uint256 _amount) - Allows users to stake tokens.
  2. unstake(uint256 _amount) - Allows users to withdraw staked tokens.
  3. stakedBalance(address user) → uint256 - Returns the staking balance of a user.

:five: Escrow System

  1. depositEscrow(uint256 amount) - Users deposit tokens into an escrow account for secure transactions.
  2. releaseEscrow(address recipient, uint256 amount) - Only the owner can release escrow funds.
  3. escrowBalance(address user) → uint256 - Returns the escrow balance of a user.

:six: Bug Bounty System

  1. submitBug(string calldata _description) - Allows users to submit bug reports.
  2. _transfer(address(this), msg.sender, reward) - Automatically transfers 1000 TALN to bug reporters.

:seven: KYC Verification

  1. approveKYC(address user) - Only the owner can approve users for KYC verification.
  2. KYCApproved(address user) → bool - Returns whether a user is KYC-approved.

:eight: Cross-Chain Bridge Functions

  1. bridgeTokens(address destinationChain, uint256 amount) - Burns tokens and sends them cross-chain via LayerZero or Axelar.
  2. _burn(address sender, uint256 amount) - Handles burning before cross-chain transfers.

:nine: Emergency Mode (DAO-Controlled)

  1. triggerEmergency() - DAO-controlled function that pauses all transactions in case of an exploit.
  2. resumeOperations() - DAO-controlled function that resumes all paused transactions.

:keycap_ten: NFT Support (ERC-721)

  1. onERC721Received(address, address, uint256, bytes calldata) → bytes4 - Allows the contract to receive and manage NFTs (ERC-721).

:one::one: Uniswap Integration

  1. IUniswapV2Router02 public uniswapRouter; - Stores the Uniswap router for trading and liquidity provision.

:one::two: zkRollups Support

  1. zkRollupBalances(address user) → uint256 - Stores off-chain Layer 2 balances for zkRollups
  2. i can provide the smart contract i have work on but still missing some of the functions from above