import { z } from 'zod';
import { ToolBubble } from '../../types/tool-bubble-class.js';
import type { BubbleContext } from '../../types/bubble.js';
import { CredentialType, type BubbleName } from '@bubblelab/shared-schemas';
declare const YCFounderSchema: z.ZodObject<{
    name: z.ZodNullable<z.ZodString>;
    title: z.ZodNullable<z.ZodString>;
    linkedinUrl: z.ZodNullable<z.ZodString>;
    bio: z.ZodNullable<z.ZodString>;
    twitterUrl: z.ZodNullable<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    name: string | null;
    linkedinUrl: string | null;
    bio: string | null;
    twitterUrl: string | null;
}, {
    title: string | null;
    name: string | null;
    linkedinUrl: string | null;
    bio: string | null;
    twitterUrl: string | null;
}>;
declare const YCCompanySchema: z.ZodObject<{
    companyName: z.ZodNullable<z.ZodString>;
    description: z.ZodNullable<z.ZodString>;
    batch: z.ZodNullable<z.ZodString>;
    website: z.ZodNullable<z.ZodString>;
    ycUrl: z.ZodNullable<z.ZodString>;
    founders: z.ZodArray<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        title: z.ZodNullable<z.ZodString>;
        linkedinUrl: z.ZodNullable<z.ZodString>;
        bio: z.ZodNullable<z.ZodString>;
        twitterUrl: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        bio: string | null;
        twitterUrl: string | null;
    }, {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        bio: string | null;
        twitterUrl: string | null;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    description: string | null;
    batch: string | null;
    companyName: string | null;
    website: string | null;
    founders: {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        bio: string | null;
        twitterUrl: string | null;
    }[];
    ycUrl: string | null;
}, {
    description: string | null;
    batch: string | null;
    companyName: string | null;
    website: string | null;
    founders: {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        bio: string | null;
        twitterUrl: string | null;
    }[];
    ycUrl: string | null;
}>;
declare const YCPersonSchema: z.ZodObject<{
    name: z.ZodNullable<z.ZodString>;
    title: z.ZodNullable<z.ZodString>;
    currentEmployers: z.ZodArray<z.ZodObject<{
        companyName: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        companyName: string | null;
    }, {
        companyName: string | null;
    }>, "many">;
    linkedinUrl: z.ZodNullable<z.ZodString>;
    twitterUrl: z.ZodNullable<z.ZodString>;
    bio: z.ZodNullable<z.ZodString>;
    emails: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
    title: string | null;
    name: string | null;
    linkedinUrl: string | null;
    emails: string[] | null;
    bio: string | null;
    currentEmployers: {
        companyName: string | null;
    }[];
    twitterUrl: string | null;
}, {
    title: string | null;
    name: string | null;
    linkedinUrl: string | null;
    emails: string[] | null;
    bio: string | null;
    currentEmployers: {
        companyName: string | null;
    }[];
    twitterUrl: string | null;
}>;
declare const YCScraperToolParamsSchema: z.ZodObject<{
    batch: z.ZodOptional<z.ZodString>;
    url: z.ZodOptional<z.ZodString>;
    maxCompanies: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
    includeFounders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    url?: string | undefined;
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    batch?: string | undefined;
    maxCompanies?: number | undefined;
    includeFounders?: boolean | undefined;
}, {
    url?: string | undefined;
    credentials?: Partial<Record<CredentialType, string>> | undefined;
    batch?: string | undefined;
    maxCompanies?: number | undefined;
    includeFounders?: boolean | undefined;
}>;
declare const YCScraperToolResultSchema: z.ZodObject<{
    people: z.ZodArray<z.ZodObject<{
        name: z.ZodNullable<z.ZodString>;
        title: z.ZodNullable<z.ZodString>;
        currentEmployers: z.ZodArray<z.ZodObject<{
            companyName: z.ZodNullable<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            companyName: string | null;
        }, {
            companyName: string | null;
        }>, "many">;
        linkedinUrl: z.ZodNullable<z.ZodString>;
        twitterUrl: z.ZodNullable<z.ZodString>;
        bio: z.ZodNullable<z.ZodString>;
        emails: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
    }, "strip", z.ZodTypeAny, {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        emails: string[] | null;
        bio: string | null;
        currentEmployers: {
            companyName: string | null;
        }[];
        twitterUrl: string | null;
    }, {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        emails: string[] | null;
        bio: string | null;
        currentEmployers: {
            companyName: string | null;
        }[];
        twitterUrl: string | null;
    }>, "many">;
    companies: z.ZodArray<z.ZodObject<{
        companyName: z.ZodNullable<z.ZodString>;
        description: z.ZodNullable<z.ZodString>;
        batch: z.ZodNullable<z.ZodString>;
        website: z.ZodNullable<z.ZodString>;
        ycUrl: z.ZodNullable<z.ZodString>;
        founders: z.ZodArray<z.ZodObject<{
            name: z.ZodNullable<z.ZodString>;
            title: z.ZodNullable<z.ZodString>;
            linkedinUrl: z.ZodNullable<z.ZodString>;
            bio: z.ZodNullable<z.ZodString>;
            twitterUrl: z.ZodNullable<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }, {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        description: string | null;
        batch: string | null;
        companyName: string | null;
        website: string | null;
        founders: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }[];
        ycUrl: string | null;
    }, {
        description: string | null;
        batch: string | null;
        companyName: string | null;
        website: string | null;
        founders: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }[];
        ycUrl: string | null;
    }>, "many">;
    totalPeople: z.ZodNumber;
    totalCompanies: z.ZodNumber;
    batch: z.ZodNullable<z.ZodString>;
    url: z.ZodNullable<z.ZodString>;
    success: z.ZodBoolean;
    error: z.ZodString;
}, "strip", z.ZodTypeAny, {
    url: string | null;
    success: boolean;
    error: string;
    batch: string | null;
    people: {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        emails: string[] | null;
        bio: string | null;
        currentEmployers: {
            companyName: string | null;
        }[];
        twitterUrl: string | null;
    }[];
    companies: {
        description: string | null;
        batch: string | null;
        companyName: string | null;
        website: string | null;
        founders: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }[];
        ycUrl: string | null;
    }[];
    totalPeople: number;
    totalCompanies: number;
}, {
    url: string | null;
    success: boolean;
    error: string;
    batch: string | null;
    people: {
        title: string | null;
        name: string | null;
        linkedinUrl: string | null;
        emails: string[] | null;
        bio: string | null;
        currentEmployers: {
            companyName: string | null;
        }[];
        twitterUrl: string | null;
    }[];
    companies: {
        description: string | null;
        batch: string | null;
        companyName: string | null;
        website: string | null;
        founders: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            bio: string | null;
            twitterUrl: string | null;
        }[];
        ycUrl: string | null;
    }[];
    totalPeople: number;
    totalCompanies: number;
}>;
type YCScraperToolParams = z.output<typeof YCScraperToolParamsSchema>;
type YCScraperToolResult = z.output<typeof YCScraperToolResultSchema>;
type YCScraperToolParamsInput = z.input<typeof YCScraperToolParamsSchema>;
export type YCPerson = z.output<typeof YCPersonSchema>;
export type YCCompany = z.output<typeof YCCompanySchema>;
export type YCFounder = z.output<typeof YCFounderSchema>;
/**
 * Y Combinator Scraper Tool
 *
 * Scrapes Y Combinator company directory to extract company and founder data.
 * Perfect for:
 * - Finding YC founders for networking/outreach
 * - Researching YC companies by batch
 * - Building databases of startup founders
 * - Lead generation targeting YC alumni
 *
 * Uses the Apify Y Combinator scraper actor behind the scenes.
 */
