Getting error when calling transaction using FireblocksWeb3Provider

Error: sending a transaction requires a signer (operation="sendTransaction", code=UNSUPPORTED_OPERATION, version=contracts/5.8.0)
{
  reason: 'sending a transaction requires a signer',
  code: 'UNSUPPORTED_OPERATION',
  operation: 'sendTransaction'
}

Code from - Ethereum Development

import { FireblocksWeb3Provider, ChainId, ApiBaseUrl } from "@fireblocks/fireblocks-web3-provider";
import * as ethers from "ethers"

const FIREBLOCKS_API_SECRET_PATH = "./fireblocks_secret.key";
const API_KEY = process.env.FIREBLOCKS_API_KEY;


const eip1193Provider = new FireblocksWeb3Provider({
    apiBaseUrl: ApiBaseUrl.Sandbox, // If using a sandbox workspace
    privateKey: FIREBLOCKS_API_SECRET_PATH,
    apiKey: API_KEY,
    vaultAccountIds: "0",
    chainId: ChainId.BSC_TEST,
})


const provider = new ethers.providers.Web3Provider(eip1193Provider);

const erc20ABI = [
    "function balanceOf(address) view returns (uint256)",
    "function allowance(address,address) view returns (uint256)",
    "function transfer(address,uint256) returns (bool)",
]

const tokenAddress = "0x..."
const userAddress = "0x..."
const toAddress = "0x..."


const erc20Contract = new ethers.Contract(tokenAddress, erc20ABI, provider);

async function main() {
    const balance = await erc20Contract.balanceOf(userAddress)
    console.log(balance)

    const transferTxn = await erc20Contract.transfer(toAddress, balance)
    await transferTxn.wait()
    console.log(transferTxn.hash)
}

main()