openvibe-sdk/meme

Generated at from openvibe-contracts v0.222.0 and openvibe-sdk v0.81.0.

From types/meme.d.ts (browser build available). Declarations are shown verbatim.

interface MemeOptions

export interface MemeOptions { signal?: AbortSignal; }

interface MemeDefaults

export interface MemeDefaults extends MemeOptions { baseUrl?: string; }

type MemeScope

export type MemeScope = 'openvibe' | 'internet';

type MemeStatus

export type MemeStatus = 'rising' | 'peaked' | 'classic' | 'dead';

type MemeLabel

export type MemeLabel = 'nudity' | 'language' | 'graphic' | '18+' | 'flashing' | 'spoilers';

interface MemeEntry

export interface MemeEntry {
    id: string;
    slug: string;
    title: string;
    kind: string;
    scope: MemeScope;
    summary: string | null;
    meaning?: string | null;
    usage?: string | null;
    labels: MemeLabel[];
    status: MemeStatus;
    status_since: string;
    first_seen_at: string;
    last_seen_at: string;
    visibility: 'public' | 'unlisted' | 'hidden';
    revision: number;
    submitted_by?: string | null;
    uses?: number;
    created_at: string;
    updated_at: string;
    [field: string]: unknown;
}

interface MemeCitation

export interface MemeCitation {
    id: number;
    entry_id: string;
    role: 'origin' | 'use' | 'example';
    source_service: string;
    source_type: string;
    source_id: string;
    quote_text: string;
    url: string;
    observed_at: string;
    source_status: 'live' | 'hidden' | 'gone';
    [field: string]: unknown;
}

interface MemeOrigin

export interface MemeOrigin {
    source: 'web' | 'reddit' | 'media' | 'openvibe';
    url: string;
    title: string;
    publisher: string | null;
    author: string | null;
    published_at: string | null;
    retrieved_at: string;
    quote: string | null;
}

interface MemeSpreadPoint

export interface MemeSpreadPoint { id: number; observed_at: string; place: string; url: string | null; count: number | null; note: string | null; }

interface MemeVariation

export interface MemeVariation { id: number; name: string; description: string | null; media_id: string | null; source_url: string | null; }

interface MemeExample

export interface MemeExample { id?: number; media_id: string; caption?: string | null; source_url?: string | null; }

interface MemeRelated

export interface MemeRelated { id: string; slug: string; title: string; status: MemeStatus; summary: string | null; }

interface MemeRevision

export interface MemeRevision {
    revision: number;
    author: string;
    base_revision: number | null;
    change: Record<string, unknown>;
    diff: Array<{ field: string; from: unknown; to: unknown }>;
    moderation_state: 'pending' | 'approved' | 'rejected';
    note: string | null;
    created_at: string;
    reviewed_at: string | null;
    reviewed_by: string | null;
    entry_slug?: string;
    entry_title?: string;
}

interface MemeEntryDetail

export interface MemeEntryDetail extends MemeEntry {
    origin: MemeOrigin | MemeCitation | null;
    web_origin?: MemeOrigin | null;
    citations: MemeCitation[];
    timeline: MemeCitation[];
    examples: MemeExample[];
    spread: MemeSpreadPoint[];
    variations: MemeVariation[];
    related: MemeRelated[];
    revisions: MemeRevision[];
}

interface MemeSearchQuery

export interface MemeSearchQuery extends MemeOptions {
    scope?: MemeScope;
    q?: string;
    status?: MemeStatus;
    label?: MemeLabel;
    kind?: string;
    sort?: 'newest' | 'top';
    window?: 'day' | 'week' | 'month' | 'all';
    channel?: number | string;
    limit?: number;
    cursor?: string;
}

interface MemeSearchResult

export interface MemeSearchResult { count: number; entries: MemeEntry[]; next_cursor: string | null; }

interface MemeTrendPost

export interface MemeTrendPost {
    id: string; subreddit: string; title: string; author: string | null; permalink: string;
    url: string | null; image_url: string | null; media_id: string | null; phash: string | null;
    score: number; comments: number; over_18: boolean; created_at: string; last_seen_at: string;
    velocity: number; velocity_basis: 'samples' | 'score_age'; velocity_samples: number; score_delta: number | null;
}

interface MemeTrendTemplate

export interface MemeTrendTemplate { id: string; label: string | null; phash: string; image_url: string | null; media_id: string | null; post_count: number; first_seen_at: string; last_seen_at: string; }

