import type { Address } from 'viem' export enum TransactionStatus { PENDING = 'pending', SIGNED = 'signed', EXECUTED = 'executed', REJECTED = 'rejected', } export interface TransactionMetadata { to: Address value: string data: `0x${string}` operation?: 0 | 1 // 0 = Call, 1 = DelegateCall safeTxGas?: string baseGas?: string gasPrice?: string gasToken?: Address refundReceiver?: Address nonce?: number } export interface TransactionSignature { signer: Address signature: string signedAt: string // ISO 8601 format } export interface StoredTransaction { safeTxHash: string // This is the transaction ID (no separate id field) safeAddress: Address chainId: string status: TransactionStatus metadata: TransactionMetadata signatures: TransactionSignature[] createdBy: Address createdAt: string // ISO 8601 format executedAt?: string // ISO 8601 format txHash?: string // On-chain transaction hash after execution } export interface CreateTransactionInput { safeAddress: Address to: Address value: string data: `0x${string}` operation?: 0 | 1 }