@alchemy/aa-core
Version:
viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts
29 lines (26 loc) • 947 B
text/typescript
import type { Chain, Client, Hex, SignableMessage, Transport } from "viem";
import type {
GetAccountParameter,
SmartContractAccount,
} from "../../account/smartContractAccount";
import { AccountNotFoundError } from "../../errors/account.js";
export type SignMessageParameters<
TAccount extends SmartContractAccount | undefined =
| SmartContractAccount
| undefined
> = { message: SignableMessage } & GetAccountParameter<TAccount>;
export const signMessage: <
TTransport extends Transport = Transport,
TChain extends Chain | undefined = Chain | undefined,
TAccount extends SmartContractAccount | undefined =
| SmartContractAccount
| undefined
>(
client: Client<TTransport, TChain, TAccount>,
args: SignMessageParameters<TAccount>
) => Promise<Hex> = async (client, { account = client.account, message }) => {
if (!account) {
throw new AccountNotFoundError();
}
return account.signMessage({ message });
};