p-sdk-wallet
Version:
A comprehensive wallet SDK for React Native (pwc), supporting multi-chain and multi-account features.
234 lines (233 loc) • 7.64 kB
TypeScript
import { ethers } from 'ethers';
/**
* Set global RPC configuration from mobile app (highest priority)
* @param config - RPC URLs configuration
*/
export declare function setGlobalRPCConfig(config: Record<string, string>): void;
/**
* Set global explorer configuration from mobile app (highest priority)
* @param config - Explorer URLs configuration
*/
export declare function setGlobalExplorerConfig(config: Record<string, string>): void;
/**
* Get global RPC configuration
* @returns Current global RPC configuration
*/
export declare function getGlobalRPCConfig(): Record<string, string>;
/**
* Get global explorer configuration
* @returns Current global explorer configuration
*/
export declare function getGlobalExplorerConfig(): Record<string, string>;
/**
* Clear global configurations
*/
export declare function clearGlobalConfigs(): void;
/**
* Interface representing chain configuration
*/
export interface ChainConfig {
name: string;
rpcUrl: string;
explorerUrl: string;
nativeCurrency: {
name: string;
symbol: string;
decimals: number;
};
type: 'evm' | 'solana';
}
/**
* Configuration object containing all supported blockchain networks.
* Each chain has its RPC URL, explorer URL, native currency details, and type.
* RPC URLs can be customized via environment variables.
*/
export declare const SUPPORTED_CHAINS: {
readonly '1': {
readonly name: "Ethereum";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "Ether";
readonly symbol: "ETH";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly '56': {
readonly name: "BNB Smart Chain";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "BNB";
readonly symbol: "BNB";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly '137': {
readonly name: "Polygon";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "MATIC";
readonly symbol: "MATIC";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly '42161': {
readonly name: "Arbitrum One";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "Ether";
readonly symbol: "ETH";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly '10': {
readonly name: "OP Mainnet";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "Ether";
readonly symbol: "ETH";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly '8453': {
readonly name: "Base";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "Ether";
readonly symbol: "ETH";
readonly decimals: 18;
};
readonly type: "evm";
};
readonly solana: {
readonly name: "Solana";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "SOL";
readonly symbol: "SOL";
readonly decimals: 9;
};
readonly type: "solana";
};
readonly 'solana-devnet': {
readonly name: "Solana Devnet";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "SOL";
readonly symbol: "SOL";
readonly decimals: 9;
};
readonly type: "solana";
};
readonly '97': {
readonly name: "BNB Smart Chain Testnet";
readonly rpcUrl: string;
readonly explorerUrl: string;
readonly nativeCurrency: {
readonly name: "BNB";
readonly symbol: "tBNB";
readonly decimals: 18;
};
readonly type: "evm";
};
};
/**
* Type representing the supported chain IDs.
* Can be either EVM chain IDs (as strings) or Solana network identifiers.
*/
export type ChainId = keyof typeof SUPPORTED_CHAINS;
/**
* Type representing the blockchain type.
* 'evm' for Ethereum-compatible chains, 'solana' for Solana blockchain.
*/
export type ChainType = 'evm' | 'solana';
/**
* Creates and returns an ethers.js provider for the specified EVM chain.
* @param chainId - The chain ID to create a provider for (must be an EVM chain)
* @returns An ethers.js JsonRpcProvider instance for the specified chain
* @throws Error if the chain is not supported or is not an EVM chain
*/
export declare const getProvider: (chainId: ChainId) => ethers.JsonRpcProvider;
/**
* BIP-44 derivation paths for different blockchain types.
* Used for deterministic wallet generation from mnemonics.
*/
export declare const DERIVATION_PATHS: {
/** Standard EVM derivation path following BIP-44 */
readonly EVM: "m/44'/60'/0'/0/0";
/** Solana derivation path following BIP-44 with hardened derivation */
readonly SOLANA: "m/44'/501'/0'/0'";
};
/**
* Register a custom chain (new chain not in built-in list)
* @param chainId - Custom chain ID (e.g., 'custom-1', 'my-chain')
* @param config - Complete chain configuration
*/
export declare function registerCustomChain(chainId: string, config: ChainConfig): void;
/**
* Override a built-in chain configuration
* @param chainId - Built-in chain ID to override
* @param override - Partial configuration to override (only specify fields to change)
* @throws Error if chainId is not a built-in chain
*/
export declare function overrideChain(chainId: string, override: Partial<ChainConfig>): void;
/**
* Override multiple built-in chains at once
* @param overrides - Object containing multiple chain overrides
*/
export declare function overrideChains(overrides: Record<string, Partial<ChainConfig>>): void;
/**
* Get chain configuration with priority: Custom > Override > Built-in
* @param chainId - Chain ID to get configuration for
* @returns Chain configuration
* @throws Error if chain is not found
*/
export declare function getChainConfig(chainId: string): ChainConfig;
/**
* Setup chain configurations with overrides and custom chains
* @param options - Configuration options
*/
export declare function setupChainConfigs(options: {
overrides?: Record<string, Partial<ChainConfig>>;
customChains?: Record<string, ChainConfig>;
}): void;
/**
* Get all available chains (built-in + custom)
* @returns Object containing all chain configurations
*/
export declare function getAllAvailableChains(): Record<string, ChainConfig>;
/**
* Clear all custom chains
*/
export declare function clearCustomChains(): void;
/**
* Clear all chain overrides
*/
export declare function clearOverrides(): void;
/**
* Clear override for a specific chain
* @param chainId - Chain ID to clear override for
*/
export declare function clearOverride(chainId: string): void;
/**
* Get all custom chains
* @returns Object containing custom chain configurations
*/
export declare function getCustomChains(): Record<string, ChainConfig>;
/**
* Get all chain overrides
* @returns Object containing chain override configurations
*/
export declare function getOverrides(): Record<string, Partial<ChainConfig>>;