//SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;



contract WCABulkTransferTokens is Ownable {
	string public constant version = "0.1";

	IERC20 public WCAToken;

	constructor(address _WCAToken) {
		WCAToken = IERC20(_WCAToken);
	}

	// Setters
	function setWCAToken(address _WCAToken) external onlyOwner {
		WCAToken = IERC20(_WCAToken);
	}

	// Actions
	function bulkTransfer(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
		require(addresses.length == amounts.length, "Arrays must be the same length");
		for (uint256 i = 0; i < addresses.length; ++i) {
			WCAToken.transfer(addresses[i], amounts[i]);
		}
	}

	// Withdraw
	function withdraw() external onlyOwner {
		WCAToken.transfer(msg.sender, WCAToken.balanceOf(address(this)));
	}
}
[{"inputs":[{"internalType":"address","name":"_WCAToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"WCAToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_WCAToken","type":"address"}],"name":"setWCAToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]