import { type IAirtableService, type ListBasesResponse, type BaseSchemaResponse, type ListRecordsOptions, type Field, type Table, type AirtableRecord, type Comment, type ListCommentsResponse, type FieldSet } from './types.js';
export declare class AirtableService implements IAirtableService {
    private readonly apiKey;
    private readonly baseUrl;
    private readonly fetch;
    constructor(apiKey?: string, baseUrl?: string, fetchFn?: typeof fetch);
    listBases(): Promise<ListBasesResponse>;
    getBaseSchema(baseId: string): Promise<BaseSchemaResponse>;
    listRecords(baseId: string, tableId: string, options?: ListRecordsOptions): Promise<AirtableRecord[]>;
    getRecord(baseId: string, tableId: string, recordId: string): Promise<AirtableRecord>;
    createRecord(baseId: string, tableId: string, fields: FieldSet): Promise<AirtableRecord>;
    updateRecords(baseId: string, tableId: string, records: {
        id: string;
        fields: FieldSet;
    }[]): Promise<AirtableRecord[]>;
    deleteRecords(baseId: string, tableId: string, recordIds: string[]): Promise<{
        id: string;
    }[]>;
    createTable(baseId: string, name: string, fields: Field[], description?: string): Promise<Table>;
    updateTable(baseId: string, tableId: string, updates: {
        name?: string;
        description?: string;
    }): Promise<Table>;
    createField(baseId: string, tableId: string, field: Omit<Field, 'id'>): Promise<Field>;
    updateField(baseId: string, tableId: string, fieldId: string, updates: {
        name?: string;
        description?: string;
    }): Promise<Field>;
    searchRecords(baseId: string, tableId: string, searchTerm: string, fieldIds?: string[], maxRecords?: number, view?: string): Promise<AirtableRecord[]>;
    createComment(baseId: string, tableId: string, recordId: string, text: string, parentCommentId?: string): Promise<Comment>;
    listComments(baseId: string, tableId: string, recordId: string, pageSize?: number, offset?: string): Promise<ListCommentsResponse>;
    uploadAttachment(baseId: string, recordId: string, attachmentFieldIdOrName: string, file: string, filename: string, contentType: string): Promise<AirtableRecord>;
    private validateAndGetSearchFields;
    private fetchFromAPI;
}
