/**
 * Data models for Neuwo API requests and responses.
 *
 * This module defines internal API interfaces (exact API structure) and
 * exported SDK classes (JavaScript conventions) with transformation methods.
 */
interface ApiTagParent {
    [key: string]: {
        value: string;
        URI?: string;
        uri?: string;
    };
}
interface ApiTag {
    URI?: string;
    uri?: string;
    value: string;
    score: string;
    parents?: ApiTagParent[][];
}
interface ApiBrandSafetyTag {
    BS_score?: string;
    BS_indication?: "yes" | "no";
    score?: string;
    indication?: boolean;
}
interface ApiTaxonomyArticle {
    ID: string;
    label: string;
    relevance: string;
}
interface ApiMarketingCategories {
    iab_tier_1?: ApiTaxonomyArticle[];
    iab_tier_2?: ApiTaxonomyArticle[];
    iab_tier_3?: ApiTaxonomyArticle[];
    iab_audience_tier_3?: ApiTaxonomyArticle[];
    iab_audience_tier_4?: ApiTaxonomyArticle[];
    iab_audience_tier_5?: ApiTaxonomyArticle[];
    google_topics?: ApiTaxonomyArticle[];
    Marketing_items?: ApiTaxonomyArticle[];
}
interface ApiSmartTag {
    ID: string;
    name: string;
}
interface ApiTrainingTag {
    articleID: string;
    tag: string;
    addedDate: string;
}
interface ApiSimilarArticle {
    articleID: string;
    headline?: string;
    articleURL?: string;
    imageURL?: string;
    score: number;
    published?: string;
    publicationID?: string;
}
/**
 * Internal API response interface for Article data.
 * Used for parsing JSON responses from the API.
 */
export interface ApiArticle {
    articleID: string;
    fetchDate: string;
    published?: string;
    headline?: string;
    writer?: string;
    category?: string;
    content?: string;
    summary?: string;
    publicationID?: string;
    articleURL?: string;
    imageURL?: string;
    includeInSim?: string | boolean;
}
/**
 * Internal API response interface for GetAiTopics endpoint.
 * Used for parsing JSON responses from the API.
 */
export interface ApiGetAiTopicsResponse {
    tags?: ApiTag[];
    brand_safety?: ApiBrandSafetyTag;
    marketing_categories?: ApiMarketingCategories;
    smart_tags?: ApiSmartTag[];
}
/**
 * Tag parent in the ontology hierarchy.
 */
export declare class TagParent {
    readonly level: string;
    readonly value: string;
    readonly uri: string;
    /**
     * @param level - Hierarchy level of the parent tag
     * @param value - Display value of the parent tag
     * @param uri - URI identifier for the parent tag
     */
    constructor(level: string, value: string, uri: string);
    static fromApiResponse(data: ApiTagParent): TagParent;
}
/**
 * Subject tag with relevance score.
 */
export declare class Tag {
    readonly uri: string;
    readonly value: string;
    readonly score: number;
    readonly parents?: TagParent[][] | undefined;
    /**
     * @param uri - URI identifier for the tag
     * @param value - Display value of the tag
     * @param score - Relevance score (0-1)
     * @param parents - Optional hierarchy of parent tags
     */
    constructor(uri: string, value: string, score: number, parents?: TagParent[][] | undefined);
    static fromApiResponse(data: ApiTag): Tag;
}
/**
 * Brand safety classification.
 */
export declare class BrandSafetyTag {
    readonly score: number;
    readonly indication: "yes" | "no";
    /**
     * @param score - Brand safety score
     * @param indication - Brand safety indication ("yes" for safe, "no" for unsafe)
     */
    constructor(score: number, indication: "yes" | "no");
    /**
     * Whether the content is brand safe.
     */
    get isSafe(): boolean;
    static fromApiResponse(data: ApiBrandSafetyTag): BrandSafetyTag;
}
/**
 * Taxonomy classification (IAB, Google Topics, etc.).
 */
export declare class TaxonomyArticle {
    readonly id: string;
    readonly label: string;
    readonly relevance: number;
    /**
     * @param id - Unique identifier for the taxonomy category
     * @param label - Human-readable label for the category
     * @param relevance - Relevance score for this classification
     */
    constructor(id: string, label: string, relevance: number);
    static fromApiResponse(data: ApiTaxonomyArticle): TaxonomyArticle;
}
/**
 * Marketing categories including IAB taxonomies and Google Topics.
 */
