import { FieldType } from '@airtable/blocks/models';
import { AirtableFieldValue, SerializedAirtableRecord } from '../../models';
import { ShopifyObject } from '../../models/shopify';
declare type AirtableFieldId = string;
declare type AirtableFieldName = string;
export interface AirtableFieldIdentifier {
    /**
     * Airtable field id
     * null if the field has been deleted from the table
     */
    id: AirtableFieldId | null;
    /**
     * Airtable field name
     */
    name: AirtableFieldName;
    type: FieldType;
}
/**
 * Data structure that holds the relation between Airtable fields and the ShopifyEntityModel. This will exist on the Table model
 *
 * It's important to keep in mind that at any point an Airtable table's fields can have its type modified, be renamed, or be deleted.
 * By indexing by the Shopify entity's immutable keys rather than an Airtable field id or field name, we can continue to retrieve
 * the desired data even if a field is completely deleted or renamed.
 */
export declare type AirtableFieldLinks<SO extends ShopifyObject, Link extends AirtableFieldIdentifier = AirtableFieldIdentifier> = Record<keyof SO['props'], Link>;
export declare function getRecordFieldValue<SO extends ShopifyObject>(shopifyObjectKey: keyof SO['props'], airtableRecord: SerializedAirtableRecord, airtableFieldLinks: AirtableFieldLinks<SO>): AirtableFieldValue;
export {};
