import type { TractorCard, TractorEffectiveSuit, TractorFollowObligation, TractorFollowValidation, TractorLeadAnalysis, TractorLeadPattern, TractorLevel, TractorLevelAdvance, TractorHandSettlement, TractorHandSettlementInput, TractorRunValidation, TractorTrickPlay, TractorTrickWinner, TractorTopSetResolution, TractorTrumpDeclaration, TractorTrumpDeclarationAnalysis, TractorTrumpOverrideValidation, TractorTrump } from './types.js'; /** Return the Pagat point value: five=5, ten/king=10, everything else=0. */ export declare function tractorCardPoints(card: Readonly): number; /** Return the printed-face key used to decide whether two physical cards form a pair. */ export declare function tractorFaceKey(card: Readonly): string; /** Map level cards and Jokers into the effective trump suit for this hand. */ export declare function tractorEffectiveSuit(card: Readonly, trump: Readonly): TractorEffectiveSuit; /** * Return strength within a card's effective suit. Higher wins and equal * strength preserves the earlier play. Do not compare unrelated non-trump suits. */ export declare function tractorStrength(card: Readonly, trump: Readonly): number; /** True only for two distinct physical copies with the same printed face. */ export declare function isTractorPair(cards: readonly [Readonly, Readonly]): boolean; /** Validate an unordered selection as a two-or-more-pair consecutive Tractor. */ export declare function analyzeTractorRun(cards: readonly Readonly[], trump: Readonly): TractorRunValidation; /** * Interpret a same-effective-suit lead without consulting hidden opponent * hands. Non-pair/non-Tractor collections are top-set attempts whose success * must be resolved by the authoritative rules package. */ export declare function analyzeTractorLead(cards: readonly Readonly[], trump: Readonly): TractorLeadAnalysis; /** Compute the maximum same-suit and pair structure this follower must supply. */ export declare function getTractorFollowObligation(lead: Readonly, hand: readonly Readonly[], trump: Readonly): TractorFollowObligation; /** Validate one selected follow against the player's complete current hand. */ export declare function validateTractorFollow(lead: Readonly, hand: readonly Readonly[], selected: readonly Readonly[], trump: Readonly): TractorFollowValidation; /** * Resolve already-validated plays in table order. Equal strength preserves the * earlier play. Follow legality remains the caller's responsibility. */ export declare function determineTractorTrickWinner(lead: Readonly, plays: readonly Readonly[], trump: Readonly): TractorTrickWinner; /** * Resolve hidden top-set eligibility without exposing follower hands. * * `followersInPlayOrder` must begin with the seat after the leader. The first * follower able to beat any component becomes the challenger. Their weakest * beatable component is forced; equal strengths use the stable face key. */ export declare function resolveTractorTopSetAttempt(attemptedCards: readonly Readonly[], followersInPlayOrder: readonly { readonly playerId: string; readonly hand: readonly Readonly[]; }[], trump: Readonly): TractorTopSetResolution; /** Pagat bottom-card multiplier: twice the number of cards in the final lead. */ export declare function tractorKittyMultiplier(lastLeadCardCount: number): number; /** Settle one hand using the Pagat 80-point and 40-point advancement table. */ export declare function settleTractorHand(input: Readonly): TractorHandSettlement; /** Advance through 2..Ace; crossing above Ace wins the complete match. */ export declare function advanceTractorLevel(level: TractorLevel, steps: number): TractorLevelAdvance; /** Interpret exactly one Pagat trump declaration from cards currently held. */ export declare function analyzeTractorTrumpDeclaration(playerId: string, cards: readonly Readonly[], levelRank: TractorLevel): TractorTrumpDeclarationAnalysis; /** Check whether a later public declaration supersedes the current one. */ export declare function validateTractorTrumpOverride(current: Readonly | null, candidate: Readonly): TractorTrumpOverrideValidation; //# sourceMappingURL=tractor.d.ts.map