// Succinct Prover Network Types
export interface ProofRequest {
requestId: string;
vkHash: string;
version: string;
mode: ProofMode;
strategy: FulfillmentStrategy;
stdinUri: string;
deadline: number;
cycleLimit: number;
gasLimit: number;
fulfillmentStatus: FulfillmentStatus;
executionStatus: ExecutionStatus;
proofPublicUri?: string;
}
export enum ProofMode {
Core = 0,
Compressed = 1,
Plonk = 2,
Groth16 = 3,
}
export enum FulfillmentStrategy {
Auction = 0,
DirectAssignment = 1,
}
export enum FulfillmentStatus {
Requested = 0,
Assigned = 1,
Fulfilled = 2,
Unfulfillable = 3,
}
export enum ExecutionStatus {
Unexecuted = 0,
Executed = 1,
Unexecutable = 2,
}
export enum MessageFormat {
Binary = 0,
Json = 1,
}
// Succinct Network Protocol Types
export interface RequestProofRequestBody {
nonce: number;
vkHash: Uint8Array;
version: string;
mode: ProofMode;
strategy: FulfillmentStrategy;
stdinUri: string;
deadline: number;
cycleLimit: number;
gasLimit: number;
}
export interface RequestProofRequest {
format: MessageFormat;
signature: Uint8Array;
body: RequestProofRequestBody;
}
export interface BidRequestBody {
nonce: number;
requestId: Uint8Array;
bidAmount: string;
}
export interface BidRequest {
format: MessageFormat;
signature: Uint8Array;
body: BidRequestBody;
}
export interface GetFilteredProofRequestsRequest {
version?: string;
minDeadline?: number;
maxCycleLimit?: number;
}
export interface GetProofRequestStatusRequest {
requestId: Uint8Array;
}
export interface GetNonceRequest {
address: Uint8Array;
}
export interface CreateArtifactRequest {
format: MessageFormat;
signature: Uint8Array;
body: CreateArtifactRequestBody;
}
export interface CreateArtifactRequestBody {
nonce: number;
artifactType: ArtifactType;
metadata?: { [key: string]: string };
}
export enum ArtifactType {
Program = 0,
Stdin = 1,
Proof = 2,
}
// Network Client Configuration
export interface NetworkConfig {
rpcUrl: string;
privateKey: string;
proverAddress?: string;
stakingContract: string;
proveToken: string;
}
// Enhanced security configuration
export interface SecureEnvironmentConfig {
isValid: boolean;
errors: string[];
warnings: string[];
maskedSummary: {
privateKeyStatus: 'SET' | 'NOT_SET' | 'INVALID';
proverAddressStatus: 'SET' | 'NOT_SET' | 'INVALID';
calibrationStatus: 'COMPLETE' | 'PARTIAL' | 'MISSING';
};
}
// MCP Security levels
export enum SecurityLevel {
PRODUCTION = 'production',
DEVELOPMENT = 'development',
MONITORING = 'monitoring'
}
// gRPC Service Interfaces
export interface ProverNetworkClient {
requestProof(request: RequestProofRequest): Promise<any>;
getProofRequestStatus(request: GetProofRequestStatusRequest): Promise<any>;
getFilteredProofRequests(request: GetFilteredProofRequestsRequest): Promise<any>;
bidRequest(request: BidRequest): Promise<any>;
getNonce(request: GetNonceRequest): Promise<any>;
getBalance(request: { address: Uint8Array }): Promise<any>;
getAccount(request: { address: Uint8Array }): Promise<any>;
}
export interface ArtifactStoreClient {
createArtifact(request: CreateArtifactRequest): Promise<any>;
}
export interface VerifierClient {
verifyProof(request: any): Promise<any>;
}
// Existing types
export interface ProverInfo {
address: string;
owner: string;
stakedAmount: string;
activeRequests: number;
totalFulfilled: number;
successRate: number;
}
export interface NetworkStats {
totalProvers: number;
totalStaked: string;
totalRequests: number;
averageFee: string;
networkUtilization: number;
}
export interface CalibrationResult {
costPerHour: number;
utilizationRate: number;
profitMargin: number;
provePrice: number;
recommendations: {
minBidPrice: number;
expectedProofsPerHour: number;
estimatedRevenuePerDay: number;
competitiveness: string;
};
}
export interface BidRequestOld {
requestId: string;
bidAmount: string;
proverAddress: string;
}
export interface AccountBalance {
address: string;
balance: string;
stakedAmount: string;
availableBalance: string;
}
// Ethereum Smart Contract Types
export interface ContractConfig {
stakingContract: string;
proveToken: string;
rpcUrl: string;
}
export interface StakingContractMethods {
createProver(stakerFeeBips: number): Promise<string>;
stake(proverAddress: string, amount: string): Promise<string>;
unstake(proverAddress: string, amount: string): Promise<string>;
getProverInfo(proverAddress: string): Promise<ProverInfo>;
}
// Error Types
export class ProverError extends Error {
constructor(message: string, public code?: string) {
super(message);
this.name = 'ProverError';
}
}
export class NetworkError extends Error {
constructor(message: string, public code?: string) {
super(message);
this.name = 'NetworkError';
}
}
export class AuthenticationError extends Error {
constructor(message: string) {
super(message);
this.name = 'AuthenticationError';
}
}