import React, { useState, useEffect, Fragment } from 'react'; import { PluginElementContext } from '@burner-wallet/types'; const ContractWalletSettings: React.FC = ({ BurnerComponents, actions, accounts }) => { const [_updateVal, _update] = useState(false); const [isEnabled, setIsEnabled] = useState(actions.callSigner('isEnabled', 'contract') as unknown as boolean); const [selected, setSelected] = useState(0); const [overrideAccount, setOverrideAccount] = useState(accounts[accounts.length - 1]); const update = () => _update(!_updateVal); const contractAccounts = accounts.filter((account: string) => actions.canCallSigner('isContractWallet', account)); const toggle = async () => { await actions.callSigner(isEnabled ? 'disable' : 'enable', 'contract'); setIsEnabled(!isEnabled); }; const addSigner = async () => { await actions.callSigner('setSignerOverride', contractAccounts[selected], overrideAccount); update(); }; const { Button } = BurnerComponents; return (

Contract Wallet

This wallet is using counterfactual contract wallets, which allows Gas Station Network {} integration, multiple transaction signers, metatransactions, and more!

{isEnabled && (
Contract wallets:
    {contractAccounts.map((account: string, i: number) => (
  • setSelected(i)} >
    {account}
    Owner: {actions.callSigner('getOwner', account)}
    {actions.callSigner('getSignerOverride', account) && (
    Override: {actions.callSigner('getSignerOverride', account)}
    )}
  • ))}
Set Override Signer
)}
); }; export default ContractWalletSettings;