import type { ApiClient } from "@promobase/sdk-runtime"; import { Cursor } from "@promobase/sdk-runtime"; import { metaPagination } from "../../pagination.ts"; import type { AdAccountFields } from "./ad-account.ts"; import type { AdStudyFields } from "./ad-study.ts"; import type { AdVideoFields } from "./ad-video.ts"; import type { AgeRangeFields } from "./age-range.ts"; import type { AlbumFields } from "./album.ts"; import type { AppRequestFields } from "./app-request.ts"; import type { AppRequestFormerRecipientFields } from "./app-request-former-recipient.ts"; import type { ApplicationFields } from "./application.ts"; import type { BusinessFields } from "./business.ts"; import type { BusinessAssetGroupFields } from "./business-asset-group.ts"; import type { BusinessUserFields } from "./business-user.ts"; import type { CanvasFields } from "./canvas.ts"; import type { CoverPhotoFields } from "./cover-photo.ts"; import type { CurrencyFields } from "./currency.ts"; import type { EducationExperienceFields } from "./education-experience.ts"; import type { EventFields } from "./event.ts"; import type { ExperienceFields } from "./experience.ts"; import type { FundraiserPersonToCharityFields } from "./fundraiser-person-to-charity.ts"; import type { GroupFields } from "./group.ts"; import type { LiveVideoFields } from "./live-video.ts"; import type { PageFields } from "./page.ts"; import type { PageUserMessageThreadLabelFields } from "./page-user-message-thread-label.ts"; import type { PaymentEnginePaymentFields } from "./payment-engine-payment.ts"; import type { PaymentPricepointsFields } from "./payment-pricepoints.ts"; import type { PermissionFields } from "./permission.ts"; import type { PhotoFields } from "./photo.ts"; import type { PostFields } from "./post.ts"; import type { ProductCatalogFields } from "./product-catalog.ts"; import type { ProfilePictureSourceFields } from "./profile-picture-source.ts"; import type { UnifiedThreadFields } from "./unified-thread.ts"; import type { UserCoverPhotoFields } from "./user-cover-photo.ts"; import type { UserIDForAppFields } from "./user-id-for-app.ts"; import type { UserIDForPageFields } from "./user-id-for-page.ts"; import type { VideoUploadLimitsFields } from "./video-upload-limits.ts"; import type { WhatsAppBusinessAccountFields } from "./whats-app-business-account.ts"; import type { UserLocalNewsMegaphoneDismissStatus, UserLocalNewsSubscriptionStatus } from "../enums.ts"; export interface UserFields { about: string; age_range: AgeRangeFields; birthday: string; client_business_id: string; community: GroupFields; cover: UserCoverPhotoFields; currency: CurrencyFields; education: EducationExperienceFields[]; email: string; favorite_athletes: ExperienceFields[]; favorite_teams: ExperienceFields[]; first_name: string; gender: string; hometown: PageFields; id: string; inspirational_people: ExperienceFields[]; install_type: string; installed: boolean; is_guest_user: boolean; is_work_account: boolean; languages: ExperienceFields[]; last_name: string; link: string; local_news_megaphone_dismiss_status: boolean; local_news_subscription_status: boolean; locale: string; location: PageFields; meeting_for: string[]; middle_name: string; name: string; name_format: string; payment_pricepoints: PaymentPricepointsFields; political: string; profile_pic: string; quotes: string; relationship_status: string; religion: string; shared_login_upgrade_required_by: string; short_name: string; significant_other: UserFields; sports: ExperienceFields[]; supports_donate_button_in_live_video: boolean; third_party_id: string; timezone: number; token_for_business: string; updated_time: string; verified: boolean; video_upload_limits: VideoUploadLimitsFields; website: string; } export interface UserCreateAccessTokensParams { business_app: string; page_id?: string; scope?: string[]; set_token_expires_in_60_days?: boolean; [key: string]: unknown; } export interface UserListAccountsParams { ad_id?: string; is_place?: boolean; is_promotable?: boolean; [key: string]: unknown; } export interface UserCreateAccountsParams { about?: string; address?: string; category?: number; category_enum?: string; category_list?: string[]; city_id?: string; coordinates?: Record; cover_photo?: Record; description?: string; ignore_coordinate_warnings?: boolean; location?: Record; name: string; phone?: string; picture?: string; website?: string; zip?: string; [key: string]: unknown; } export interface UserCreateAdStudiesParams { cells?: Record[]; client_business?: string; confidence_level?: number; cooldown_start_time?: number; description?: string; end_time?: number; name?: string; objectives?: Record[]; observation_end_time?: number; start_time?: number; type?: string; viewers?: number[]; [key: string]: unknown; } export interface UserCreateApplicationsParams { business_app: number; [key: string]: unknown; } export interface UserListAssignedBusinessAssetGroupsParams { contained_asset_id?: string; [key: string]: unknown; } export interface UserListAssignedPagesParams { pages?: number[]; [key: string]: unknown; } export interface UserDeleteBusinessesParams { business?: string; [key: string]: unknown; } export interface UserCreateBusinessesParams { child_business_external_id?: string; email?: string; name: string; primary_page?: string; sales_rep_email?: string; survey_business_type?: string; survey_num_assets?: number; survey_num_people?: number; timezone_id?: string; vertical: string; [key: string]: unknown; } export interface UserListConversationsParams { folder?: string; platform?: string; tags?: string[]; user_id?: string; [key: string]: unknown; } export interface UserListEventsParams { include_canceled?: boolean; type?: string; [key: string]: unknown; } export interface UserListFeedParams { include_hidden?: boolean; q?: string; show_expired?: boolean; since?: string; until?: string; with?: string; [key: string]: unknown; } export interface UserCreateFeedParams { actions?: Record; album_id?: string; android_key_hash?: string; application_id?: string; asked_fun_fact_prompt_id?: number; asset3d_id?: string; associated_id?: string; attach_place_suggestion?: boolean; attached_media?: Record[]; audience_exp?: boolean; backdated_time?: string; backdated_time_granularity?: string; breaking_news?: boolean; breaking_news_expiration?: number; call_to_action?: Record; caption?: string; child_attachments?: Record[]; client_mutation_id?: string; composer_entry_picker?: string; composer_entry_point?: string; composer_entry_time?: number; composer_session_events_log?: string; composer_session_id?: string; composer_source_surface?: string; composer_type?: string; connection_class?: string; content_attachment?: string; coordinates?: Record; cta_link?: string; cta_type?: string; description?: string; direct_share_status?: number; expanded_height?: number; expanded_width?: number; feed_targeting?: Record; formatting?: string; fun_fact_prompt_id?: string; fun_fact_toastee_id?: number; height?: number; home_checkin_city_id?: Record; image_crops?: Record; implicit_with_tags?: number[]; instant_game_entry_point_data?: string; ios_bundle_id?: string; is_backout_draft?: boolean; is_boost_intended?: boolean; is_explicit_location?: boolean; is_explicit_share?: boolean; is_group_linking_post?: boolean; is_photo_container?: boolean; link?: string; location_source_id?: string; manual_privacy?: boolean; message?: string; multi_share_end_card?: boolean; multi_share_optimized?: boolean; name?: string; nectar_module?: string; object_attachment?: string; og_action_type_id?: string; og_hide_object_attachment?: boolean; og_icon_id?: string; og_object_id?: string; og_phrase?: string; og_set_profile_badge?: boolean; og_suggestion_mechanism?: string; page_recommendation?: string; picture?: string; place?: Record; place_attachment_setting?: string; place_list?: string; place_list_data?: unknown[]; post_surfaces_blacklist?: string[]; posting_to_redspace?: string; privacy?: string; prompt_id?: string; prompt_tracking_string?: string; properties?: Record; proxied_app_id?: string; publish_event_id?: number; published?: boolean; quote?: string; ref?: string[]; referenceable_image_ids?: string[]; referral_id?: string; scheduled_publish_time?: string; source?: string; sponsor_id?: string; sponsor_relationship?: number; suggested_place_id?: Record; tags?: number[]; target_surface?: string; targeting?: Record; text_format_metadata?: string; text_format_preset_id?: string; text_only_place?: string; thumbnail?: File | Blob | ReadableStream; time_since_original_post?: number; title?: string; tracking_info?: string; unpublished_content_type?: string; user_selected_tags?: boolean; video_start_time_ms?: number; viewer_coordinates?: Record; width?: number; [key: string]: unknown; } export interface UserListFriendsParams { uid?: number; [key: string]: unknown; } export interface UserCreateFundraisersParams { charity_id?: string; cover_photo?: File | Blob | ReadableStream; currency: string; description: string; end_time: string; external_event_name?: string; external_event_start_time?: string; external_event_uri?: string; external_fundraiser_uri?: string; external_id: string; fundraiser_type: string; goal_amount: number; name: string; page_id?: string; [key: string]: unknown; } export interface UserListGroupsParams { admin_only?: boolean; parent?: string; [key: string]: unknown; } export interface UserListIdsForAppsParams { app?: number; [key: string]: unknown; } export interface UserListIdsForBusinessParams { app?: number; [key: string]: unknown; } export interface UserListIdsForPagesParams { page?: number; [key: string]: unknown; } export interface UserListLikesParams { target_id?: string; [key: string]: unknown; } export interface UserListLiveVideosParams { broadcast_status?: string[]; source?: string; [key: string]: unknown; } export interface UserCreateLiveVideosParams { content_tags?: string[]; description?: string; enable_backup_ingest?: boolean; encoding_settings?: string; event_params?: Record; fisheye_video_cropped?: boolean; front_z_rotation?: number; is_audio_only?: boolean; is_spherical?: boolean; original_fov?: number; privacy?: string; projection?: string; published?: boolean; schedule_custom_profile_image?: File | Blob | ReadableStream; spatial_audio_format?: string; status?: string; stereoscopic_mode?: string; stop_on_delete_stream?: boolean; stream_type?: string; title?: string; [key: string]: unknown; } export interface UserCreateMessengerKidsAccountsUnreadBadgeParams { proxied_app_id: number; [key: string]: unknown; } export interface UserListMusicParams { target_id?: string; [key: string]: unknown; } export interface UserCreateNotificationsParams { bot_message_payload_elements?: string; filtering?: string[]; href?: Record; label?: string; message?: Record; notif_ids?: string[]; notification_content_id?: number; payload?: string; read?: boolean; ref?: string; schedule_interval?: number; seen?: boolean; template?: Record; type?: string; [key: string]: unknown; } export interface UserDeletePermissionsParams { permission?: string; [key: string]: unknown; } export interface UserListPermissionsParams { permission?: string; status?: string; [key: string]: unknown; } export interface UserListPhotosParams { type?: string; [key: string]: unknown; } export interface UserCreatePhotosParams { aid?: string; allow_spherical_photo?: boolean; alt_text_custom?: string; android_key_hash?: string; application_id?: string; attempt?: number; audience_exp?: boolean; backdated_time?: string; backdated_time_granularity?: string; caption?: string; composer_session_id?: string; direct_share_status?: number; feed_targeting?: Record; filter_type?: number; full_res_is_coming_later?: boolean; initial_view_heading_override_degrees?: number; initial_view_pitch_override_degrees?: number; initial_view_vertical_fov_override_degrees?: number; ios_bundle_id?: string; is_explicit_location?: boolean; is_explicit_place?: boolean; manual_privacy?: boolean; message?: string; name?: string; no_story?: boolean; offline_id?: number; og_action_type_id?: string; og_icon_id?: string; og_object_id?: string; og_phrase?: string; og_set_profile_badge?: boolean; og_suggestion_mechanism?: string; place?: Record; privacy?: string; profile_id?: number; provenance_info?: Record; proxied_app_id?: string; published?: boolean; qn?: string; scheduled_publish_time?: number; spherical_metadata?: Record; sponsor_id?: string; sponsor_relationship?: number; tags?: Record[]; target_id?: number; targeting?: Record; time_since_original_post?: number; uid?: number; unpublished_content_type?: string; url?: string; user_selected_tags?: boolean; vault_image_id?: string; [key: string]: unknown; } export interface UserListPictureParams { height?: number; redirect?: boolean; type?: string; width?: number; [key: string]: unknown; } export interface UserListPostsParams { include_hidden?: boolean; q?: string; show_expired?: boolean; since?: string; until?: string; with?: string; [key: string]: unknown; } export interface UserListRichMediaDocumentsParams { query?: string; [key: string]: unknown; } export interface UserCreateStagingResourcesParams { file?: File | Blob | ReadableStream; [key: string]: unknown; } export interface UserListVideosParams { type?: string; [key: string]: unknown; } export interface UserCreateVideosParams { application_id?: string; asked_fun_fact_prompt_id?: number; audio_story_wave_animation_handle?: string; composer_entry_picker?: string; composer_entry_point?: string; composer_entry_time?: number; composer_session_events_log?: string; composer_session_id?: string; composer_source_surface?: string; composer_type?: string; container_type?: string; content_category?: string; creative_tools?: string; description?: string; direct_share_status?: number; edit_description_spec?: Record; embeddable?: boolean; end_offset?: number; fbuploader_video_file_chunk?: string; file_size?: number; file_url?: string; fisheye_video_cropped?: boolean; formatting?: string; fov?: number; front_z_rotation?: number; fun_fact_prompt_id?: string; fun_fact_toastee_id?: number; guide?: number[][]; guide_enabled?: boolean; initial_heading?: number; initial_pitch?: number; instant_game_entry_point_data?: string; is_boost_intended?: boolean; is_explicit_share?: boolean; is_group_linking_post?: boolean; is_partnership_ad?: boolean; is_voice_clip?: boolean; location_source_id?: string; manual_privacy?: boolean; no_story?: boolean; og_action_type_id?: string; og_icon_id?: string; og_object_id?: string; og_phrase?: string; og_suggestion_mechanism?: string; original_fov?: number; original_projection_type?: string; partnership_ad_ad_code?: string; privacy?: string; publish_event_id?: number; referenced_sticker_id?: string; replace_video_id?: string; slideshow_spec?: Record; source?: string; source_instagram_media_id?: string; spherical?: boolean; sponsor_id?: string; start_offset?: number; swap_mode?: string; text_format_metadata?: string; thumb?: File | Blob | ReadableStream; time_since_original_post?: number; title?: string; transcode_setting_properties?: string; unpublished_content_type?: string; upload_phase?: string; upload_session_id?: string; upload_setting_properties?: string; video_file_chunk?: string; video_id_original?: string; video_start_time_ms?: number; waterfall_id?: string; [key: string]: unknown; } export interface UserUpdateParams { emoji_color_pref?: number; firstname?: string; lastname?: string; local_news_megaphone_dismiss_status?: UserLocalNewsMegaphoneDismissStatus; local_news_subscription_status?: UserLocalNewsSubscriptionStatus; name?: string; password?: string; [key: string]: unknown; } export function userNode(client: ApiClient, id: string) { return { __path: id, __brand: undefined as unknown as UserFields, get: (opts: { fields: F; params?: Record }) => client.get>(`${id}`, opts), update: (params: UserUpdateParams) => client.post(`${id}`, params as Record), delete: () => client.delete(`${id}`, {}), accessTokens: { __path: `${id}/access_tokens`, __brand: undefined as unknown as UserFields, create: (params: UserCreateAccessTokensParams) => client.post(`${id}/access_tokens`, params as Record), delete: (params?: Record) => client.delete(`${id}/access_tokens`, params as Record ?? {}), }, accounts: { __path: `${id}/accounts`, __brand: undefined as unknown as PageFields, list: (opts: { fields: F; params?: UserListAccountsParams }) => new Cursor>(client, `${id}/accounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateAccountsParams) => client.post>(`${id}/accounts`, params as Record), }, adStudies: { __path: `${id}/ad_studies`, __brand: undefined as unknown as AdStudyFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/ad_studies`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateAdStudiesParams) => client.post(`${id}/ad_studies`, params as Record), }, adaccounts: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/adaccounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), albums: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/albums`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createApplication: (params: UserCreateApplicationsParams) => client.post(`${id}/applications`, params as Record), apprequestformerrecipients: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/apprequestformerrecipients`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), apprequests: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/apprequests`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedAdAccounts: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/assigned_ad_accounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedApplications: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/assigned_applications`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedBusinessAssetGroups: (opts: { fields: F; params?: UserListAssignedBusinessAssetGroupsParams }) => new Cursor>(client, `${id}/assigned_business_asset_groups`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedPages: (opts: { fields: F; params?: UserListAssignedPagesParams }) => new Cursor>(client, `${id}/assigned_pages`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedProductCatalogs: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/assigned_product_catalogs`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), assignedWhatsappBusinessAccounts: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/assigned_whatsapp_business_accounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), businessUsers: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/business_users`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), businesses: { __path: `${id}/businesses`, __brand: undefined as unknown as BusinessFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/businesses`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateBusinessesParams) => client.post(`${id}/businesses`, params as Record), delete: (params: UserDeleteBusinessesParams) => client.delete(`${id}/businesses`, params as Record ?? {}), }, conversations: (opts: { fields: F; params?: UserListConversationsParams }) => new Cursor>(client, `${id}/conversations`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), customLabels: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/custom_labels`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), events: (opts: { fields: F; params?: UserListEventsParams }) => new Cursor>(client, `${id}/events`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), feed: { __path: `${id}/feed`, __brand: undefined as unknown as PostFields, list: (opts: { fields: F; params?: UserListFeedParams }) => new Cursor>(client, `${id}/feed`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateFeedParams) => client.post(`${id}/feed`, params as Record), }, friends: (opts: { fields: F; params?: UserListFriendsParams }) => new Cursor>(client, `${id}/friends`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), fundraisers: { __path: `${id}/fundraisers`, __brand: undefined as unknown as FundraiserPersonToCharityFields, list: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/fundraisers`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateFundraisersParams) => client.post(`${id}/fundraisers`, params as Record), }, groups: (opts: { fields: F; params?: UserListGroupsParams }) => new Cursor>(client, `${id}/groups`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), idsForApps: (opts: { fields: F; params?: UserListIdsForAppsParams }) => new Cursor>(client, `${id}/ids_for_apps`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), idsForBusiness: (opts: { fields: F; params?: UserListIdsForBusinessParams }) => new Cursor>(client, `${id}/ids_for_business`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), idsForPages: (opts: { fields: F; params?: UserListIdsForPagesParams }) => new Cursor>(client, `${id}/ids_for_pages`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), likes: (opts: { fields: F; params?: UserListLikesParams }) => new Cursor>(client, `${id}/likes`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), liveVideos: { __path: `${id}/live_videos`, __brand: undefined as unknown as LiveVideoFields, list: (opts: { fields: F; params?: UserListLiveVideosParams }) => new Cursor>(client, `${id}/live_videos`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateLiveVideosParams) => client.post(`${id}/live_videos`, params as Record), }, createMessengerDesktopPerformanceTrace: (params: Record) => client.post(`${id}/messenger_desktop_performance_traces`, params as Record), createMessengerKidsAccountsUnreadBadge: (params: UserCreateMessengerKidsAccountsUnreadBadgeParams) => client.post(`${id}/messenger_kids_accounts_unread_badge`, params as Record), music: (opts: { fields: F; params?: UserListMusicParams }) => new Cursor>(client, `${id}/music`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createNotification: (params: UserCreateNotificationsParams) => client.post(`${id}/notifications`, params as Record), paymentTransactions: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/payment_transactions`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), permissions: { __path: `${id}/permissions`, __brand: undefined as unknown as PermissionFields, list: (opts: { fields: F; params?: UserListPermissionsParams }) => new Cursor>(client, `${id}/permissions`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), delete: (params: UserDeletePermissionsParams) => client.delete(`${id}/permissions`, params as Record ?? {}), }, personalAdAccounts: (opts: { fields: F; params?: Record }) => new Cursor>(client, `${id}/personal_ad_accounts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), photos: { __path: `${id}/photos`, __brand: undefined as unknown as PhotoFields, list: (opts: { fields: F; params?: UserListPhotosParams }) => new Cursor>(client, `${id}/photos`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreatePhotosParams) => client.post(`${id}/photos`, params as Record), }, picture: (opts: { fields: F; params?: UserListPictureParams }) => new Cursor>(client, `${id}/picture`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), posts: (opts: { fields: F; params?: UserListPostsParams }) => new Cursor>(client, `${id}/posts`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), richMediaDocuments: (opts: { fields: F; params?: UserListRichMediaDocumentsParams }) => new Cursor>(client, `${id}/rich_media_documents`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), createStagingResource: (params: UserCreateStagingResourcesParams) => client.post(`${id}/staging_resources`, params as Record), videos: { __path: `${id}/videos`, __brand: undefined as unknown as AdVideoFields, list: (opts: { fields: F; params?: UserListVideosParams }) => new Cursor>(client, `${id}/videos`, opts as { fields: readonly string[]; params?: Record }, metaPagination()), create: (params: UserCreateVideosParams) => client.post(`${id}/videos`, params as Record), }, }; }