interface MemeTrends

export interface MemeTrends {
    window: 'day' | 'week'; from: string; to: string;
    rising: MemeTrendPost[]; templates: MemeTrendTemplate[];
    entries: Array<Pick<MemeEntry, 'id' | 'slug' | 'title' | 'kind' | 'status' | 'first_seen_at' | 'last_seen_at'>>;
    subreddits: Array<{ subreddit: string; posts: number; score: number; top: { id: string; title: string; score: number } | null }>;
}

interface MemeAnalysisInput

export interface MemeAnalysisInput { url?: string; media_id?: string; mediaId?: string; }

interface MemeAnalysisOrigin

export interface MemeAnalysisOrigin { title: string; url: string | null; year: number | null; confidence: number; why: string | null; entry_slug: string | null; }

interface MemeAnalysis

export interface MemeAnalysis {
    id: string;
    input: { url: string | null; media_id: string | null };
    template: { name: string | null; known: boolean; template_id: string | null; template: MemeTemplate | null; closest_entry: MemeRelated | null };
    matched_entries: Array<MemeRelated & { kind: string; match: number }>;
    origins: MemeAnalysisOrigin[];
    meaning: string | null;
    usage: string | null;
    labels: MemeLabel[];
    vision: { alt: string; caption: string; tags: string[] } | null;
    reddit: {
        spread: { subreddit: string | null; score: number; upvote_ratio: number; comments: number; created_at: string | null; permalink: string | null; crossposts: number; over_18: boolean };
        post: { id: string; title: string; permalink: string | null };
        comments_tone: { tone: 'positive' | 'negative' | 'mixed' | 'neutral' | 'ironic'; summary: string } | null;
        comments_sampled: number;
    } | null;
    similar: string[];
    cost_usd: number;
    created_at: string;
}

interface MemeResearchInput

export interface MemeResearchInput { topic: string; }

interface MemeResearchSource

export interface MemeResearchSource { n: number; title: string; url: string; provider: string; license: string | null; retrieved_at: string | null; snippet: string; }

interface MemeResearch

export interface MemeResearch {
    id: string;
    topic: string;
    status: 'queued' | 'running' | 'succeeded' | 'failed';
    title: string | null;
    summary: string | null;
    body_markdown?: string | null;
    sources: MemeResearchSource[];
    facts: Array<{ label: string; value: string }>;
    citations: MemeResearchSource[];
    cost_usd: number;
    error: { code: string; detail: string | null } | null;
    entry_slug: string | null;
    created_at: string;
    started_at: string | null;
    finished_at: string | null;
    subject?: string;
}

interface MemeTemplate

export interface MemeTemplate { id: string; name: string; image_url: string; box_count: number; source: string; license: string; layout?: Record<string, unknown> | null; created_at?: string; }

interface MemeGenerateInput

export interface MemeGenerateInput { template?: string; template_slug?: string; topic?: string; lines?: string[]; }

interface MemeGenerateResult

export interface MemeGenerateResult {
    media_id: string;
    media_url: string;
    captions: string[];
    template: MemeTemplate;
    labels: MemeLabel[];
    caption: { id: string; subject: string; template_id: string; lines: string[]; created_at: string; visibility: string; labels?: MemeLabel[]; media_id?: string | null };
    cost_usd: number;
}

interface MemeClient

export interface MemeClient {
    search(query?: MemeSearchQuery): Promise<MemeSearchResult>;
    entry(slug: string, opts?: MemeOptions): Promise<MemeEntryDetail>;
    revisions(slug: string, opts?: MemeOptions): Promise<{ slug: string; count: number; revisions: MemeRevision[] }>;
    trends(opts?: { window?: 'day' | 'week'; limit?: number } & MemeOptions): Promise<MemeTrends>;
    analyze(input: MemeAnalysisInput, opts?: MemeOptions): Promise<MemeAnalysis>;
    research(topic: string, opts?: MemeOptions): Promise<MemeResearch>;
    researchGet(id: string, opts?: MemeOptions): Promise<MemeResearch>;
    saveResearch(id: string, opts?: MemeOptions): Promise<{ entry: MemeEntry; already: boolean }>;
    generate(input: MemeGenerateInput, opts?: MemeOptions): Promise<MemeGenerateResult>;
}

export export function createMemeClient(client: OpenVibeClient, def

export function createMemeClient(client: OpenVibeClient, defaults?: MemeDefaults): MemeClient;