/**
 * Pricing output contract for Actor cards.
 *
 * Text callers:
 * - `pricingInfoToString`: complete mode for `fetch-actor-details`
 * - `pricingInfoToSimplifiedString`: simplified mode for `search-actors`
 *
 * Structured callers:
 * - `pricingInfoToStructured`: complete mode
 * - `pricingInfoToSimplifiedStructured`: simplified mode
 *
 * Structured output shape is mostly the same in both modes:
 * {
 *   model: string,
 *   userTier?: PricingTier,
 *   pricePerUnit?: number,
 *   unitName?: string,
 *   trialMinutes?: number,
 *   tieredPricing?: [{ tier: string, pricePerUnit: number }],
 *   events?: [{
 *     title: string,
 *     description?: string,
 *     priceUsd?: number,
 *     tieredPricing?: [{ tier: string, priceUsd: number }],
 *   }],
 *   pricingNote?: string,
 *   eventDescriptionsOmitted?: boolean,
 *   eventDescriptionsNote?: string,
 * }
 *
 * Complete mode keeps full tier matrices and never sets `pricingNote`.
 *
 * Simplified mode picks a single tier from each tiered map
 * (requested tier -> FREE -> first entry) and emits `pricingNote` only when
 * the Actor actually has multiple tiers *and* they resolve consistently. The
 * note is omitted for single-tier Actors (the note's "higher tiers may offer
 * lower prices" promise is vacuous) and when PAY_PER_EVENT events resolve
 * to different tiers (no truthful single label).
 *
 * Simplified `PAY_PER_EVENT` also trims long event lists:
 * - `events.length <= 5`: keep event descriptions
 * - `events.length > 5`: omit event descriptions and set
 *   `eventDescriptionsOmitted` / `eventDescriptionsNote`
 *
 * Single-tier buckets stay as 1-element `tieredPricing` arrays in both modes.
 * `FREE` or `null` input returns the free text / structured shape.
 *
 * Full examples and contract details are documented inline in this module.
 */
import type { ActorRunPricingInfo, PricePerEventActorPricingInfo as PricePerEventActorPricingInfoOutdated } from 'apify-client';
type TieredEventPrice = {
    tieredEventPriceUsd: number;
};
export declare const PRICING_TIERS: readonly ["FREE", "BRONZE", "SILVER", "GOLD", "PLATINUM", "DIAMOND"];
export type PricingTier = typeof PRICING_TIERS[number];
export type ActorChargeEvent = {
    eventTitle: string;
    eventDescription?: string;
    eventPriceUsd?: number;
    eventTieredPricingUsd?: Partial<Record<PricingTier, TieredEventPrice>>;
};
export type TieredPricing = {
    [tier: string]: {
        tieredPricePerUnitUsd: number;
    };
};
type PricePerEventActorPricingInfo = PricePerEventActorPricingInfoOutdated & {
    pricingPerEvent: {
        actorChargeEvents: Record<string, ActorChargeEvent>;
    };
};
export type PricingInfo = (ActorRunPricingInfo & {
    tieredPricing?: TieredPricing;
}) | PricePerEventActorPricingInfo;
/**
 * Public structured pricing contract returned by actor cards.
 *
 * `tieredPricing` and event-level `tieredPricing` always use arrays.
 * The difference between modes is array length:
 * - complete mode: full tier matrix
 * - simplified mode: 1 resolved tier
 */
export type StructuredPricingInfo = {
    model: string;
    userTier?: PricingTier;
    pricePerUnit?: number;
    unitName?: string;
    trialMinutes?: number;
    tieredPricing?: {
        tier: string;
        pricePerUnit: number;
    }[];
    events?: {
        title: string;
        description?: string;
        priceUsd?: number;
        tieredPricing?: {
            tier: string;
            priceUsd: number;
        }[];
    }[];
    pricingNote?: string;
    eventDescriptionsOmitted?: boolean;
    eventDescriptionsNote?: string;
};
export declare function getCurrentPricingInfo(pricingInfos: PricingInfo[], now: Date): PricingInfo | null;
/** Complete text contract used by `fetch-actor-details`. */
export declare function pricingInfoToString(pricingInfo: PricingInfo | null): string;
/** Complete structured contract used by `fetch-actor-details`. */
export declare function pricingInfoToStructured(pricingInfo: PricingInfo | null, userTier: PricingTier): StructuredPricingInfo;
/** Simplified text contract used by `search-actors`. */
export declare function pricingInfoToSimplifiedString(pricingInfo: PricingInfo | null, userTier: PricingTier): string;
/** Simplified structured contract used by `search-actors`. */
export declare function pricingInfoToSimplifiedStructured(pricingInfo: PricingInfo | null, userTier: PricingTier): StructuredPricingInfo;
export {};
//# sourceMappingURL=pricing_info.d.ts.map