import type { AdminTagGroupResponse, AdminTagGroupsResponse, AdminTagResponse, CreateTagGroupRequest, CreateTagRequest, SavedItemKind, TagDirectoryResponse, TagDetailResponse, TagGroupDetailResponse, TagListResponse, TagGroupSort, UpdateTagGroupRequest, UpdateTagRequest } from '@playdrop/types';
type ApiResponseLike<T> = {
    status: number;
    body: T;
    headers: Headers;
};
type RequestExecutor = <T>(input: {
    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
    path: string;
    body?: unknown;
    headers?: Record<string, string>;
    signal?: AbortSignal;
}) => Promise<ApiResponseLike<T>>;
type ErrorHandler = (response: ApiResponseLike<unknown>, defaultMessage: string) => never;
export declare function buildTagsApiClientMethods(input: {
    request: RequestExecutor;
    handleApiError: ErrorHandler;
    normalizePositiveIntegerInput: (value: number, errorCode: string) => number;
}): {
    fetchTagDirectory(options?: {
        limit?: number;
        offset?: number;
        tagLimit?: number;
    }): Promise<TagDirectoryResponse>;
    fetchTags(options?: {
        targetKind?: SavedItemKind;
        groupSlug?: string;
        limit?: number;
        offset?: number;
    }): Promise<TagListResponse>;
    fetchTag(groupSlug: string, tagSlug: string): Promise<TagDetailResponse>;
    fetchTagGroup(groupSlug: string, options?: {
        targetKind?: SavedItemKind;
        appType?: string;
        sort?: TagGroupSort;
        limit?: number;
        offset?: number;
    }): Promise<TagGroupDetailResponse>;
    fetchAdminTagGroups(): Promise<AdminTagGroupsResponse>;
    createAdminTagGroup(requestBody: CreateTagGroupRequest): Promise<AdminTagGroupResponse>;
    updateAdminTagGroup(groupSlug: string, requestBody: UpdateTagGroupRequest): Promise<AdminTagGroupResponse>;
    createAdminTag(groupSlug: string, requestBody: CreateTagRequest): Promise<AdminTagResponse>;
    updateAdminTag(groupSlug: string, tagSlug: string, requestBody: UpdateTagRequest): Promise<AdminTagResponse>;
};
export {};
//# sourceMappingURL=tags.d.ts.map