import type { NegotiationContinuationExecution, NegotiationContinuationReceipt, Opportunity, OpportunityGraphDatabase } from '../../shared/interfaces/database.interface.js'; import type { QueueOpportunityNotificationFn } from './opportunity.lifecycle.js'; /** Default-compatible deployment policy for autonomous opportunity negotiation. */ export declare function negotiationIncludesOtherIntents(): boolean; interface NegotiationIntentSource { id?: string | null; summary?: string | null; payload?: string | null; } interface ExistingOpportunityNegotiationUser { id: string; intents: Array<{ id: string; title: string; description: string; confidence: number; }>; profile: { name?: string; bio?: string; location?: string; interests?: string[]; skills?: string[]; }; } interface ExistingOpportunityNegotiationCandidate { userId: string; sourceIntentId?: string; candidateIntentId?: string; opportunityId?: string; opportunityStatus?: Opportunity['status']; opportunityUpdatedAt?: Date; reasoning: string; valencyRole: string; networkId?: string; candidateUser: ExistingOpportunityNegotiationUser; } /** Put an opportunity actor's exact intent first, then fill the bounded context without duplicates. */ export declare function buildPrioritizedNegotiationIntents(activeIntents: readonly NegotiationIntentSource[], exactIntentId?: string | null, fallbackIntent?: NegotiationIntentSource | null, includeOtherIntents?: boolean): ExistingOpportunityNegotiationUser['intents']; /** Narrow port for translating one persisted opportunity into a negotiation invocation. */ export type ExistingOpportunityNegotiationPort = Pick; export interface ExistingOpportunityNegotiationInput { opportunityId: string; actorUserId: string; continuation?: NegotiationContinuationExecution; } /** Graph-owned execution port: the handler prepares policy-bound input, while the graph retains negotiation orchestration. */ export type ExecuteExistingOpportunityNegotiation = (input: { sourceUser: ExistingOpportunityNegotiationUser; candidate: ExistingOpportunityNegotiationCandidate; indexContextOverrides: Map; continuation?: NegotiationContinuationExecution; }) => Promise<{ accepted: boolean; receipt?: NegotiationContinuationReceipt; }>; export type ExistingOpportunityNegotiationOutcome = { kind: 'skipped'; reason: 'not_found' | 'stale_continuation' | 'no_source_actor' | 'no_candidate_actor'; } | { kind: 'completed'; opportunityId: string; accepted: boolean; continuationFence?: number; receipt?: NegotiationContinuationReceipt; }; export interface ExistingOpportunityNegotiationObserver { onNotificationFailure?: (details: { actorId: string; error: unknown; }) => void; } /** * Revalidates continuation actor bindings, builds exact intent-prioritized * bilateral negotiation input, and notifies the non-introducer actors only * after an accepted non-continuation negotiation. */ export declare function negotiateExistingOpportunity(database: ExistingOpportunityNegotiationPort, executeNegotiation: ExecuteExistingOpportunityNegotiation, input: ExistingOpportunityNegotiationInput, queueNotification?: QueueOpportunityNotificationFn, observer?: ExistingOpportunityNegotiationObserver): Promise; export {};