@nfid/identitykit
Version:
A React library for adding wallet connections to dApps.
69 lines (68 loc) • 2.46 kB
TypeScript
import type { Signer } from "@slide-computer/signer";
import { type SignerStorage } from "@slide-computer/signer-storage";
import { AuthClientStorage } from "@dfinity/auth-client";
import { SubAccount } from "@dfinity/ledger-icp";
import { Principal } from "@dfinity/principal";
import { IdleManager, IdleManagerOptions } from "../timeout-managers/idle-manager";
export declare const STORAGE_KEY = "client";
export declare const STORAGE_CONNECTED_OWNER_KEY = "connected-owner";
export declare const STORAGE_CONNECTED_SUBACCOUNT_KEY = "connected-subaccount";
export interface IdleOptions extends IdleManagerOptions {
/**
* Disables idle functionality for {@link IdleManager}
* @default false
*/
disableIdle?: boolean;
/**
* Disables default idle behavior - call logout
* @default false
*/
disableDefaultIdleCallback?: boolean;
}
export interface SignerClientOptions {
signer: Signer;
/**
* Optional, used to generate random bytes
* @default uses browser/node Crypto by default
*/
crypto?: Pick<Crypto, "getRandomValues" | "randomUUID">;
/**
* Optional storage with get, set, and remove. Uses {@link IdbStorage} by default
*/
storage?: AuthClientStorage;
/**
* Options to handle idle timeouts
* @default after 30 minutes, invalidates the identity
*/
idleOptions?: IdleOptions;
derivationOrigin?: string;
onLogout?: () => Promise<unknown>;
}
export declare abstract class SignerClient {
protected options: SignerClientOptions;
protected idleManager: IdleManager | undefined;
protected storage: SignerStorage;
connectedUser: {
principal: Principal;
subAccount?: SubAccount;
} | undefined;
constructor(options: SignerClientOptions);
protected registerDefaultIdleCallback(): void;
protected logout(options?: {
returnTo?: string;
}): Promise<void>;
protected setConnectedUser(user: {
owner: string;
subAccount?: ArrayBuffer;
} | undefined): Promise<void>;
protected setConnectedUserToStorage(user: {
owner: string;
subAccount?: ArrayBuffer;
} | undefined): Promise<void>;
static shouldCheckIsUserConnected(): boolean;
protected getConnectedUserFromStorage(): Promise<{
owner: string;
subAccount?: ArrayBuffer;
} | undefined>;
protected get crypto(): Pick<Crypto, "getRandomValues" | "randomUUID">;
}