export type CapabilityString = string;
export type TaskRequestStatus = 'open' | 'claimed' | 'assigned' | 'closed' | 'expired';
export type TaskRequestPriority = 'low' | 'normal' | 'high' | 'critical';
export interface TaskRequest {
    id: string;
    requesterId: string;
    title: string;
    description: string;
    requiredCapabilities: CapabilityString[];
    estimatedTokens?: number;
    deadline?: string;
    priority: TaskRequestPriority;
    status: TaskRequestStatus;
    claimWindowMs: number;
    createdAt: string;
    publicKey: string;
    signature: string;
}
export interface CapabilityAdvertisement {
    agentId: string;
    capabilities: CapabilityString[];
    availability: boolean;
    maxTokenBudget?: number;
    currentLoad: number;
    lastAdvertised: string;
    advertisementTTL: number;
    environment?: AgentEnvironment;
    publicKey: string;
    signature: string;
}
export interface AgentEnvironment {
    runtime: 'sandbox' | 'local' | 'cloud';
    tools: string[];
    models?: string[];
}
export interface ClaimResponse {
    taskRequestId: string;
    claimantId: string;
    proposedApproach: string;
    estimatedCompletion?: string;
    capabilitiesMatched: CapabilityString[];
    claimedAt: string;
    publicKey: string;
    signature: string;
}
export interface TaskDecline {
    taskRequestId: string;
    declinerId: string;
    reason: string;
    suggestedAlternative?: string;
    declinedAt: string;
    publicKey: string;
    signature: string;
}
export interface RoutingDecision {
    taskRequestId: string;
    selectedAgentId: string | null;
    reason: string;
    fallbackAgents: string[];
    matchScore: number;
    decidedAt: string;
    createdTaskBriefId?: string;
    publicKey: string;
    signature: string;
}
export interface RouterConfig {
    minCoverageThreshold: number;
    weights: MatchWeights;
    defaultClaimWindowMs: number;
    defaultAdvertisementTTL: number;
    priorityBoosts: Record<TaskRequestPriority, number>;
}
export interface MatchWeights {
    coverage: number;
    availability: number;
    load: number;
    budget: number;
}
export interface CandidateScore {
    agentId: string;
    coverageScore: number;
    availabilityScore: number;
    loadScore: number;
    budgetScore: number;
    matchScore: number;
    capabilitiesMatched: CapabilityString[];
    capabilitiesMissing: CapabilityString[];
    scopeValid: boolean;
    advertisementFresh: boolean;
    reputationScore?: number;
}
export interface RoutingResult {
    decision: RoutingDecision;
    candidates: CandidateScore[];
    rejectedClaims: {
        claimantId: string;
        reason: string;
    }[];
}
//# sourceMappingURL=routing.d.ts.map