charms-wallet-js
Version:
Professional Bitcoin wallet library for Charms ecosystem using @scure stack
171 lines • 5.79 kB
JavaScript
;
// Constants and network configurations for Charms Wallet JS
Object.defineProperty(exports, "__esModule", { value: true });
exports.CHARMS_WALLET_CONSTANTS = exports.UTILS_CONSTANTS = exports.VERSION_INFO = exports.ERROR_CODES = exports.MONITORING_CONSTANTS = exports.API_ENDPOINTS = exports.STORAGE_CONSTANTS = exports.BIP39_CONSTANTS = exports.TRANSACTION_CONSTANTS = exports.ADDRESS_PATTERNS = exports.DEFAULT_NETWORK = exports.NETWORKS = exports.DEFAULT_DERIVATION_PATH = exports.DERIVATION_PATHS = void 0;
// Derivation paths following BIP 86 (Taproot)
exports.DERIVATION_PATHS = {
TAPROOT: "m/86'/0'/0'",
SEGWIT: "m/84'/0'/0'",
LEGACY: "m/44'/0'/0'"
};
// Default derivation path for Charms wallets
exports.DEFAULT_DERIVATION_PATH = exports.DERIVATION_PATHS.TAPROOT;
// Network configurations
exports.NETWORKS = {
mainnet: {
name: 'mainnet',
bech32: 'bc',
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80
},
testnet: {
name: 'testnet',
bech32: 'tb',
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef
},
testnet4: {
name: 'testnet4',
bech32: 'tb',
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef
}
};
// Default network for development
exports.DEFAULT_NETWORK = 'testnet';
// Address validation patterns
exports.ADDRESS_PATTERNS = {
MAINNET_P2TR: /^bc1p[a-zA-HJ-NP-Z0-9]{58}$/,
TESTNET_P2TR: /^tb1p[a-zA-HJ-NP-Z0-9]{58}$/,
MAINNET_P2WPKH: /^bc1q[a-zA-HJ-NP-Z0-9]{38}$/,
TESTNET_P2WPKH: /^tb1q[a-zA-HJ-NP-Z0-9]{38}$/,
LEGACY: /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/,
TESTNET_LEGACY: /^[mn2][a-km-zA-HJ-NP-Z1-9]{25,34}$/
};
// Transaction constants
exports.TRANSACTION_CONSTANTS = {
// Minimum fee rate (sat/vB)
MIN_FEE_RATE: 1,
// Default fee rate (sat/vB)
DEFAULT_FEE_RATE: 10,
// Maximum fee rate (sat/vB)
MAX_FEE_RATE: 1000,
// Dust threshold (satoshis)
DUST_THRESHOLD: 546,
// Minimum UTXO amount for transactions
MIN_UTXO_AMOUNT: 1000,
// Maximum OP_RETURN data size
MAX_OP_RETURN_SIZE: 80
};
// BIP39 constants
exports.BIP39_CONSTANTS = {
// Entropy bits for 12-word mnemonic
ENTROPY_BITS_12: 128,
// Entropy bits for 24-word mnemonic
ENTROPY_BITS_24: 256,
// Default word count
DEFAULT_WORD_COUNT: 12,
// Supported word counts
SUPPORTED_WORD_COUNTS: [12, 15, 18, 21, 24]
};
// Storage constants
exports.STORAGE_CONSTANTS = {
// Default storage key for wallet data
DEFAULT_WALLET_KEY: 'charms_wallet',
// Default storage key for settings
DEFAULT_SETTINGS_KEY: 'charms_wallet_settings',
// Encryption algorithm
ENCRYPTION_ALGORITHM: 'AES-GCM',
// Key derivation iterations
PBKDF2_ITERATIONS: 100000,
// Salt length for encryption
SALT_LENGTH: 16,
// IV length for encryption
IV_LENGTH: 12
};
// API endpoints (for address monitoring)
exports.API_ENDPOINTS = {
BLOCKSTREAM_MAINNET: 'https://blockstream.info/api',
BLOCKSTREAM_TESTNET: 'https://blockstream.info/testnet/api',
MEMPOOL_MAINNET: 'https://mempool.space/api',
MEMPOOL_TESTNET: 'https://mempool.space/testnet/api'
};
// Monitoring constants
exports.MONITORING_CONSTANTS = {
// Default polling interval (ms)
DEFAULT_POLL_INTERVAL: 10000,
// Maximum polling interval (ms)
MAX_POLL_INTERVAL: 60000,
// Minimum polling interval (ms)
MIN_POLL_INTERVAL: 5000,
// Maximum retry attempts
MAX_RETRY_ATTEMPTS: 3,
// Retry delay (ms)
RETRY_DELAY: 2000
};
// Error codes
exports.ERROR_CODES = {
// Validation errors
INVALID_MNEMONIC: 'INVALID_MNEMONIC',
INVALID_ADDRESS: 'INVALID_ADDRESS',
INVALID_NETWORK: 'INVALID_NETWORK',
INVALID_AMOUNT: 'INVALID_AMOUNT',
INVALID_FEE_RATE: 'INVALID_FEE_RATE',
// Transaction errors
INSUFFICIENT_FUNDS: 'INSUFFICIENT_FUNDS',
UTXO_NOT_FOUND: 'UTXO_NOT_FOUND',
TRANSACTION_TOO_LARGE: 'TRANSACTION_TOO_LARGE',
DUST_OUTPUT: 'DUST_OUTPUT',
// Cryptography errors
KEY_DERIVATION_FAILED: 'KEY_DERIVATION_FAILED',
SIGNING_FAILED: 'SIGNING_FAILED',
ENCRYPTION_FAILED: 'ENCRYPTION_FAILED',
DECRYPTION_FAILED: 'DECRYPTION_FAILED',
// Network errors
API_REQUEST_FAILED: 'API_REQUEST_FAILED',
NETWORK_TIMEOUT: 'NETWORK_TIMEOUT',
RATE_LIMITED: 'RATE_LIMITED',
// Storage errors
STORAGE_NOT_AVAILABLE: 'STORAGE_NOT_AVAILABLE',
WALLET_NOT_FOUND: 'WALLET_NOT_FOUND',
STORAGE_QUOTA_EXCEEDED: 'STORAGE_QUOTA_EXCEEDED'
};
// Version information
exports.VERSION_INFO = {
LIBRARY_VERSION: '1.0.0',
SUPPORTED_BIP_VERSIONS: ['BIP32', 'BIP39', 'BIP86'],
MIN_NODE_VERSION: '16.0.0'
};
// Utility constants
exports.UTILS_CONSTANTS = {
// Satoshis per Bitcoin
SATOSHIS_PER_BTC: 100000000,
// Bytes per kilobyte
BYTES_PER_KB: 1024,
// Milliseconds per second
MS_PER_SECOND: 1000,
// Seconds per minute
SECONDS_PER_MINUTE: 60,
// Minutes per hour
MINUTES_PER_HOUR: 60
};
// Export all constants as a single object for convenience
exports.CHARMS_WALLET_CONSTANTS = {
DERIVATION_PATHS: exports.DERIVATION_PATHS,
DEFAULT_DERIVATION_PATH: exports.DEFAULT_DERIVATION_PATH,
NETWORKS: exports.NETWORKS,
DEFAULT_NETWORK: exports.DEFAULT_NETWORK,
ADDRESS_PATTERNS: exports.ADDRESS_PATTERNS,
TRANSACTION_CONSTANTS: exports.TRANSACTION_CONSTANTS,
BIP39_CONSTANTS: exports.BIP39_CONSTANTS,
STORAGE_CONSTANTS: exports.STORAGE_CONSTANTS,
API_ENDPOINTS: exports.API_ENDPOINTS,
MONITORING_CONSTANTS: exports.MONITORING_CONSTANTS,
ERROR_CODES: exports.ERROR_CODES,
VERSION_INFO: exports.VERSION_INFO,
UTILS_CONSTANTS: exports.UTILS_CONSTANTS
};
//# sourceMappingURL=constants.js.map