import { ServiceBubble } from '../../../types/service-bubble-class.js';
import type { BubbleContext } from '../../../types/bubble.js';
import { CredentialType } from '@bubblelab/shared-schemas';
import { type HubSpotParamsInput, type HubSpotResult } from './hubspot.schema.js';
/**
 * HubSpot CRM Service Bubble
 *
 * Comprehensive HubSpot CRM integration for managing contacts, companies, deals, and tickets.
 *
 * Features:
 * - Full CRUD operations for all CRM object types
 * - Advanced search with filter groups (AND/OR logic)
 * - Property-based data management
 * - Pagination support for large datasets
 *
 * Use cases:
 * - Lead management and contact synchronization
 * - Company and deal pipeline tracking
 * - Support ticket management
 * - CRM data enrichment and automation
 *
 * Security Features:
 * - OAuth 2.0 authentication with HubSpot
 * - Scoped access permissions
 * - Secure credential handling
 */
export declare class HubSpotBubble<T extends HubSpotParamsInput = HubSpotParamsInput> extends ServiceBubble<T, Extract<HubSpotResult, {
    operation: T['operation'];
}>> {
    static readonly type: "service";
    static readonly service = "hubspot";
    static readonly authType: "oauth";
    static readonly bubbleName = "hubspot";
    static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"create_record">;
        object_type: import("zod").ZodEnum<["contacts", "companies", "deals", "tickets"]>;
        properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        properties: Record<string, string>;
        operation: "create_record";
        object_type: "deals" | "contacts" | "companies" | "tickets";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        properties: Record<string, string>;
        operation: "create_record";
        object_type: "deals" | "contacts" | "companies" | "tickets";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_record">;
        object_type: import("zod").ZodEnum<["contacts", "companies", "deals", "tickets"]>;
        record_id: import("zod").ZodString;
        properties: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "get_record";
        record_id: string;
        object_type: "deals" | "contacts" | "companies" | "tickets";
        properties?: string[] | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        operation: "get_record";
        record_id: string;
        object_type: "deals" | "contacts" | "companies" | "tickets";
        properties?: string[] | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"update_record">;
        object_type: import("zod").ZodEnum<["contacts", "companies", "deals", "tickets"]>;
        record_id: import("zod").ZodString;
        properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        properties: Record<string, string>;
        operation: "update_record";
        record_id: string;
        object_type: "deals" | "contacts" | "companies" | "tickets";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        properties: Record<string, string>;
        operation: "update_record";
        record_id: string;
        object_type: "deals" | "contacts" | "companies" | "tickets";
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_records">;
        object_type: import("zod").ZodEnum<["contacts", "companies", "deals", "tickets"]>;
        filter_groups: import("zod").ZodArray<import("zod").ZodObject<{
            filters: import("zod").ZodArray<import("zod").ZodObject<{
                propertyName: import("zod").ZodString;
                operator: import("zod").ZodEnum<["EQ", "NEQ", "LT", "LTE", "GT", "GTE", "BETWEEN", "IN", "NOT_IN", "HAS_PROPERTY", "NOT_HAS_PROPERTY", "CONTAINS_TOKEN", "NOT_CONTAINS_TOKEN"]>;
                value: import("zod").ZodOptional<import("zod").ZodString>;
                highValue: import("zod").ZodOptional<import("zod").ZodString>;
                values: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
            }, "strip", import("zod").ZodTypeAny, {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }, {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }>, "many">;
        }, "strip", import("zod").ZodTypeAny, {
            filters: {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }[];
        }, {
            filters: {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }[];
        }>, "many">;
        properties: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
        limit: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
        after: import("zod").ZodOptional<import("zod").ZodString>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "search_records";
        limit: number;
        object_type: "deals" | "contacts" | "companies" | "tickets";
        filter_groups: {
            filters: {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }[];
        }[];
        properties?: string[] | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        after?: string | undefined;
    }, {
        operation: "search_records";
        object_type: "deals" | "contacts" | "companies" | "tickets";
        filter_groups: {
            filters: {
                propertyName: string;
                operator: "GT" | "IN" | "LT" | "EQ" | "NEQ" | "LTE" | "GTE" | "BETWEEN" | "NOT_IN" | "HAS_PROPERTY" | "NOT_HAS_PROPERTY" | "CONTAINS_TOKEN" | "NOT_CONTAINS_TOKEN";
                value?: string | undefined;
                values?: string[] | undefined;
                highValue?: string | undefined;
            }[];
        }[];
        properties?: string[] | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        after?: string | undefined;
        limit?: number | undefined;
    }>]>;
    static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"create_record">;
        success: import("zod").ZodBoolean;
        record: import("zod").ZodOptional<import("zod").ZodObject<{
            id: import("zod").ZodString;
            properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
            createdAt: import("zod").ZodOptional<import("zod").ZodString>;
            updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
            archived: import("zod").ZodOptional<import("zod").ZodBoolean>;
        }, "strip", import("zod").ZodTypeAny, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        success: boolean;
        error: string;
        operation: "create_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }, {
        success: boolean;
        error: string;
        operation: "create_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_record">;
        success: import("zod").ZodBoolean;
        record: import("zod").ZodOptional<import("zod").ZodObject<{
            id: import("zod").ZodString;
            properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
            createdAt: import("zod").ZodOptional<import("zod").ZodString>;
            updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
            archived: import("zod").ZodOptional<import("zod").ZodBoolean>;
        }, "strip", import("zod").ZodTypeAny, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        success: boolean;
        error: string;
        operation: "get_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }, {
        success: boolean;
        error: string;
        operation: "get_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"update_record">;
        success: import("zod").ZodBoolean;
        record: import("zod").ZodOptional<import("zod").ZodObject<{
            id: import("zod").ZodString;
            properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
            createdAt: import("zod").ZodOptional<import("zod").ZodString>;
            updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
            archived: import("zod").ZodOptional<import("zod").ZodBoolean>;
        }, "strip", import("zod").ZodTypeAny, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        success: boolean;
        error: string;
        operation: "update_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }, {
        success: boolean;
        error: string;
        operation: "update_record";
        record?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        } | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_records">;
        success: import("zod").ZodBoolean;
        results: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
            id: import("zod").ZodString;
            properties: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
            createdAt: import("zod").ZodOptional<import("zod").ZodString>;
            updatedAt: import("zod").ZodOptional<import("zod").ZodString>;
            archived: import("zod").ZodOptional<import("zod").ZodBoolean>;
        }, "strip", import("zod").ZodTypeAny, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }, {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }>, "many">>;
        total: import("zod").ZodOptional<import("zod").ZodNumber>;
        paging: import("zod").ZodOptional<import("zod").ZodObject<{
            next: import("zod").ZodOptional<import("zod").ZodObject<{
                after: import("zod").ZodString;
            }, "strip", import("zod").ZodTypeAny, {
                after: string;
            }, {
                after: string;
            }>>;
        }, "strip", import("zod").ZodTypeAny, {
            next?: {
                after: string;
            } | undefined;
        }, {
            next?: {
                after: string;
            } | undefined;
        }>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        success: boolean;
        error: string;
        operation: "search_records";
        total?: number | undefined;
        results?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }[] | undefined;
        paging?: {
            next?: {
                after: string;
            } | undefined;
        } | undefined;
    }, {
        success: boolean;
        error: string;
        operation: "search_records";
        total?: number | undefined;
        results?: {
            properties: Record<string, unknown>;
            id: string;
            createdAt?: string | undefined;
            archived?: boolean | undefined;
            updatedAt?: string | undefined;
        }[] | undefined;
        paging?: {
            next?: {
                after: string;
            } | undefined;
        } | undefined;
    }>]>;
    static readonly shortDescription = "HubSpot CRM integration for contacts, companies, deals, and tickets";
    static readonly longDescription = "\n    HubSpot CRM service integration for comprehensive customer relationship management.\n\n    Features:\n    - Create, read, update, and search contacts, companies, deals, and tickets\n    - Advanced search with filter groups supporting AND/OR logic\n    - Flexible property-based data management\n    - Pagination for handling large datasets\n\n    Use cases:\n    - Lead management and contact synchronization\n    - Company tracking and deal pipeline management\n    - Support ticket creation and tracking\n    - CRM data enrichment and workflow automation\n\n    Security Features:\n    - OAuth 2.0 authentication with HubSpot\n    - Scoped access permissions for CRM operations\n    - Secure credential handling and validation\n  ";
    static readonly alias = "crm";
    constructor(params?: T, context?: BubbleContext);
    testCredential(): Promise<boolean>;
    protected chooseCredential(): string | undefined;
    private makeHubSpotApiRequest;
    protected performAction(context?: BubbleContext): Promise<Extract<HubSpotResult, {
        operation: T['operation'];
    }>>;
    private createRecord;
    private getRecord;
    private updateRecord;
    private searchRecords;
}
//# sourceMappingURL=hubspot.d.ts.map