import { Accessor } from './base.ts';
import type { AirtableConfig } from '../core/airtable/config.ts';
import { RateLimiter } from '../core/api/rate_limit.ts';
import type { Clock } from '../utils/clock.ts';
/**
 * The account, its bounds with defaults applied, and the per-base pacing
 * every call rides. `fetchFn` keeps the transport's injection seam.
 */
export declare class AirtableAccessor extends Accessor {
    readonly config: AirtableConfig;
    readonly baseUrl: string;
    readonly baseIds: readonly string[] | null;
    readonly maxReadRecords: number;
    readonly limiter: RateLimiter;
    readonly fetchFn: typeof fetch | undefined;
    constructor(config: AirtableConfig, options?: {
        fetchFn?: typeof fetch;
    });
    /**
     * Pace each base's calls on the workspace's clock.
     *
     * @param owner who holds it, released by the same key.
     * @throws Error when a workspace on another clock mounts it.
     */
    bindClock(clock: Clock, owner: unknown): void;
    /** Let `owner` go. */
    releaseClock(owner: unknown): void;
}
//# sourceMappingURL=airtable.d.ts.map