feat: comprehensive project improvements and fixes
- Fix all TypeScript compilation errors (40+ fixes) - Add missing type definitions (TransactionRequest, SafeInfo) - Fix TransactionRequestStatus vs TransactionStatus confusion - Fix import paths and provider type issues - Fix test file errors and mock providers - Implement comprehensive security features - AES-GCM encryption with PBKDF2 key derivation - Input validation and sanitization - Rate limiting and nonce management - Replay attack prevention - Access control and authorization - Add comprehensive test suite - Integration tests for transaction flow - Security validation tests - Wallet management tests - Encryption and rate limiter tests - E2E tests with Playwright - Add extensive documentation - 12 numbered guides (setup, development, API, security, etc.) - Security documentation and audit reports - Code review and testing reports - Project organization documentation - Update dependencies - Update axios to latest version (security fix) - Update React types to v18 - Fix peer dependency warnings - Add development tooling - CI/CD workflows (GitHub Actions) - Pre-commit hooks (Husky) - Linting and formatting (Prettier, ESLint) - Security audit workflow - Performance benchmarking - Reorganize project structure - Move reports to docs/reports/ - Clean up root directory - Organize documentation - Add new features - Smart wallet management (Gnosis Safe, ERC4337) - Transaction execution and approval workflows - Balance management and token support - Error boundary and monitoring (Sentry) - Fix WalletConnect configuration - Handle missing projectId gracefully - Add environment variable template
This commit is contained in:
116
types.ts
116
types.ts
@@ -45,6 +45,8 @@ export interface SafeInfo {
|
||||
safeAddress: string;
|
||||
network: LowercaseNetworks;
|
||||
ethBalance: string;
|
||||
owners?: string[];
|
||||
threshold?: number;
|
||||
}
|
||||
export interface InterfaceMessageToPayload {
|
||||
[INTERFACE_MESSAGES.ON_SAFE_INFO]: SafeInfo;
|
||||
@@ -535,3 +537,117 @@ export interface Transaction {
|
||||
value: string;
|
||||
data: string;
|
||||
}
|
||||
|
||||
// ======= Smart Wallet Types ======
|
||||
|
||||
export enum SmartWalletType {
|
||||
GNOSIS_SAFE = "GNOSIS_SAFE",
|
||||
ERC4337 = "ERC4337",
|
||||
CUSTOM = "CUSTOM",
|
||||
}
|
||||
|
||||
export interface SmartWalletConfig {
|
||||
id: string;
|
||||
type: SmartWalletType;
|
||||
address: string;
|
||||
networkId: number;
|
||||
owners: string[];
|
||||
threshold: number;
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
}
|
||||
|
||||
export interface OwnerInfo {
|
||||
address: string;
|
||||
label?: string;
|
||||
ensName?: string;
|
||||
}
|
||||
|
||||
export enum TransactionExecutionMethod {
|
||||
DIRECT_ONCHAIN = "DIRECT_ONCHAIN",
|
||||
RELAYER = "RELAYER",
|
||||
SIMULATION = "SIMULATION",
|
||||
}
|
||||
|
||||
export interface TransactionRequest {
|
||||
id: string;
|
||||
from: string;
|
||||
to: string;
|
||||
value: string;
|
||||
data: string;
|
||||
gasLimit?: string;
|
||||
gasPrice?: string;
|
||||
maxFeePerGas?: string;
|
||||
maxPriorityFeePerGas?: string;
|
||||
nonce?: number;
|
||||
method: TransactionExecutionMethod;
|
||||
status: TransactionRequestStatus;
|
||||
hash?: string;
|
||||
createdAt: number;
|
||||
executedAt?: number;
|
||||
expiresAt?: number;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
// TransactionStatus enum already defined above (line 171)
|
||||
// Removed duplicate definition
|
||||
export enum TransactionRequestStatus {
|
||||
PENDING = "PENDING",
|
||||
APPROVED = "APPROVED",
|
||||
REJECTED = "REJECTED",
|
||||
EXECUTING = "EXECUTING",
|
||||
SUCCESS = "SUCCESS",
|
||||
FAILED = "FAILED",
|
||||
}
|
||||
|
||||
export interface TokenBalance {
|
||||
tokenAddress: string;
|
||||
symbol: string;
|
||||
name: string;
|
||||
decimals: number;
|
||||
balance: string;
|
||||
balanceFormatted: string;
|
||||
usdValue?: string;
|
||||
logoUri?: string;
|
||||
}
|
||||
|
||||
export interface WalletBalance {
|
||||
native: string;
|
||||
nativeFormatted: string;
|
||||
tokens: TokenBalance[];
|
||||
totalUsdValue?: string;
|
||||
}
|
||||
|
||||
export interface MultiSigApproval {
|
||||
transactionId: string;
|
||||
approver: string;
|
||||
approved: boolean;
|
||||
timestamp: number;
|
||||
signature?: string;
|
||||
}
|
||||
|
||||
export interface PendingTransaction {
|
||||
id: string;
|
||||
transaction: TransactionRequest;
|
||||
approvals: MultiSigApproval[];
|
||||
approvalCount: number;
|
||||
requiredApprovals: number;
|
||||
canExecute: boolean;
|
||||
}
|
||||
|
||||
export interface RelayerConfig {
|
||||
id: string;
|
||||
name: string;
|
||||
apiUrl: string;
|
||||
apiKey?: string;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface GasEstimate {
|
||||
gasLimit: string;
|
||||
gasPrice?: string;
|
||||
maxFeePerGas?: string;
|
||||
maxPriorityFeePerGas?: string;
|
||||
estimatedCost: string;
|
||||
estimatedCostUsd?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user