type Web3ButtonProps<TActionFn extends ActionFn> = { action: TActionFn; connectWalletProps: Omit<ConnectWalletProps, "detailsButton">; contractAbi: ContractInterface; contractAddress: string; isDisabled: boolean; onError: (error: Error) => void; onSubmit: () => void; onSuccess: (result: Awaited<ReturnType<TActionFn>>) => void; theme: ThemeType; };