@snowflake-so/safe-saber-walletkit
Version:
Snowflake Safe forked version of @saberhq/use-solana package. Used for integration purpose.
50 lines (49 loc) • 1.92 kB
TypeScript
import type { Network } from '@saberhq/solana-contrib';
import type { PublicKey } from '@solana/web3.js';
import type { WalletAdapter } from '../adapters/types';
import type { UseSolanaError } from '../error';
import type { WalletProviderInfo, WalletProviderMap, WalletTypeEnum } from '../providers';
import type { StorageAdapter } from '../storage';
/**
* Wallet-related information.
*/
export interface UseWallet<WalletType extends WalletTypeEnum<WalletType>, Connected extends boolean = boolean> {
/**
* Wallet.
*/
wallet?: WalletAdapter<Connected>;
/**
* Wallet public key.
*/
publicKey: Connected extends true ? PublicKey : undefined;
/**
* Information about the wallet used.
*/
walletProviderInfo?: WalletProviderInfo;
/**
* Whether the provider is switching to a new wallet.
*/
walletActivating: boolean;
/**
* Whether or not the wallet is connected.
*/
connected: Connected;
/**
* Activates a new wallet.
*/
activate: (walletType: WalletType[keyof WalletType], walletArgs?: Record<string, unknown>) => Promise<void>;
/**
* Disconnects the wallet and prevents auto-reconnect.
*/
disconnect: () => Promise<void>;
}
export interface UseWalletArgs<WalletType extends WalletTypeEnum<WalletType>> {
onConnect: (wallet: WalletAdapter<true>, provider: WalletProviderInfo) => void;
onDisconnect: (wallet: WalletAdapter<false>, provider: WalletProviderInfo) => void;
onError: (err: UseSolanaError) => void;
network: Network;
endpoint: string;
storageAdapter: StorageAdapter;
walletProviders: WalletProviderMap<WalletType>;
}
export declare const useWalletInternal: <WalletType extends WalletTypeEnum<WalletType>>({ onConnect, onDisconnect, network, endpoint, onError, storageAdapter, walletProviders, }: UseWalletArgs<WalletType>) => UseWallet<WalletType, boolean>;