62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
// ═══════════════════════════════════════════════════════════════
|
|
// Blockchain Types
|
|
// ═══════════════════════════════════════════════════════════════
|
|
// TypeScript interfaces for all blockchain-related data structures
|
|
// used across the service layer, server actions, and UI components.
|
|
// ═══════════════════════════════════════════════════════════════
|
|
|
|
/**
|
|
* Represents the on-chain proof data for a registered document.
|
|
* This is what gets stored in PostgreSQL after a successful blockchain tx.
|
|
*/
|
|
export interface BlockchainProof {
|
|
documentHash: string;
|
|
txHash: string;
|
|
blockNumber: number;
|
|
blockTimestamp: Date;
|
|
network: "hardhat" | "sepolia";
|
|
contractAddress: string;
|
|
explorerUrl: string | null; // Sepolia etherscan link (null for hardhat)
|
|
}
|
|
|
|
/**
|
|
* Result of verifying a document hash on-chain.
|
|
*/
|
|
export interface BlockchainVerification {
|
|
exists: boolean;
|
|
timestamp: number; // Unix timestamp (seconds)
|
|
depositor: string; // Ethereum address
|
|
}
|
|
|
|
/**
|
|
* Serialized blockchain transaction for frontend display.
|
|
* All dates are ISO strings for safe JSON serialization across server/client.
|
|
*/
|
|
export interface BlockchainTransactionView {
|
|
id: string;
|
|
contractId: string;
|
|
contractTitle: string | null;
|
|
contractFileName: string;
|
|
documentHash: string;
|
|
txHash: string;
|
|
blockNumber: number;
|
|
blockTimestamp: string; // ISO string
|
|
network: string;
|
|
contractAddress: string;
|
|
status: string;
|
|
createdAt: string; // ISO string
|
|
explorerUrl: string | null;
|
|
}
|
|
|
|
/**
|
|
* Stats displayed at the top of the blockchain explorer page.
|
|
*/
|
|
export interface BlockchainStats {
|
|
totalVerified: number;
|
|
latestBlockNumber: number | null;
|
|
networkName: string;
|
|
networkStatus: "connected" | "disconnected";
|
|
walletAddress: string;
|
|
chainId?: number;
|
|
}
|