import type { JSONNode } from '@atlaskit/editor-json-transformer/types'; import type { CallbackPayload } from '@atlaskit/node-data-provider'; import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model'; import { NodeDataProvider } from '@atlaskit/node-data-provider'; import type { BlockCardAdf, EmbedCardAdf, CardAdf, InlineCardAdf, CardAppearance, DatasourceAdf, ProductType, EnvironmentsKeys } from '@atlaskit/linking-common'; import type { CardProvider } from './types'; import { CardClient } from '@atlaskit/link-provider'; import type { JsonLd } from '@atlaskit/json-ld-types/jsonld'; type UrlChecker = (url: string) => RegExpMatchArray | null; export declare const isJiraWorkItem: (url: string) => boolean; export declare const internalUrlCheckers: { [key: string]: UrlChecker; }; /** * Check if a URL is an internal Atlassian URL (Jira, Confluence, etc.) * by testing it against all known internal URL patterns */ export declare function isInternalUrl(url: string): boolean; /** * Check if a URL is external (not a known internal Atlassian URL) */ export declare function isExternalUrl(url: string): boolean; type CardNode = InlineCardAdf | BlockCardAdf | EmbedCardAdf; type SupportedUrlFilter = (url: string) => boolean; export declare class EditorCardProvider extends NodeDataProvider implements CardProvider { readonly name: 'editorCardProvider' | string; private baseUrl; private resolverUrl; private providersData?; private requestHeaders; private transformer; private providersLoader; private cardClient; private smartCardLocalCacheClient; private onResolve; private supportedUrlFilter?; constructor(envKey?: EnvironmentsKeys, baseUrlOverride?: string, product?: ProductType, onResolve?: (url: string) => void, customCardClient?: CardClient, supportedUrlFilter?: SupportedUrlFilter); refreshCache(node: CardNode | PMNode): void; getData(node: CardNode | PMNode, callback: (payload: CallbackPayload) => void): void; nodeDataKey(node: CardNode): string; fetchNodesData(nodes: CardNode[]): Promise; isNodeSupported(node: JSONNode): node is CardNode; private batchProviders; private checkLinkResolved; private fetchDataForResource; private extractAriFromData; private fetchProvidersData; private loadProviderData; findPattern(url: string): Promise; private doesUrlMatchPath; private findUserPreference; private findPatternData; /** * * Decides whether the url passed in should be embedded by default * * protected so that subclasses can override this in order to custom handle links embedded by default * * @param url * @returns 'embed' for the card appearance to embed by default */ protected getHardCodedAppearance(url: string): CardAppearance | undefined; private fetchData; private resolvesToHardCodedEmbed; /** * Make a /resolve call and find out if result has embed capability */ private canBeResolvedAsEmbed; /** * Opt-in hook: when a caller explicitly requests an `'embed'` appearance and the * user has no saved preference for the URL, honour that request as the default * (above any provider default), validating embeddability first and falling back * to a card (`'block'`) when the link cannot be embedded. * * Defaults to `false` so behaviour is unchanged for every existing consumer. * Subclasses (e.g. Confluence) can override this to opt in, typically behind an * experiment. */ protected shouldHonorRequestedEmbedAsDefault(): boolean; private getAuthStatusFromResolveResponse; /** * Make a /resolve call and find out if result has datasource capability */ private getDatasourceFromResolveResponse; /** * This is used to determine if the url is a local Jira url or a remote one. */ private isLocalUrl; resolve(url: string, appearance: CardAppearance, shouldForceAppearance?: boolean, isEmbedFriendlyLocation?: boolean): Promise; } export declare const editorCardProvider: EditorCardProvider; export type { CardProvider } from './types';