import type { JsonLd } from '@atlaskit/json-ld-types';
import { type CardAuthFlowOpts, type CardProviderRenderers } from '@atlaskit/link-provider';
import type { CardAppearance, CardState } from '@atlaskit/linking-common';
import type { InvokeClientOpts, InvokeServerOpts } from '../../model/invoke-opts';
import type { CardInnerAppearance } from '../../view/Card/types';
/**
 * Hook for smart link state and actions.
 * @param id - Unique identifier for the smart link
 * @param url - The URL to resolve
 * @param appearance - Card appearance hint for ORS to optimize response payload.
 *                     When 'inline', ORS returns minimal data (title, status).
 *                     When 'block' or 'embed', ORS returns full data including summary.
 */
export declare function useSmartLink(id: string, url: string, appearance?: CardAppearance): {
    actions: {
        authorize: (appearance: CardInnerAppearance) => void;
        invoke: (opts: InvokeClientOpts | InvokeServerOpts, appearance: CardInnerAppearance) => Promise<JsonLd.Response | void>;
        loadMetadata: () => Promise<void> | undefined;
        register: () => Promise<void>;
        reload: (appearance?: CardAppearance) => void;
    };
    config: CardAuthFlowOpts | undefined;
    error: Error | null;
    isPreviewPanelAvailable: ((props: {
        ari: string;
    }) => boolean) | undefined;
    openPreviewPanel: ((props: {
        ari: string;
        iconUrl: string | undefined;
        name: string;
        panelData: {
            embedUrl?: string;
        };
        url: string;
    }) => void) | undefined;
    renderers: CardProviderRenderers | undefined;
    state: CardState;
};
