import type { AgentPricingStore, CurrentModelPrice, ModelPriceInput } from '../spi/pricing-store.js';
import type { LucidDatabaseLike } from './lucid.js';
/** Options for {@link LucidPricingStore}. */
export interface LucidPricingStoreOptions {
    /**
     * Provision the shared agent tables on first use. Default `true` (the ecosystem convention). The
     * pricing store writes to `agent_model_pricing`, one of the six shared tables; auto-provisioning
     * here is what lets a pricing seed run before the first agent run. Set `false` to run the migration.
     */
    autoCreateTables?: boolean;
}
/**
 * A production {@link AgentPricingStore} backed by AdonisJS **Lucid** (Knex) over the
 * `agent_model_pricing` table — the write side the loop's cost fold prices token usage against. Like
 * {@link import('./lucid.js').LucidAgentStore} it touches only the structural {@link LucidDatabaseLike}
 * slice, so `@adonisjs/lucid` stays an optional peer (the factory casts the real `db` in).
 *
 * Atomic supersede (mirrors the reference Drizzle/MikroORM stores): `upsertModelPrice` retires the
 * model's prior `is_current` row and inserts a fresh current one, so exactly one live price exists
 * per model. `effective_from` is stored as epoch-ms (matching the rest of the schema) and read back
 * as an ISO string. Booleans are `INTEGER` 0/1 for cross-dialect portability.
 */
export declare class LucidPricingStore implements AgentPricingStore {
    private readonly db;
    private readonly autoCreateTables;
    constructor(db: LucidDatabaseLike, options?: LucidPricingStoreOptions);
    /** Provision the shared schema on first use (no-op when disabled), memoized across the stores. */
    private ready;
    /** Provision the shared schema now (what the agent provider calls at app start). Idempotent. */
    ensureSchema(): Promise<void>;
    upsertModelPrice(input: ModelPriceInput): Promise<void>;
    listCurrentPrices(): Promise<CurrentModelPrice[]>;
}
//# sourceMappingURL=lucid-pricing.d.ts.map