import { AuthService } from './AuthService';
/** Normalized pin returned by the proxy's Pinterest fetch. */
export type NormalizedPin = {
    id: string;
    image_urls: string[];
    dominant_color: string | null;
    title: string | null;
    description: string | null;
    alt_text: string | null;
    link: string | null;
};
export type NormalizedBoard = {
    id: string;
    name: string | null;
    description: string | null;
    privacy: string | null;
};
/**
 * Result of a Pinterest fetch: normalized pin/board data, or a soft
 * not-connected nudge pointing the user at the dashboard.
 */
export type PinterestFetchResult = {
    status: 'ok';
    type: 'pin';
    pins: NormalizedPin[];
} | {
    status: 'ok';
    type: 'board';
    board: NormalizedBoard;
    pins: NormalizedPin[];
} | {
    status: 'not_connected';
    connectUrl: string;
} | {
    status: 'error';
    message: string;
};
/**
 * Calls the Rivet proxy's authenticated integration endpoints using the
 * machine's validated bearer token (refreshing once on a 401, mirroring
 * AuthService.getValidatedProfile).
 */
export declare class IntegrationsClient {
    private readonly proxyUrl;
    private readonly configManager;
    private readonly authService;
    constructor(options?: {
        proxyUrl?: string;
        authService?: AuthService;
    });
    /**
     * Fetch normalized Pinterest data for a pin/board URL. Returns the proxy's
     * structured result, including the soft `not_connected` payload when the
     * user has not connected Pinterest.
     */
    fetchPinterest(url: string): Promise<PinterestFetchResult>;
}
//# sourceMappingURL=IntegrationsClient.d.ts.map