export declare class MarketingCategories {
    readonly iabTier1: TaxonomyArticle[];
    readonly iabTier2: TaxonomyArticle[];
    readonly iabTier3: TaxonomyArticle[];
    readonly iabAudienceTier3: TaxonomyArticle[];
    readonly iabAudienceTier4: TaxonomyArticle[];
    readonly iabAudienceTier5: TaxonomyArticle[];
    readonly googleTopics: TaxonomyArticle[];
    readonly marketingItems: TaxonomyArticle[];
    /**
     * @param iabTier1 - IAB Content Taxonomy tier 1 categories
     * @param iabTier2 - IAB Content Taxonomy tier 2 categories
     * @param iabTier3 - IAB Content Taxonomy tier 3 categories
     * @param iabAudienceTier3 - IAB Audience Taxonomy tier 3 categories
     * @param iabAudienceTier4 - IAB Audience Taxonomy tier 4 categories
     * @param iabAudienceTier5 - IAB Audience Taxonomy tier 5 categories
     * @param googleTopics - Google Topics API classifications
     * @param marketingItems - Custom marketing category items
     */
    constructor(iabTier1: TaxonomyArticle[], iabTier2: TaxonomyArticle[], iabTier3: TaxonomyArticle[], iabAudienceTier3: TaxonomyArticle[], iabAudienceTier4: TaxonomyArticle[], iabAudienceTier5: TaxonomyArticle[], googleTopics: TaxonomyArticle[], marketingItems: TaxonomyArticle[]);
    static fromApiResponse(data: ApiMarketingCategories): MarketingCategories;
}
/**
 * Smart tag classification.
 */
export declare class SmartTag {
    readonly id: string;
    readonly name: string;
    /**
     * @param id - Unique identifier for the smart tag
     * @param name - Display name of the smart tag
     */
    constructor(id: string, name: string);
    static fromApiResponse(data: ApiSmartTag): SmartTag;
}
/**
 * Training tag for model improvement.
 */
export declare class TrainingTag {
    readonly articleId: string;
    readonly tag: string;
    readonly addedDate: Date;
    /**
     * @param articleId - Unique identifier of the article
     * @param tag - Training tag value
     * @param addedDate - Date when the training tag was added
     */
    constructor(articleId: string, tag: string, addedDate: Date);
    static fromApiResponse(data: ApiTrainingTag): TrainingTag;
}
/**
 * Similar article result.
 */
export declare class SimilarArticle {
    readonly articleId: string;
    readonly score: number;
    readonly headline?: string | undefined;
    readonly articleUrl?: string | undefined;
    readonly imageUrl?: string | undefined;
    readonly published?: Date | undefined;
    readonly publicationId?: string | undefined;
    /**
     * @param articleId - Unique identifier of the similar article
     * @param score - Similarity score
     * @param headline - Optional article headline
     * @param articleUrl - Optional URL of the article
     * @param imageUrl - Optional URL of the article image
     * @param published - Optional publication date
     * @param publicationId - Optional publication identifier
     */
    constructor(articleId: string, score: number, headline?: string | undefined, articleUrl?: string | undefined, imageUrl?: string | undefined, published?: Date | undefined, publicationId?: string | undefined);
    static fromApiResponse(data: ApiSimilarArticle): SimilarArticle;
}
/**
 * Article metadata.
 */
export declare class Article {
    readonly articleId: string;
    readonly fetchDate: Date;
    readonly published?: Date | undefined;
    readonly headline?: string | undefined;
    readonly writer?: string | undefined;
    readonly category?: string | undefined;
    readonly content?: string | undefined;
    readonly summary?: string | undefined;
    readonly publicationId?: string | undefined;
    readonly articleUrl?: string | undefined;
    readonly imageUrl?: string | undefined;
    readonly includeInSim?: boolean | undefined;
    /**
     * @param articleId - Unique identifier of the article
     * @param fetchDate - Date when the article was fetched
     * @param published - Optional publication date
     * @param headline - Optional article headline
     * @param writer - Optional article author
     * @param category - Optional article category
     * @param content - Optional article content
     * @param summary - Optional article summary
     * @param publicationId - Optional publication identifier
     * @param articleUrl - Optional URL of the article
     * @param imageUrl - Optional URL of the article image
     * @param includeInSim - Optional flag for similarity model inclusion
     */
    constructor(articleId: string, fetchDate: Date, published?: Date | undefined, headline?: string | undefined, writer?: string | undefined, category?: string | undefined, content?: string | undefined, summary?: string | undefined, publicationId?: string | undefined, articleUrl?: string | undefined, imageUrl?: string | undefined, includeInSim?: boolean | undefined);
    static fromApiResponse(data: ApiArticle): Article;
}
/**
 * Complete AI topics response including tags, brand safety, and marketing categories.
 */
export declare class GetAiTopicsResponse {
    readonly tags: Tag[];
    readonly brandSafety: BrandSafetyTag;
    readonly marketingCategories: MarketingCategories;
    readonly smartTags: SmartTag[];
    /**
     * @param tags - List of subject tags with relevance scores
     * @param brandSafety - Brand safety classification
     * @param marketingCategories - Marketing categories including IAB and Google Topics
     * @param smartTags - List of smart tag classifications
     */
    constructor(tags: Tag[], brandSafety: BrandSafetyTag, marketingCategories: MarketingCategories, smartTags: SmartTag[]);
    static fromApiResponse(data: ApiGetAiTopicsResponse): GetAiTopicsResponse;
}
export {};
//# sourceMappingURL=models.d.ts.map