import { BaseCRMAction } from '../../base/base-crm.action';
import { UserInfo } from '@memberjunction/core';
/**
 * Base class for all HubSpot CRM actions.
 * Handles HubSpot-specific authentication and API interaction patterns.
 */
export declare abstract class HubSpotBaseAction extends BaseCRMAction {
    protected crmProvider: string;
    protected integrationName: string;
    /**
     * HubSpot API version
     */
    protected apiVersion: string;
    /**
     * Current action parameters (set by the framework)
     */
    protected params: any;
    /**
     * Makes an authenticated request to HubSpot API
     */
    protected makeHubSpotRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any, contextUser?: UserInfo): Promise<T>;
    /**
     * Makes a paginated request to HubSpot API using cursor-based pagination
     */
    protected makeHubSpotPaginatedRequest<T = any>(endpoint: string, params?: Record<string, any>, contextUser?: UserInfo): Promise<T[]>;
    /**
     * Search HubSpot objects using the search API
     */
    protected searchHubSpotObjects<T = any>(objectType: string, filters: Array<{
        propertyName: string;
        operator: string;
        value: string;
    }>, properties?: string[], contextUser?: UserInfo): Promise<T[]>;
    /**
     * Batch create objects in HubSpot
     */
    protected batchCreateHubSpotObjects<T = any>(objectType: string, objects: Array<{
        properties: Record<string, any>;
    }>, contextUser?: UserInfo): Promise<T[]>;
    /**
     * Batch update objects in HubSpot
     */
    protected batchUpdateHubSpotObjects<T = any>(objectType: string, updates: Array<{
        id: string;
        properties: Record<string, any>;
    }>, contextUser?: UserInfo): Promise<T[]>;
    /**
     * Associate objects in HubSpot
     */
    protected associateObjects(fromObjectType: string, fromObjectId: string, toObjectType: string, toObjectId: string, associationType?: string, contextUser?: UserInfo): Promise<void>;
    /**
     * Convert HubSpot timestamp to Date
     */
    protected parseHubSpotDate(timestamp: string | number): Date;
    /**
     * Format date for HubSpot (ISO string or milliseconds)
     */
    protected formatHubSpotDate(date: Date): string;
    /**
     * Map HubSpot object properties to a standard format
     */
    protected mapHubSpotProperties(hubspotObject: any): any;
    /**
     * Get HubSpot association type IDs
     * Based on HubSpot's default association type IDs
     */
    protected getAssociationTypeId(fromType: string, toType: string): number;
}
//# sourceMappingURL=hubspot-base.action.d.ts.map