<!-- API Report Version: 2.3 -->

## API Report File for "@atlaskit/link-extractors"

> Do not edit this file. This report is auto-generated using
> [API Extractor](https://api-extractor.com/).
> [Learn more about API reports](https://hello.atlassian.net/wiki/spaces/UR/pages/1825484529/Package+API+Reports)

### Table of contents

- [Main Entry Types](#main-entry-types)
- [Peer Dependencies](#peer-dependencies)

### Main Entry Types

<!--SECTION START: Main Entry Types-->

```ts
import { JsonLd } from '@atlaskit/json-ld-types';
import { default as React_2 } from 'react';

// @public (undocumented)
export type CardPlatform = JsonLd.Primitives.Platforms;

// @public (undocumented)
type EmbedIframeUrlType = 'href' | 'interactiveHref';

// @public (undocumented)
export const extractContext: (jsonLd: JsonLd.Data.BaseData) => LinkContext | undefined;

// @public (undocumented)
export const extractDateCreated: (jsonLd: LinkTypeCreated) => string | undefined;

// @public (undocumented)
export const extractDateUpdated: (jsonLd: JsonLd.Data.BaseData) => string | undefined;

// @public (undocumented)
export const extractDateViewed: (jsonLd: JsonLd.Data.Document) => string | undefined;

// @public (undocumented)
export const extractImage: (jsonLd: JsonLd.Data.BaseData) => string | undefined;

// @public (undocumented)
export const extractLink: (jsonLd: JsonLd.Data.BaseData) => string | undefined;

// @public (undocumented)
export const extractMembers: (jsonLd: JsonLd.Data.Project) => LinkPerson[] | undefined;

// @public (undocumented)
export interface ExtractOptions<T> {
	// (undocumented)
	defaultExtractorFunction: ExtractorFunction<T>;
	// (undocumented)
	extractorFunctionsByType: {
		[type: string]: ExtractorFunction<T>;
	};
	// (undocumented)
	extractorPrioritiesByType: {
		[type: string]: number;
	};
	// (undocumented)
	json: any;
}

// @public (undocumented)
export interface ExtractorFunction<T> {
	// (undocumented)
	(json: any): T;
}

// @public (undocumented)
export const extractPersonAssignedTo: (jsonLd: LinkTypeAssignedTo) => LinkPerson | undefined;

// @public (undocumented)
export const extractPersonCreatedBy: (jsonLd: JsonLd.Data.BaseData) => LinkPerson[] | undefined;

// @public (undocumented)
export const extractPersonFromJsonLd: (
	person: JsonLd.Primitives.Link | JsonLd.Primitives.Object,
) => LinkPerson | undefined;

// @public (undocumented)
export const extractPersonOwnedBy: (jsonLd: JsonLd.Data.BaseData) => LinkPerson[] | undefined;

// @public (undocumented)
export const extractPersonUpdatedBy: (jsonLd: LinkTypeUpdatedBy) => LinkPerson | undefined;

// @public (undocumented)
export const extractPlatformIsSupported: (
	preview: JsonLd.Data.BaseData['preview'],
	platform?: CardPlatform,
) => boolean | undefined;

// @public (undocumented)
export const extractPreview: (
	jsonLd?: JsonLd.Data.BaseData,
	platform?: CardPlatform,
	iframeUrlType?: EmbedIframeUrlType,
) => LinkPreview | undefined;

// @public (undocumented)
export const extractProvider: (jsonLd: JsonLd.Data.BaseData) => LinkProvider | undefined;

// @public (undocumented)
export const extractTitle: (jsonLd: JsonLd.Data.BaseData) => string | undefined;

// @public (undocumented)
export const extractType: (
	jsonLd: JsonLd.Primitives.Object,
) => JsonLd.Primitives.ObjectType[] | undefined;

// @public (undocumented)
export const extractUrlFromIconJsonLd: (
	icon: JsonLd.Primitives.Image | JsonLd.Primitives.Link,
) => string | undefined;

// @public (undocumented)
export const extractUrlFromLinkJsonLd: (
	link: JsonLd.Primitives.Link | JsonLd.Primitives.Link[],
) => string | undefined;

// @public (undocumented)
export function genericExtractPropsFromJSONLD<T>(options: ExtractOptions<T>): T;

// @public (undocumented)
interface LinkContext {
	// (undocumented)
	icon?: string;
	// (undocumented)
	name: string;
	// (undocumented)
	type?: JsonLd.Primitives.ObjectType[];
}

// @public (undocumented)
export interface LinkPerson {
	// (undocumented)
	name: string;
	// (undocumented)
	src?: string;
}

// @public (undocumented)
export type LinkPersonUpdatedBy = Array<LinkPerson>;

// @public (undocumented)
export interface LinkPreview {
	// (undocumented)
	aspectRatio?: number;
	// (undocumented)
	content?: string;
	// (undocumented)
	src?: string;
}

// @public (undocumented)
export interface LinkProvider {
	// (undocumented)
	icon?: React_2.ReactNode;
	// (undocumented)
	id?: string;
	// (undocumented)
	image?: string;
	// (undocumented)
	text: string;
}

// @public (undocumented)
type LinkTypeAssignedTo = JsonLd.Data.Task | JsonLd.Data.TaskType;

// @public (undocumented)
export type LinkTypeCreated =
	| JsonLd.Data.Document
	| JsonLd.Data.Page
	| JsonLd.Data.Project
	| JsonLd.Data.SourceCodeCommit
	| JsonLd.Data.SourceCodePullRequest
	| JsonLd.Data.SourceCodeReference
	| JsonLd.Data.SourceCodeRepository
	| JsonLd.Data.Task
	| JsonLd.Data.TaskType;

// @public (undocumented)
export type LinkTypeUpdatedBy =
	| JsonLd.Data.Document
	| JsonLd.Data.Project
	| JsonLd.Data.SourceCodePullRequest
	| JsonLd.Data.SourceCodeReference
	| JsonLd.Data.SourceCodeRepository
	| JsonLd.Data.Task;

// (No @packageDocumentation comment for this package)
```

<!--SECTION END: Main Entry Types-->

### Peer Dependencies

<!--SECTION START: Peer Dependencies-->

```json
{
	"react": "^16.8.0"
}
```

<!--SECTION END: Peer Dependencies-->
