/**
 * Zalo Social API Type Definitions
 */
export interface AccessToken {
    access_token: string;
    token_type: 'Bearer';
    expires_in: number;
    refresh_token: string;
    scope: string;
}
export interface RefreshTokenResponse {
    access_token: string;
    token_type: 'Bearer';
    expires_in: number;
    refresh_token?: string;
    scope: string;
}
export interface SocialUserInfo {
    id: string;
    name: string;
    picture?: {
        data: {
            url: string;
        };
    };
    birthday?: string;
    gender?: 'male' | 'female';
    locale?: string;
    email?: string;
    phone?: string;
    verified?: boolean;
}
export interface SocialProfile extends SocialUserInfo {
    cover?: {
        source: string;
    };
    about?: string;
    location?: {
        name: string;
        id: string;
    };
    hometown?: {
        name: string;
        id: string;
    };
    education?: Array<{
        school: {
            name: string;
            id: string;
        };
        type: string;
        year?: {
            name: string;
        };
    }>;
    work?: Array<{
        employer: {
            name: string;
            id: string;
        };
        position?: {
            name: string;
        };
        start_date?: string;
        end_date?: string;
    }>;
    relationship_status?: string;
    website?: string;
    timezone?: number;
    updated_time?: string;
}
export interface SocialFriend {
    id: string;
    name: string;
    picture?: {
        data: {
            url: string;
        };
    };
    mutual_friends?: {
        data: Array<{
            id: string;
            name: string;
        }>;
        summary: {
            total_count: number;
        };
    };
}
export interface SocialFriendsList {
    data: SocialFriend[];
    paging?: {
        cursors?: {
            before: string;
            after: string;
        };
        next?: string;
        previous?: string;
    };
    summary?: {
        total_count: number;
    };
}
export interface SocialPost {
    id: string;
    message?: string;
    story?: string;
    link?: string;
    name?: string;
    caption?: string;
    description?: string;
    picture?: string;
    source?: string;
    type: 'status' | 'photo' | 'video' | 'link' | 'offer' | 'music' | 'note';
    created_time: string;
    updated_time?: string;
    privacy?: {
        value: 'EVERYONE' | 'ALL_FRIENDS' | 'FRIENDS_OF_FRIENDS' | 'CUSTOM';
        description?: string;
        friends?: 'ALL_FRIENDS' | 'FRIENDS_OF_FRIENDS' | 'SOME_FRIENDS';
        networks?: string;
        allow?: string;
        deny?: string;
    };
    likes?: {
        data: Array<{
            id: string;
            name: string;
        }>;
        summary: {
            total_count: number;
            can_like: boolean;
            has_liked: boolean;
        };
    };
    comments?: {
        data: Array<{
            id: string;
            from: {
                id: string;
                name: string;
            };
            message: string;
            created_time: string;
            like_count: number;
            user_likes: boolean;
        }>;
        summary: {
            order: 'chronological' | 'reverse_chronological';
            total_count: number;
            can_comment: boolean;
        };
    };
    shares?: {
        count: number;
    };
}
export interface SocialFeed {
    data: SocialPost[];
    paging?: {
        previous?: string;
        next?: string;
    };
}
export interface SocialMessage {
    id: string;
    from: {
        id: string;
        name: string;
    };
    to: {
        data: Array<{
            id: string;
            name: string;
        }>;
    };
    message?: string;
    created_time: string;
    updated_time?: string;
    attachments?: {
        data: Array<{
            id: string;
            mime_type: string;
            name: string;
            size: number;
            file_url?: string;
            image_data?: {
                url: string;
                width: number;
                height: number;
            };
        }>;
    };
}
export interface SocialConversation {
    id: string;
    participants: {
        data: Array<{
            id: string;
            name: string;
        }>;
    };
    updated_time: string;
    message_count: number;
    unread_count: number;
    can_reply: boolean;
    snippet?: string;
}
export interface SocialAlbum {
    id: string;
    name: string;
    description?: string;
    cover_photo?: {
        id: string;
        source: string;
    };
    count: number;
    type: 'profile' | 'mobile' | 'wall' | 'normal' | 'album';
    created_time: string;
    updated_time: string;
    privacy?: string;
    can_upload: boolean;
}
export interface SocialPhoto {
    id: string;
    album?: {
        id: string;
        name: string;
    };
    name?: string;
    picture: string;
    source: string;
    height: number;
    width: number;
    images: Array<{
        height: number;
        width: number;
        source: string;
    }>;
    created_time: string;
    updated_time?: string;
    tags?: {
        data: Array<{
            id: string;
            name: string;
            x: number;
            y: number;
        }>;
    };
    likes?: {
        data: Array<{
            id: string;
            name: string;
        }>;
        summary: {
            total_count: number;
        };
    };
    comments?: {
        data: Array<{
            id: string;
            from: {
                id: string;
                name: string;
            };
            message: string;
            created_time: string;
        }>;
        summary: {
            total_count: number;
        };
    };
}
export interface SocialVideo {
    id: string;
    title?: string;
    description?: string;
    embed_html?: string;
    picture: string;
    source?: string;
    format: Array<{
        embed_html: string;
        filter: string;
        height: number;
        width: number;
        picture: string;
    }>;
    length: number;
    created_time: string;
    updated_time?: string;
    privacy?: {
        value: string;
        description: string;
    };
}
export interface SocialEvent {
    id: string;
    name: string;
    description?: string;
    start_time: string;
    end_time?: string;
    timezone?: string;
    location?: string;
    venue?: {
        id: string;
        name: string;
        street: string;
        city: string;
        state: string;
        country: string;
        zip: string;
        latitude: number;
        longitude: number;
    };
    privacy: 'OPEN' | 'CLOSED' | 'SECRET';
    attending_count: number;
    declined_count: number;
    maybe_count: number;
    noreply_count: number;
    owner: {
        id: string;
        name: string;
    };
    updated_time: string;
    cover?: {
        source: string;
        offset_x: number;
        offset_y: number;
    };
    picture?: {
        data: {
            url: string;
        };
    };
}
export interface SocialGroup {
    id: string;
    name: string;
    description?: string;
    privacy: 'OPEN' | 'CLOSED' | 'SECRET';
    member_count?: number;
    cover?: {
        source: string;
        offset_x: number;
        offset_y: number;
    };
    picture?: {
        data: {
            url: string;
        };
    };
    owner?: {
        id: string;
        name: string;
    };
    parent?: {
        id: string;
        name: string;
    };
    venue?: {
        id: string;
        name: string;
        street: string;
        city: string;
        state: string;
        country: string;
        zip: string;
        latitude: number;
        longitude: number;
    };
    updated_time: string;
}
export interface OAuthConfig {
    app_id: string;
    app_secret: string;
    redirect_uri: string;
    scope: string[];
}
export interface PKCEConfig {
    code_verifier: string;
    code_challenge: string;
    code_challenge_method: 'S256';
}
export interface AuthorizationRequest {
    app_id: string;
    redirect_uri: string;
    state: string;
    code_challenge: string;
    scope: string;
    response_type: 'code';
}
export interface TokenRequest {
    app_id: string;
    app_secret: string;
    code: string;
    code_verifier: string;
    grant_type: 'authorization_code';
}
export interface RefreshTokenRequest {
    app_id: string;
    app_secret: string;
    refresh_token: string;
    grant_type: 'refresh_token';
}
export interface SocialApiError {
    error: {
        message: string;
        type: string;
        code: number;
        error_subcode?: number;
        fbtrace_id?: string;
    };
}
export interface CursorPagination {
    cursors: {
        before: string;
        after: string;
    };
    next?: string;
    previous?: string;
}
export interface OffsetPagination {
    offset: number;
    limit: number;
    total?: number;
}
//# sourceMappingURL=social.d.ts.map