mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-24 21:17:55 +00:00
d860d8beb3
Taybetmendiyên Nû: • pallet-multisig bi kar anîna - 3/5 threshold • wUSDT asset (ID: 2) - 1:1 backing bi USDT • Multisig members: Serok, SerokiMeclise, Xezinedar, Noter, Berdevk • Otomatîk query ji pallet-tiki (unique roles) Lib/Utilities: ✅ src/lib/multisig.ts - Multisig utilities (members, tx, queries) ✅ src/lib/usdt.ts - wUSDT bridge helpers (mint, burn, reserves) ✅ src/lib/wallet.ts - WUSDT asset ID zêde kir Components: ✅ MultisigMembers.tsx - Multisig members display ✅ USDTBridge.tsx - Deposit/withdrawal UI ✅ ReservesDashboard.tsx - Reserve monitoring dashboard Pages & Routes: ✅ ReservesDashboardPage.tsx - /reserves route ✅ App.tsx - Route integration Taybetmendî: • Full on-chain multisig (no Ethereum dependency) • Automatic tiki holder lookup • Reserve health monitoring • Tiered withdrawal limits (instant, standard, large) • Event subscriptions (mint/burn tracking) • 1:1 USDT backing verification Documentation: ✅ USDT_MULTISIG_SETUP.md - Complete setup guide 🤖 Bi [Claude Code](https://claude.com/claude-code) re hate çêkirin Co-Authored-By: Claude <noreply@anthropic.com>
85 lines
3.3 KiB
TypeScript
85 lines
3.3 KiB
TypeScript
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
|
import { ThemeProvider } from '@/components/theme-provider';
|
|
import Index from '@/pages/Index';
|
|
import Login from '@/pages/Login';
|
|
import Dashboard from '@/pages/Dashboard';
|
|
import EmailVerification from '@/pages/EmailVerification';
|
|
import PasswordReset from '@/pages/PasswordReset';
|
|
import ProfileSettings from '@/pages/ProfileSettings';
|
|
import AdminPanel from '@/pages/AdminPanel';
|
|
import WalletDashboard from './pages/WalletDashboard';
|
|
import PoolDashboardPage from './pages/PoolDashboard';
|
|
import ReservesDashboardPage from './pages/ReservesDashboardPage';
|
|
import { AppProvider } from '@/contexts/AppContext';
|
|
import { PolkadotProvider } from '@/contexts/PolkadotContext';
|
|
import { WalletProvider } from '@/contexts/WalletContext';
|
|
import { WebSocketProvider } from '@/contexts/WebSocketContext';
|
|
import { IdentityProvider } from '@/contexts/IdentityContext';
|
|
import { AuthProvider } from '@/contexts/AuthContext';
|
|
import { ProtectedRoute } from '@/components/ProtectedRoute';
|
|
import NotFound from '@/pages/NotFound';
|
|
import { Toaster } from '@/components/ui/toaster';
|
|
import './App.css';
|
|
import './i18n/config';
|
|
|
|
function App() {
|
|
return (
|
|
<ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
|
|
<AuthProvider>
|
|
<AppProvider>
|
|
<PolkadotProvider endpoint="ws://127.0.0.1:9944">
|
|
<WalletProvider>
|
|
<WebSocketProvider>
|
|
<IdentityProvider>
|
|
<Router>
|
|
<Routes>
|
|
<Route path="/login" element={<Login />} />
|
|
|
|
<Route path="/email-verification" element={<EmailVerification />} />
|
|
<Route path="/reset-password" element={<PasswordReset />} />
|
|
<Route path="/" element={<Index />} />
|
|
<Route path="/dashboard" element={
|
|
<ProtectedRoute>
|
|
<Dashboard />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="/profile/settings" element={
|
|
<ProtectedRoute>
|
|
<ProfileSettings />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="/admin" element={
|
|
<ProtectedRoute requireAdmin>
|
|
<AdminPanel />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="/wallet" element={
|
|
<ProtectedRoute>
|
|
<WalletDashboard />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="/pool" element={
|
|
<ProtectedRoute>
|
|
<PoolDashboardPage />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="/reserves" element={
|
|
<ProtectedRoute>
|
|
<ReservesDashboardPage />
|
|
</ProtectedRoute>
|
|
} />
|
|
<Route path="*" element={<NotFound />} />
|
|
</Routes>
|
|
</Router>
|
|
</IdentityProvider>
|
|
</WebSocketProvider>
|
|
</WalletProvider>
|
|
</PolkadotProvider>
|
|
</AppProvider>
|
|
</AuthProvider>
|
|
<Toaster />
|
|
</ThemeProvider>
|
|
);
|
|
}
|
|
|
|
export default App; |