/**
 * Portal Content Domain Adapter — Implements ContentDomainApi using the
 * portal-tenant Content BFF endpoints.
 *
 * Follows the composite adapter pattern (see contacts-api-adapter.ts):
 * all sub-factory functions are private; the only public export is the
 * composite `createPortalContentDomainApiAdapter`.
 */
import type { FetchClient } from "@fluid-app/api-client-core";
import type { ContentMediaApi, ContentMediaProductsApi } from "@fluid-app/shareables-core/media-api";
import type { ContentPlaylistsApi } from "@fluid-app/shareables-core/playlists-api";
import type { ContentSharesApi } from "@fluid-app/shareables-core/shares-api";
import type { ContentDamAssetsApi } from "@fluid-app/shareables-core/dam-assets-api";
import type { ContentMetricsApi } from "@fluid-app/shareables-core/metrics-api";
import type { ContentPagesApi } from "@fluid-app/shareables-core/pages-api";
import type { ContentEnrollmentPacksApi } from "@fluid-app/shareables-core/enrollment-packs-api";
import type { ContentDomainApi } from "@fluid-app/shareables-core/content-domain-api";
declare function createRawMediaAdapter(client: FetchClient): ContentMediaApi;
/**
 * Creates a ContentMediaProductsApi adapter backed by the portal-tenant content BFF.
 */
export declare function createPortalTenantMediaProductsAdapter(client: FetchClient): ContentMediaProductsApi;
declare function createRawSharesAdapter(client: FetchClient): ContentSharesApi;
declare function createRawPagesAdapter(client: FetchClient): ContentPagesApi;
declare function createRawDamAssetsAdapter(client: FetchClient): ContentDamAssetsApi;
declare function createMetricsAdapter(client: FetchClient): ContentMetricsApi;
/**
 * Narrow interface for the product media endpoint. Matches
 * PortalProductsApi.getProductMedia without importing the full products-core
 * dependency graph, keeping the dependency graph clean.
 */
export interface ProductMediaSource {
    getProductMedia(productId: string | number): Promise<{
        media: ReadonlyArray<{
            id?: number;
            title?: string;
            media_type?: string;
            url?: string;
        }>;
    }>;
}
/** @internal — For tests only. */
export declare const _createRawMediaAdapter: typeof createRawMediaAdapter;
/** @internal — For tests only. */
export declare const _createRawDamAssetsAdapter: typeof createRawDamAssetsAdapter;
/** @internal — For tests only. */
export declare const _createRawSharesAdapter: typeof createRawSharesAdapter;
/** @internal — For tests only. */
export declare const _createMetricsAdapter: typeof createMetricsAdapter;
/** @internal — For tests only. */
export declare const _createRawPagesAdapter: typeof createRawPagesAdapter;
/**
 * Creates a composite ContentDomainApi backed by the portal-tenant Content
 * BFF endpoints. Follows the same pattern as
 * `createPortalContactsDomainApiAdapter`.
 */
export declare function createPortalContentDomainApiAdapter(client: FetchClient, productsApi: ProductMediaSource): ContentDomainApi;
/**
 * Creates a ContentPlaylistsApi (the port-level playlists adapter) for
 * operations that aren't part of the shareables PlaylistsApi — e.g.
 * `deletePlaylist`. Exposed separately because ContentDomainApi.playlists
 * is the higher-level shareables PlaylistsApi.
 */
export declare function createPortalContentPlaylistsAdapter(client: FetchClient): ContentPlaylistsApi;
/**
 * Creates a ContentPagesApi (the port-level pages adapter) for screens that
 * need to list/show pages outside of ShareablesApiProvider — e.g. the
 * playlist editor's content picker. Mirrors createPortalContentPlaylistsAdapter.
 */
export declare function createPortalContentPagesAdapter(client: FetchClient): ContentPagesApi;
/**
 * Creates a ContentEnrollmentPacksApi adapter for screens that need to
 * list/show enrollment packs outside of ShareablesApiProvider — e.g. the
 * playlist editor's content picker. Backed by the portal-tenant
 * `/api/enrollment_packs` endpoint.
 */
export declare function createPortalContentEnrollmentPacksAdapter(client: FetchClient): ContentEnrollmentPacksApi;
/**
 * Toggles a favorite entry on a given shareable (Medium / Playlist /
 * Product / etc.) via the portal-tenant BFF's /favorites/toggle endpoint.
 * Returns the new is_favorited state reported by the backend.
 */
export declare function toggleFavorite(client: FetchClient, favoriteableId: number, favoriteableType: string): Promise<{
    is_favorited: boolean;
}>;
export {};
//# sourceMappingURL=content-api-adapter.d.ts.map