import { ServiceBubble } from '../../../types/service-bubble-class.js';
import type { BubbleContext } from '../../../types/bubble.js';
import { CredentialType } from '@bubblelab/shared-schemas';
import { type SalesforceParamsInput, type SalesforceResult } from './salesforce.schema.js';
/**
 * Salesforce CRM Service Bubble
 *
 * Salesforce integration for querying accounts, contacts,
 * and running arbitrary SOQL queries via the Salesforce REST API.
 * Primary use case: account-level field lookup by business ID or Salesforce ID.
 */
export declare class SalesforceBubble<T extends SalesforceParamsInput = SalesforceParamsInput> extends ServiceBubble<T, Extract<SalesforceResult, {
    operation: T['operation'];
}>> {
    static readonly type: "service";
    static readonly service = "salesforce";
    static readonly authType: "oauth";
    static readonly bubbleName = "salesforce";
    static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_account">;
        record_id: import("zod").ZodString;
        fields: 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_account";
        record_id: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }, {
        operation: "get_account";
        record_id: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_accounts">;
        where_clause: import("zod").ZodString;
        fields: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
        limit: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "search_accounts";
        limit: number;
        where_clause: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }, {
        operation: "search_accounts";
        where_clause: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
        limit?: number | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_contact">;
        record_id: import("zod").ZodString;
        fields: 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_contact";
        record_id: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }, {
        operation: "get_contact";
        record_id: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_contacts">;
        where_clause: import("zod").ZodString;
        fields: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
        limit: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "search_contacts";
        limit: number;
        where_clause: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
    }, {
        operation: "search_contacts";
        where_clause: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        fields?: string[] | undefined;
        limit?: number | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"query">;
        soql: import("zod").ZodString;
        credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
    }, "strip", import("zod").ZodTypeAny, {
        operation: "query";
        soql: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }, {
        operation: "query";
        soql: string;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
    }>]>;
    static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_account">;
        success: import("zod").ZodBoolean;
        record: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "get_account";
        record?: Record<string, unknown> | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "get_account";
        record?: Record<string, unknown> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_accounts">;
        success: import("zod").ZodBoolean;
        records: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
        totalSize: import("zod").ZodOptional<import("zod").ZodNumber>;
        done: import("zod").ZodOptional<import("zod").ZodBoolean>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "search_accounts";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "search_accounts";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"get_contact">;
        success: import("zod").ZodBoolean;
        record: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "get_contact";
        record?: Record<string, unknown> | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "get_contact";
        record?: Record<string, unknown> | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"search_contacts">;
        success: import("zod").ZodBoolean;
        records: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
        totalSize: import("zod").ZodOptional<import("zod").ZodNumber>;
        done: import("zod").ZodOptional<import("zod").ZodBoolean>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "search_contacts";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "search_contacts";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }>, import("zod").ZodObject<{
        operation: import("zod").ZodLiteral<"query">;
        success: import("zod").ZodBoolean;
        records: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, "many">>;
        totalSize: import("zod").ZodOptional<import("zod").ZodNumber>;
        done: import("zod").ZodOptional<import("zod").ZodBoolean>;
        error: import("zod").ZodString;
    }, "strip", import("zod").ZodTypeAny, {
        error: string;
        success: boolean;
        operation: "query";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }, {
        error: string;
        success: boolean;
        operation: "query";
        done?: boolean | undefined;
        records?: Record<string, unknown>[] | undefined;
        totalSize?: number | undefined;
    }>]>;
    static readonly shortDescription = "Salesforce CRM integration for accounts, contacts, and SOQL queries";
    static readonly longDescription = "\n    Salesforce CRM integration for querying and searching CRM records.\n\n    Features:\n    - Retrieve Account and Contact records by Salesforce ID\n    - Search Accounts and Contacts with flexible SOQL WHERE conditions\n    - Run arbitrary SOQL queries for any Salesforce object\n    - Account-level field lookup by business ID or Salesforce ID\n    - Support for custom fields and objects via SOQL\n\n    Security Features:\n    - OAuth 2.0 authentication with Salesforce\n    - Instance-scoped access (each org has a unique API endpoint)\n    - Secure credential handling with base64-encoded payloads\n  ";
    static readonly alias = "";
    constructor(params?: T, context?: BubbleContext);
    testCredential(): Promise<boolean>;
    private parseCredentials;
    protected chooseCredential(): string | undefined;
    private sfRequest;
    protected performAction(context?: BubbleContext): Promise<Extract<SalesforceResult, {
        operation: T['operation'];
    }>>;
    private getAccount;
    private searchAccounts;
    private getContact;
    private searchContacts;
    private runQuery;
}
//# sourceMappingURL=salesforce.d.ts.map