Shared code package for Keynesol Web3 Prediction Platform
npm install keynesol-sharedbash
npm install @keynesol/shared
`
Or for local development:
`bash
npm link
In your app:
npm link @keynesol/shared
`
Usage
$3
`typescript
import { ErrorBoundary, WalletProvider, WalletButton } from '@keynesol/shared';
function App() {
return (
);
}
`
$3
`typescript
import { useProgram, useVaults, useTokenBalance } from '@keynesol/shared';
function MyComponent() {
const { program } = useProgram();
const { vaults, loading } = useVaults();
const { sol, usdc } = useTokenBalance();
// ...
}
`
$3
`typescript
import {
errorHandler,
cacheManager,
tokenUtils,
validation,
retryRpcCall
} from '@keynesol/shared';
// Error handling
errorHandler.handleError(error, 'MyComponent');
// Token utilities
const isSOL = tokenUtils.isNativeSOL(tokenMint);
const decimals = tokenUtils.getTokenDecimals(tokenMint);
// Validation
const result = validation.validateStakeAmount(amount, balance);
// RPC retry
const data = await retryRpcCall(() => connection.getBalance(publicKey));
`
$3
`typescript
import { syncService, reconciliationService } from '@keynesol/shared';
// Initialize sync service
syncService.initialize(connection, {
url: process.env.NEXT_PUBLIC_SUPABASE_URL,
anonKey: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
});
// Initialize reconciliation
reconciliationService.initialize(connection, {
url: process.env.NEXT_PUBLIC_SUPABASE_URL,
anonKey: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
});
`
Configuration
The package uses environment variables for configuration:
- NEXT_PUBLIC_SOLANA_NETWORK - Network (devnet, mainnet-beta, testnet)
- NEXT_PUBLIC_RPC_ENDPOINT - Custom RPC endpoint
- NEXT_PUBLIC_PROGRAM_ID - Solana program ID
- NEXT_PUBLIC_SUPABASE_URL - Supabase URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY - Supabase anonymous key
Building
`bash
npm run build
`
Type Checking
`bash
npm run type-check
``