export type ObligationStatus = 'pending' | 'fulfilled' | 'unfulfilled_no_evidence' | 'unfulfilled_tool_failure' | 'unfulfilled_blocked_by_policy' | 'terminated_by_revocation' | 'terminated_by_expiry' | 'waived_by_principal';
export type ObligationOutcome = ObligationStatus;
export interface Obligation {
    obligationId: string;
    delegationId: string;
    obligorAgentId: string;
    obligorPublicKey: string;
    action: ObligationAction;
    deadline: string;
    evidence: EvidenceRequirement;
    penalty: PenaltySpec;
    status: ObligationStatus;
    survivesTermination: boolean;
    survivalWindow?: string;
    createdAt: string;
    createdBy: string;
    signature: string;
}
export interface ObligationAction {
    type: string;
    target?: string;
    scope: string;
    description: string;
    minCount?: number;
    recurring?: RecurrenceSpec;
}
export interface RecurrenceSpec {
    frequency: 'once' | 'hourly' | 'daily' | 'weekly' | 'monthly';
    interval?: number;
    until?: string;
    timezone?: string;
}
export interface EvidenceRequirement {
    type: 'action_receipt' | 'deliverable' | 'agora_post';
    matchCriteria: {
        toolMatch?: string;
        scopeMatch?: string;
        paramConstraints?: Record<string, ParamConstraint>;
    };
}
export type ParamConstraint = {
    equals: unknown;
} | {
    min?: number;
    max?: number;
    currency?: string;
} | {
    contains: string;
} | {
    oneOf: unknown[];
};
export interface PenaltySpec {
    type: 'warning' | 'reputation_penalty' | 'revoke_delegation' | 'cascade_revoke' | 'escalate_to_principal';
    severity: 'warning' | 'minor' | 'major' | 'critical';
    reputationImpact?: number;
    escalationTarget?: string;
    gracePeriodMinutes: number;
    autoExecute: boolean;
}
export interface ObligationBundle {
    delegationId: string;
    obligations: Obligation[];
    bundleSignature: string;
    principalPublicKey: string;
}
export interface FulfillmentReceipt {
    receiptId: string;
    obligationId: string;
    delegationId: string;
    agentId: string;
    fulfilledAt: string;
    evidence: {
        actionReceiptId?: string;
        deliverableId?: string;
        agoraMessageId?: string;
    };
    gatewayId: string;
    gatewaySignature: string;
}
export interface ObligationResolution {
    resolutionId: string;
    obligationId: string;
    delegationId: string;
    agentId: string;
    outcome: ObligationOutcome;
    deadline: string;
    detectedAt: string;
    gatewayLatencyDelta?: number;
    escalationPending?: boolean;
    escalationId?: string;
    attemptEvidence?: {
        failedReceiptId: string;
        errorCode: string;
        attemptedAt: string;
    };
    penaltyApplied?: PenaltySpec;
    penaltyExecuted: boolean;
    gatewayId: string;
    gatewaySignature: string;
}
//# sourceMappingURL=obligations.d.ts.map