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>;
}
