import { MagicTeeApiClients } from '@imtbl/generated-clients'; import { WalletSigner, GetUserFunction } from '../types'; /** * MagicTEESigner implements the WalletSigner interface for Magic TEE-based signing. * This signer delegates cryptographic operations to the Magic TEE service. */ export default class MagicTEESigner implements WalletSigner { private readonly getUser; private readonly magicTeeApiClient; private userWallet; private createWalletPromise; constructor(getUser: GetUserFunction, magicTeeApiClient: MagicTeeApiClients); private getUserWallet; /** * This method calls the createWallet endpoint. The user's wallet must be created before it can be used to sign messages. * The createWallet endpoint is idempotent, so it can be called multiple times without causing an error. * If a createWallet request is already in flight, return the existing promise. */ private createWallet; private getUserOrThrow; private static getHeaders; getAddress(): Promise<`0x${string}`>; signMessage(message: string | Uint8Array): Promise<`0x${string}`>; }