"""Shared TypedDict contracts for integrations.

This module provides base contract types that are shared across multiple
integrations. Integration-specific contracts (GitHubIssueMeta, LinkedInMentionMeta)
should be defined in their respective integration modules.

See:
    - integrations/github/contracts.py for GitHub-specific contracts
    - integrations/linkedin/contracts.py for LinkedIn-specific contracts
"""

from typing import NotRequired, TypedDict


class BaseMeta(TypedDict, total=False):
    """Base metadata contract for all integration metadata.

    This provides common fields that may be present in any integration's
    metadata. Integration-specific contracts extend this with their
    platform-specific fields.
    """

    # Author member ID is common across integrations
    author_member_id: NotRequired[str]  # UUID of linked Member record