export declare class YCScraperTool extends ToolBubble<YCScraperToolParams, YCScraperToolResult> {
    static readonly bubbleName: BubbleName;
    static readonly schema: z.ZodObject<{
        batch: z.ZodOptional<z.ZodString>;
        url: z.ZodOptional<z.ZodString>;
        maxCompanies: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
        includeFounders: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
        credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        url?: string | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        batch?: string | undefined;
        maxCompanies?: number | undefined;
        includeFounders?: boolean | undefined;
    }, {
        url?: string | undefined;
        credentials?: Partial<Record<CredentialType, string>> | undefined;
        batch?: string | undefined;
        maxCompanies?: number | undefined;
        includeFounders?: boolean | undefined;
    }>;
    static readonly resultSchema: z.ZodObject<{
        people: z.ZodArray<z.ZodObject<{
            name: z.ZodNullable<z.ZodString>;
            title: z.ZodNullable<z.ZodString>;
            currentEmployers: z.ZodArray<z.ZodObject<{
                companyName: z.ZodNullable<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                companyName: string | null;
            }, {
                companyName: string | null;
            }>, "many">;
            linkedinUrl: z.ZodNullable<z.ZodString>;
            twitterUrl: z.ZodNullable<z.ZodString>;
            bio: z.ZodNullable<z.ZodString>;
            emails: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
        }, "strip", z.ZodTypeAny, {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            emails: string[] | null;
            bio: string | null;
            currentEmployers: {
                companyName: string | null;
            }[];
            twitterUrl: string | null;
        }, {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            emails: string[] | null;
            bio: string | null;
            currentEmployers: {
                companyName: string | null;
            }[];
            twitterUrl: string | null;
        }>, "many">;
        companies: z.ZodArray<z.ZodObject<{
            companyName: z.ZodNullable<z.ZodString>;
            description: z.ZodNullable<z.ZodString>;
            batch: z.ZodNullable<z.ZodString>;
            website: z.ZodNullable<z.ZodString>;
            ycUrl: z.ZodNullable<z.ZodString>;
            founders: z.ZodArray<z.ZodObject<{
                name: z.ZodNullable<z.ZodString>;
                title: z.ZodNullable<z.ZodString>;
                linkedinUrl: z.ZodNullable<z.ZodString>;
                bio: z.ZodNullable<z.ZodString>;
                twitterUrl: z.ZodNullable<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }, {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            description: string | null;
            batch: string | null;
            companyName: string | null;
            website: string | null;
            founders: {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }[];
            ycUrl: string | null;
        }, {
            description: string | null;
            batch: string | null;
            companyName: string | null;
            website: string | null;
            founders: {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }[];
            ycUrl: string | null;
        }>, "many">;
        totalPeople: z.ZodNumber;
        totalCompanies: z.ZodNumber;
        batch: z.ZodNullable<z.ZodString>;
        url: z.ZodNullable<z.ZodString>;
        success: z.ZodBoolean;
        error: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        url: string | null;
        success: boolean;
        error: string;
        batch: string | null;
        people: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            emails: string[] | null;
            bio: string | null;
            currentEmployers: {
                companyName: string | null;
            }[];
            twitterUrl: string | null;
        }[];
        companies: {
            description: string | null;
            batch: string | null;
            companyName: string | null;
            website: string | null;
            founders: {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }[];
            ycUrl: string | null;
        }[];
        totalPeople: number;
        totalCompanies: number;
    }, {
        url: string | null;
        success: boolean;
        error: string;
        batch: string | null;
        people: {
            title: string | null;
            name: string | null;
            linkedinUrl: string | null;
            emails: string[] | null;
            bio: string | null;
            currentEmployers: {
                companyName: string | null;
            }[];
            twitterUrl: string | null;
        }[];
        companies: {
            description: string | null;
            batch: string | null;
            companyName: string | null;
            website: string | null;
            founders: {
                title: string | null;
                name: string | null;
                linkedinUrl: string | null;
                bio: string | null;
                twitterUrl: string | null;
            }[];
            ycUrl: string | null;
        }[];
        totalPeople: number;
        totalCompanies: number;
    }>;
    static readonly shortDescription = "Scrape Y Combinator directory for company and founder data. Find founders by batch (W24, S23, etc.) with LinkedIn profiles.";
    static readonly longDescription = "\n    Y Combinator directory scraper for extracting company and founder data.\n\n    **OPERATIONS:**\n    - Scrape companies and founders by YC batch (e.g., W24, S23, W22)\n    - Extract founder details including LinkedIn profiles, titles, and bios\n    - Get company information including descriptions and websites\n\n    **WHEN TO USE THIS TOOL:**\n    - **YC founder outreach** - find founders from specific batches for networking\n    - **Lead generation** - build lists of YC founders for sales/recruiting\n    - **Research** - analyze YC companies by batch, industry, or founder background\n    - **Competitive analysis** - research YC companies in specific sectors\n\n    **BATCH FORMAT:**\n    - W = Winter batch (January start)\n    - S = Summer batch (June start)\n    - Examples: W24 (Winter 2024), S23 (Summer 2023), W22 (Winter 2022)\n\n    **OUTPUT:**\n    - People array: Flattened list of founders with company context\n    - Companies array: Company-level data with nested founders\n    - LinkedIn URLs for direct founder outreach\n\n    **TIPS:**\n    - Start with smaller maxCompanies (20-50) for faster results\n    - Use the batch parameter for easier filtering\n    - Use url parameter for advanced filtering (industry, location, etc.)\n\n    The tool uses Apify's Y Combinator scraper for reliable data extraction.\n  ";
    static readonly alias = "yc";
    static readonly type = "tool";
    constructor(params?: YCScraperToolParamsInput, context?: BubbleContext);
    performAction(): Promise<YCScraperToolResult>;
    /**
     * Convert batch to full format for URL
     * Handles multiple input formats:
     * - "W24", "S23", "F22", "Sp24" -> "Winter 2024", "Summer 2023", "Fall 2022", "Spring 2024"
     * - "W2024", "S2023", "F2022", "Sp2024" -> full year variants
     * - "Winter 2024", "Summer 2023", "Fall 2022", "Spring 2024" -> pass through
     * - "winter2024", "Winter24", "fall24", "spring24" -> normalized format
     */
    private formatBatchForUrl;
    /**
     * Create an error result
     */
    private createErrorResult;
    /**
     * Transform Apify companies to our format
     */
    private transformCompanies;
    /**
     * Extract and flatten founders into people array
     */
    private extractPeople;
}
export {};
//# sourceMappingURL=yc-scraper-tool.d.ts.map