@better-auth-ui/core
Version:
Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.
66 lines (65 loc) • 2 kB
TypeScript
export type SiweConnectedWallet = {
address: string;
chainId: number;
};
/** Adapts an injected wallet, Wagmi, RainbowKit, or another wallet client. */
export interface SiweWalletConnector {
readonly id: string;
readonly label: string;
connect(): Promise<SiweConnectedWallet>;
signMessage(input: {
address: string;
message: string;
}): Promise<string>;
}
export type Eip1193Request = {
method: string;
params?: readonly unknown[] | object;
};
export interface Eip1193Provider {
request(request: Eip1193Request): Promise<unknown>;
}
/** Creates a connector for EIP-1193 providers such as `window.ethereum`. */
export declare function createEip1193WalletConnector(options?: {
provider?: Eip1193Provider;
id?: string;
label?: string;
}): SiweWalletConnector;
export type SiweMessageInput = SiweConnectedWallet & {
domain: string;
uri: string;
nonce: string;
statement?: string;
issuedAt?: Date;
expirationTime?: Date;
notBefore?: Date;
requestId?: string;
resources?: string[];
};
/** Builds an ERC-4361 Sign-In with Ethereum message. */
export declare function createSiweMessage(input: SiweMessageInput): string;
export type SiweWalletAccount = {
id: string;
address: string;
chainId: number;
isPrimary: boolean;
createdAt: Date;
};
export type SiweWalletLinkChallenge = {
message: string;
};
export type SiweWalletLinkInput = SiweConnectedWallet & {
message: string;
signature: string;
};
/**
* Application-owned, server-backed wallet operations.
* Implementations must authorize every operation from the server session.
*/
export interface SiweWalletManager {
list(signal?: AbortSignal): Promise<SiweWalletAccount[]>;
createLinkChallenge(wallet: SiweConnectedWallet): Promise<SiweWalletLinkChallenge>;
link(input: SiweWalletLinkInput): Promise<void>;
unlink(walletId: string): Promise<void>;
setPrimary(walletId: string): Promise<void>;
}