import type { approvalResource, ApprovalRow, ApprovalUpdate } from './approval.schema'; import type { inputRequestResource, InputRequestRow, InputRequestUpdate } from './input-request.schema'; export type ControlRequestClaimStatus = 'claimed' | 'lost' | 'not_found' | 'not_actionable'; export interface ClaimableControlRequestRow { status?: string | null; leaseOwner?: string | null; leaseExpiresAt?: Date | string | null; expiresAt?: Date | string | null; } export interface ControlRequestClaimOptions { leaseOwner: string; leaseDurationMs?: number; now?: Date | string | number; } export interface ControlRequestClaimResult { status: ControlRequestClaimStatus; resource: TRow | null; leaseOwner: string; leaseExpiresAt: string; reason?: string; } export type ControlRequestClaimResource = typeof approvalResource | typeof inputRequestResource; export type ControlRequestClaimRow = TResource extends typeof approvalResource ? ApprovalRow : InputRequestRow; export type ControlRequestClaimUpdate = TResource extends typeof approvalResource ? ApprovalUpdate : InputRequestUpdate; export interface ControlRequestClaimDatabase { findByIri>(resource: TResource, iri: string): Promise; updateByIri>(resource: TResource, iri: string, data: ControlRequestClaimUpdate): Promise; } export declare function claimControlRequest(db: ControlRequestClaimDatabase, resource: TResource, iri: string, input: ControlRequestClaimOptions): Promise>>; export declare function isControlRequestStatusClaimable(status: unknown): boolean;