import { createX402Client } from '@armory-sh/client-viem';
import { createSIWxHook, createPaymentIdHook } from '@armory-sh/extensions';
import { PaymentPreference, Logger } from '@armory-sh/client-hooks';
import { privateKeyToAccount } from 'viem/accounts';
const account = privateKeyToAccount('0x...');
const client = createX402Client({
wallet: { type: 'account', account },
hooks: [
// Extension hooks
createSIWxHook({
domain: 'example.com',
statement: 'Sign in to access premium content'
}),
createPaymentIdHook(),
// Optional preference hooks
PaymentPreference.chain(['base', 'polygon', 'skale']),
PaymentPreference.token(['USDT', 'USDC', 'WBTC']),
PaymentPreference.cheapest(),
Logger.console(),
]
});
// Hooks automatically add extensions when server requests them
const response = await client.fetch('https://api.example.com/protected');
const data = await response.json();