import { default as default_2 } from 'eventemitter2'; import { default as default_3 } from 'ws'; import { EventEmitter2 } from 'eventemitter2'; export declare class AcceptLuckyBox { } export declare class AcceptQuiz { } export declare class ApiClient { private spoon; instance: ApiHttpClient; user: UserApi; auth: AuthApi; live: LiveApi; play: PlayApi; private httpClient; constructor(spoon: Spoon); } export declare class ApiError extends HttpResponse { status_code: number; detail: string; error: { code: number; message: string; status_code: number; }; toJSON(): Record; } export declare class ApiHttpClient { httpClient: HttpClient; private spoon; private requestQueue; private isRefreshing; private refreshPromise; constructor(httpClient: HttpClient, spoon: Spoon); request(path: string, options: HttpRequest, responseType: ClassType): Promise | ApiError>; private processTokenRefresh; private retryQueuedRequests; private rejectQueuedRequests; } export declare class ApiResponse extends HttpResponse { status_code: number; detail: string; next: string; previous: string; results: T[]; private type; private http; private options; constructor(http: HttpClient, options: any, genericClass: any); canNextRequest(): boolean; nextRequest(): Promise; canPreviousRequest(): boolean; previousRequest(): Promise; toJSON(): Record; } export declare class ApiUrls { api: string; commonsApi: string; cdn: string; socket: string; singApi: string; singSocket: string; stickerApiUrl: string; badgeApiUrl: string; signatureStickerApiUrl: string; textDonationUrl: string; itemStoreApiUrl: string; billingApiUrl: string; gwApi: string; studioApi: string; ivsApi: string; ivsSocket: string; authUrl: string; } declare class AuthApi { private http; private spoon; constructor(http: ApiHttpClient, spoon: Spoon); signIn(requestData: SignInRequestData): Promise>; } export declare class BaseGameEventPayload { roomId: string; donationId: number; targetId: number; itemId: number; sender: { userId: number; nickname: string; profileImageUrl: string; }; created: number; toJSON(): Record; } export declare class BaseLivePlayPayload { event: 'live_play'; live_id: number; emit_type: string; play_type: string; toJSON(): Record; } export declare type ClassType = new (...args: any[]) => T; declare class ContentInfo { id: number; title: string; author: User; img_url: string; tags: string[]; like_count: number; created: string; type: number; } export declare const Country: { readonly KOREA: "kr"; readonly INDONESIA: "id"; readonly JAPAN: "jp"; readonly VIETNAM: "vn"; readonly ARAB: "ar"; readonly USA: "us"; readonly AUTO: "auto"; }; export declare const CountryNumber: { readonly AF: "93"; readonly AE: "971"; readonly AL: "355"; readonly AN: "599"; readonly AS: "1"; readonly AD: "376"; readonly AO: "244"; readonly AI: "1"; readonly AG: "1"; readonly AR: "54"; readonly AM: "374"; readonly AW: "297"; readonly AU: "61"; readonly AT: "43"; readonly AZ: "994"; readonly BS: "1"; readonly BH: "973"; readonly BF: "226"; readonly BI: "257"; readonly BD: "880"; readonly BB: "1"; readonly BY: "375"; readonly BE: "32"; readonly BZ: "501"; readonly BJ: "229"; readonly BM: "1"; readonly BT: "975"; readonly BA: "387"; readonly BW: "267"; readonly BR: "55"; readonly BG: "359"; readonly BO: "591"; readonly BL: "590"; readonly BN: "673"; readonly CC: "61"; readonly CD: "243"; readonly CI: "225"; readonly KH: "855"; readonly CM: "237"; readonly CA: "1"; readonly CV: "238"; readonly KY: "345"; readonly CF: "236"; readonly CH: "41"; readonly CL: "56"; readonly CN: "86"; readonly CX: "61"; readonly CO: "57"; readonly KM: "269"; readonly CG: "242"; readonly CK: "682"; readonly CR: "506"; readonly CU: "53"; readonly CY: "537"; readonly CZ: "420"; readonly DE: "49"; readonly DK: "45"; readonly DJ: "253"; readonly DM: "1"; readonly DO: "1"; readonly DZ: "213"; readonly EC: "593"; readonly EG: "20"; readonly ER: "291"; readonly EE: "372"; readonly ES: "34"; readonly ET: "251"; readonly FM: "691"; readonly FK: "500"; readonly FO: "298"; readonly FJ: "679"; readonly FI: "358"; readonly FR: "33"; readonly GB: "44"; readonly GF: "594"; readonly GA: "241"; readonly GS: "500"; readonly GM: "220"; readonly GE: "995"; readonly GH: "233"; readonly GI: "350"; readonly GQ: "240"; readonly GR: "30"; readonly GG: "44"; readonly GL: "299"; readonly GD: "1"; readonly GP: "590"; readonly GU: "1"; readonly GT: "502"; readonly GN: "224"; readonly GW: "245"; readonly GY: "595"; readonly HT: "509"; readonly HR: "385"; readonly HN: "504"; readonly HU: "36"; readonly HK: "852"; readonly IR: "98"; readonly IM: "44"; readonly IL: "972"; readonly IO: "246"; readonly IS: "354"; readonly IN: "91"; readonly ID: "62"; readonly IQ: "964"; readonly IE: "353"; readonly IT: "39"; readonly JM: "1"; readonly JP: "81"; readonly JO: "962"; readonly JE: "44"; readonly KP: "850"; readonly KR: "82"; readonly KZ: "77"; readonly KE: "254"; readonly KI: "686"; readonly KW: "965"; readonly KG: "996"; readonly KN: "1"; readonly LC: "1"; readonly LV: "371"; readonly LB: "961"; readonly LK: "94"; readonly LS: "266"; readonly LR: "231"; readonly LI: "423"; readonly LT: "370"; readonly LU: "352"; readonly LA: "856"; readonly LY: "218"; readonly MO: "853"; readonly MK: "389"; readonly MG: "261"; readonly MW: "265"; readonly MY: "60"; readonly MV: "960"; readonly ML: "223"; readonly MT: "356"; readonly MH: "692"; readonly MQ: "596"; readonly MR: "222"; readonly MU: "230"; readonly MX: "52"; readonly MC: "377"; readonly MN: "976"; readonly ME: "382"; readonly MP: "1"; readonly MS: "1"; readonly MA: "212"; readonly MM: "95"; readonly MF: "590"; readonly MD: "373"; readonly MZ: "258"; readonly NA: "264"; readonly NR: "674"; readonly NP: "977"; readonly NL: "31"; readonly NC: "687"; readonly NZ: "64"; readonly NI: "505"; readonly NE: "227"; readonly NG: "234"; readonly NU: "683"; readonly NF: "672"; readonly NO: "47"; readonly OM: "968"; readonly PK: "92"; readonly PM: "508"; readonly PW: "680"; readonly PF: "689"; readonly PA: "507"; readonly PG: "675"; readonly PY: "595"; readonly PE: "51"; readonly PH: "63"; readonly PL: "48"; readonly PN: "872"; readonly PT: "351"; readonly PR: "1"; readonly PS: "970"; readonly QA: "974"; readonly RO: "40"; readonly RE: "262"; readonly RS: "381"; readonly RU: "7"; readonly RW: "250"; readonly SM: "378"; readonly SA: "966"; readonly SN: "221"; readonly SC: "248"; readonly SL: "232"; readonly SG: "65"; readonly SK: "421"; readonly SI: "386"; readonly SB: "677"; readonly SH: "290"; readonly SD: "249"; readonly SR: "597"; readonly SZ: "268"; readonly SE: "46"; readonly SV: "503"; readonly ST: "239"; readonly SO: "252"; readonly SJ: "47"; readonly SY: "963"; readonly TW: "886"; readonly TZ: "255"; readonly TL: "670"; readonly TD: "235"; readonly TJ: "992"; readonly TH: "66"; readonly TG: "228"; readonly TK: "690"; readonly TO: "676"; readonly TT: "1"; readonly TN: "216"; readonly TR: "90"; readonly TM: "993"; readonly TC: "1"; readonly TV: "688"; readonly UG: "256"; readonly UA: "380"; readonly US: "1"; readonly UY: "598"; readonly UZ: "998"; readonly VA: "379"; readonly VE: "58"; readonly VN: "84"; readonly VG: "1"; readonly VI: "1"; readonly VC: "1"; readonly VU: "678"; readonly WS: "685"; readonly WF: "681"; readonly YE: "967"; readonly YT: "262"; readonly ZA: "27"; readonly ZM: "260"; readonly ZW: "263"; }; export declare type CountryType = (typeof Country)[keyof typeof Country]; export declare interface CreateLiveOptions { is_access_ghost_user: boolean; is_adult: boolean; is_save: boolean; donation: number; title: string; type: number; welcome_message: string; invite_member_ids: number[]; tags: string[]; categories: LiveCategory[]; engine: { name: 'sing' | 'sori'; host: string; }; is_live_call: boolean; is_live_call_donation: boolean; device_unique_id: string; allow_donations: string[]; spoon_aim: Array<{ title: string; count: number; }>; img_key?: string; } export declare class CreateLuckyBox { roomId: string; donationId: number; senderId: number; targetId: number; itemId: (typeof LuckyBoxItemId)[keyof typeof LuckyBoxItemId]; boxCount: number; amount: number; message: string; created: number; usableTotalCount: number; } export declare class CreateQuiz { roomId: string; donationId: number; senderId: number; targetId: number; itemId: (typeof QuizItemId)[keyof typeof QuizItemId]; boxCount: number; amount: number; message: string; timeLimit: number; created: number; usableTotalCount: number; } export declare class DonationTrayPayload { roomId: string; trays: Array<{ donationId: number; sender: { userId: number; nickname: string; profileImageUrl: string; }; meta: { itemId: number; category: string; amount: number; }; created: number; }>; } export declare function eventMapper(data: any): [keyof LiveSocketEvents, any]; declare class GatewayClient { private spoon; instance: ApiHttpClient; user: UserGateway; store: StoreGateway; play: PlayGateway; private httpClient; constructor(spoon: Spoon); } export declare class HttpClient { private baseUrl; userAgent: string; referer: string; private baseConfig; constructor(baseUrl: string, baseConfig?: HttpRequest); appendBaseConfig(config: HttpRequest): void; removeBaseConfig(configKeys: string[]): void; request(path: string, options: HttpRequest, responseType?: ClassType, resultType?: any): Promise; } export declare interface HttpRequest extends Omit { body?: Record | BodyInit; params?: Record; } export declare class HttpResponse { } export declare class InventoryItem { expire_at: Date; id: number; item_category: string; max_use_count_per_once_use: number; permance_type: string; remaining_use_count: number; thumbnail: { display_type: string; url: string; }; title: string; use_targeting_type: string; } export declare class Live extends ContentInfo { badge_style_ids: number[]; broadcast_extension_count: number; access_key: string; categories: string[]; engine_name: string; is_adult: boolean; is_editors: boolean; is_live_call: boolean; is_live_call_donation: boolean; is_verified: boolean; is_vip: boolean; is_access_ghost_user: boolean; is_virtual: boolean; is_like: boolean; is_freeze: boolean; is_mute: boolean; is_beginner: boolean; is_call: boolean; is_save: boolean; is_join_now: boolean; live_call: LiveCall; member_count: number; os_type: any; room_token: string; spoon_aim: Array<{ title: string; count: number; }>; jwt: string; tier: Tier; total_member_count: number; total_spoon_count: number; host_address: string; welcome_message: string; top_fans: { user: User; }[]; url: string; url_hls: string; stream_name: string; manager_ids: number[]; protocol: string; msg_interval: number; donation: number; close_air_time: string; closed: boolean; close_status: number; hashtags: string[]; status: number; sv: string; system: { protocol: string; server: string; }; } declare class LiveApi { private http; private spoon; constructor(http: ApiHttpClient, spoon: Spoon); getBanner(): Promise>; getPopular(options: PopularRequestOptions): Promise>; getSubscribed(options: PageRequestOptions): Promise>; getInfo(id: number): Promise>; getLiveToken(id: number): Promise>; createLive(options: CreateLiveOptions): Promise>; soriPublish(live: Live, protocol?: 'srt' | 'rtmp'): Promise; getLiveUrl(): Promise>; close(live: Live, isSave?: boolean): Promise>; useItem(live: Live, item: InventoryItem, combo?: number, target_id?: number): Promise>; getMemberProfile(live: Live, user: User): Promise>; block(live: Live, user: User): Promise>; setManagerList(live: Live, user?: User[]): Promise>; updateLive(live: Live): Promise>; } export declare class LiveBlock extends LiveSocketBase { data: { live: Live; author: User; generator: { id: number; nickname: string; }; }; } export declare class LiveCall { guests: User[]; version: number; } export declare type LiveCategory = (typeof LiveCategoryList)[number]['val']; export declare const LiveCategoryList: readonly [{ readonly name: "live_keyword_asmr"; readonly val: "asmr"; readonly emoji: "👂"; }, { readonly name: "live_keyword_chat"; readonly val: "chat"; readonly emoji: "💬"; }, { readonly name: "live_keyword_daily"; readonly val: "daily"; readonly emoji: "👋"; }, { readonly name: "live_keyword_game"; readonly val: "game"; readonly emoji: "🎮"; }, { readonly name: "live_keyword_healing"; readonly val: "healing"; readonly emoji: "🌈"; }, { readonly name: "live_keyword_humor"; readonly val: "humor"; readonly emoji: "😂"; }, { readonly name: "live_keyword_love"; readonly val: "love"; readonly emoji: "❤️"; }, { readonly name: "live_keyword_music"; readonly val: "music"; readonly emoji: "🎤"; }, { readonly name: "live_keyword_study"; readonly val: "study"; readonly emoji: "📖"; }, { readonly name: "live_keyword_togather"; readonly val: "togather"; readonly emoji: "👥"; }, { readonly name: "live_keyword_voice_acting"; readonly val: "voice_acting"; readonly emoji: "🎬"; }, { readonly name: "live_keyword_worries"; readonly val: "worries"; readonly emoji: "😨"; }, { readonly name: "live_keyword_tikitaka"; readonly val: "tikitaka"; readonly emoji: "🆚"; }, { readonly name: "live_keyword_book"; readonly val: "book"; readonly emoji: "📚"; }, { readonly name: "live_keyword_sports"; readonly val: "sports"; readonly emoji: "🏃‍♂️"; }, { readonly name: "live_keyword_netflix"; readonly val: "netflix"; readonly emoji: "🍿"; }, { readonly name: "live_keyword_fangirl"; readonly val: "fangirl"; readonly emoji: "💖"; }, { readonly name: "live_keyword_playlist"; readonly val: "playlist"; readonly emoji: "🎶"; }, { readonly name: "live_keyword_makefriend"; readonly val: "makefriend"; readonly emoji: "💙"; }, { readonly name: "live_keyword_newdj"; readonly val: "newdj"; readonly emoji: "🐣"; }, { readonly name: "live_keyword_iteconomy"; readonly val: "iteconomy"; readonly emoji: "💻"; }, { readonly name: "live_keyword_school"; readonly val: "school"; readonly emoji: "🏫"; }, { readonly name: "live_keyword_work"; readonly val: "work"; readonly emoji: "💼"; }]; export declare class LiveClient extends WebSocketClient { protected spoon: Spoon; private maxLengthPerSend; private currentLive; private roomJwt; constructor(spoon: Spoon); get info(): Live | null; join(live: number | Live): Promise; close(): Promise; message(message: string): void; } /** * 스푼라디오 라이브 소켓 이벤트 상수 * * 라이브 방송 중 발생하는 다양한 소켓 이벤트들의 이름을 정의합니다. * 소켓 연결 시 이벤트 리스너 등록이나 이벤트 발송 시 사용됩니다. */ export declare const LiveEvent: { /** 라이브 방송 상태 변경 이벤트 */ readonly LIVE_STATE: "live_state"; /** 라이브 방송 연결 상태 확인 이벤트 */ readonly LIVE_HEALTH: "live_health"; /** 사용자가 라이브 방송에 입장했을 때 발생하는 이벤트 */ readonly LIVE_JOIN: "live_join"; /** 사용자가 라이브 방송에 숨은 입장했을 때 발생하는 이벤트 */ readonly LIVE_SHADOWJOIN: "live_shadowjoin"; /** 라이브 방송 채팅 메시지 이벤트 */ readonly LIVE_MESSAGE: "live_message"; /** 라이브 방송 하트(좋아요) 이벤트 */ readonly LIVE_LIKE: "live_like"; /** 사용자 차단 이벤트 */ readonly LIVE_BLOCK: "live_block"; /** 라이브 방송 정보 업데이트 이벤트 */ readonly LIVE_UPDATE: "live_update"; /** 사용자가 라이브 방송에서 퇴장했을 때 발생하는 이벤트 */ readonly LIVE_LEAVE: "live_leave"; /** 선물 아이템 사용 이벤트 */ readonly LIVE_PRESENT: "live_present"; /** 통화 연결 이벤트 */ readonly LIVE_CALL: "live_call"; /** 통화 요청 이벤트 */ readonly LIVE_CALL_REQUEST: "live_call_request"; /** 라이브 방송 종료 이벤트 */ readonly LIVE_CLOSED: "live_closed"; /** 라이브 방송 서버 장애 복구 이벤트 */ readonly LIVE_FAILOVER: "live_failover"; /** 사용자 랭킹 변경 이벤트 */ readonly LIVE_RANK: "live_rank"; /** 랭킹 목록 업데이트 이벤트 */ readonly LIVE_RANKLIST: "live_ranklist"; /** 라이브 방송 명령어 이벤트 */ readonly LIVE_COMMAND: "live_command"; /** 라이브 방송 강제 종료 이벤트 */ readonly LIVE_FORCE_CLOSE: "live_force_close"; /** 라이브 방송 재생 이벤트 */ readonly LIVE_PLAY: "live_play"; /** 지연된 업데이트 이벤트 */ readonly LIVE_LAZY_UPDATE: "lazy_update"; /** 선물 아이템에 대한 하트(좋아요) 이벤트 */ readonly LIVE_PRESENT_LIKE: "live_present_like"; /** 모든 라이브 이벤트를 수신하는 이벤트 */ readonly LIVE_EVENT_ALL: "live_event_all"; /** 아이템 사용 이벤트 */ readonly LIVE_USE_ITEM: "use_item"; /** 럭키박스 생성 이벤트 */ readonly LIVE_LUCKYBOX_CREATE: "luckybox_create"; /** 럭키박스 참여 이벤트 */ readonly LIVE_LUCKYBOX_ACCEPT: "luckybox_accept"; /** 럭키박스 결과 이벤트 */ readonly LIVE_LUCKYBOX_RESULT: "luckybox_result"; /** 퀴즈 생성 이벤트 */ readonly LIVE_QUIZ_CREATE: "quiz_create"; /** 퀴즈 참여 이벤트 */ readonly LIVE_QUIZ_ACCEPT: "quiz_accept"; /** 퀴즈 결과 이벤트 */ readonly LIVE_QUIZ_RESULT: "quiz_result"; /** 후원 트레이 이벤트 */ readonly LIVE_DONATION_TRAY: "donation_tray"; /** 우편함 시작 이벤트 */ readonly LIVE_MAILBOX_START: "mailbox_start"; /** 우편함 업데이트 이벤트 */ readonly LIVE_MAILBOX_UPDATE: "mailbox_update"; /** 우편함 종료 이벤트 */ readonly LIVE_MAILBOX_END: "mailbox_end"; /** 투표 시작 이벤트 */ readonly LIVE_POLL_START: "poll_start"; /** 투표 업데이트 이벤트 */ readonly LIVE_POLL_UPDATE: "poll_update"; /** 투표 종료 이벤트 */ readonly LIVE_POLL_END: "poll_end"; }; export declare class LiveJoin extends LiveSocketBase { data: { live: Live; author: User; }; } export declare class LiveLike extends LiveSocketBase { data: { live: Live; author: User; }; } export declare class LiveMessage extends LiveSocketBase { data: { live: { author: User; }; user: User; }; items: any[]; use_item: any[]; update_component: { message: { value: string; }; }; } export declare type LivePlay = LivePlayMailboxStart | LivePlayMailboxUpdate | LivePlayMailboxEnd | LivePlayPollStart | LivePlayPollUpdate | LivePlayPollEnd; export declare abstract class LivePlayEvent { abstract event: 'live_play'; abstract live_id: number; abstract emit_type: string; abstract play_type: string; } export declare class LivePlayMailboxEnd extends LivePlayEvent { event: "live_play"; emit_type: "play_end"; play_type: "mailbox"; live_id: number; mailbox: MailboxEndPayload['mailbox']; } export declare class LivePlayMailboxStart extends LivePlayEvent { event: "live_play"; emit_type: "play_start"; play_type: "mailbox"; live_id: number; mailbox: MailboxStartPayload['mailbox']; } export declare class LivePlayMailboxUpdate extends LivePlayEvent { event: "live_play"; emit_type: "play_update"; play_type: "mailbox"; live_id: number; mailbox: MailboxUpdatePayload['mailbox']; } export declare class LivePlayPollEnd extends LivePlayEvent { event: "live_play"; emit_type: "play_end"; play_type: "poll"; live_id: number; poll: PollEndPayload['poll']; } export declare class LivePlayPollStart extends LivePlayEvent { event: "live_play"; emit_type: "play_start"; play_type: "poll"; live_id: number; poll: PollStartPayload['poll']; } export declare class LivePlayPollUpdate extends LivePlayEvent { event: "live_play"; emit_type: "play_update"; play_type: "poll"; live_id: number; poll: PollUpdatePayload['poll']; } export declare class LivePlayStatus { in_progress: boolean; play_content: { play_id: number; play_type: string; }; } export declare class LivePresent extends LiveSocketBase { data: { live: Live; author: User; item_template_id: number; amount: number; combo: number; sticker: string; sticker_type: number; donation_msg: string; donation_audio: string; subscriber_badge_color_code: string | null; }; } export declare class LivePresentLike extends LiveSocketBase { data: { user: User; }; items: any[]; use_items: any[]; update_component: { like: { value: number | null; combo: number; amount: number; sticker: string; }; listener: number | null; total_listener: number | null; spoon: number | null; close_air_time: string | null; message: string | null; }; } export declare class LiveRank extends LiveSocketBase { order: { effect: string; incrby: number; now: string; prev: string; rt_effect: string; rt_incrby: number; rt_now: string; rt_prev: string; }; } export declare class LiveSocketBase { event: string; type: string; appversion: string; useragent: string; live_id: number; trigger: string; toJSON(): Record; } export declare type LiveSocketEvents = { [LiveEvent.LIVE_JOIN]: (event: LiveJoin) => any; [LiveEvent.LIVE_STATE]: (event: LiveState) => any; [LiveEvent.LIVE_UPDATE]: (event: LiveUpdate) => any; [LiveEvent.LIVE_MESSAGE]: (event: LiveMessage) => any; [LiveEvent.LIVE_BLOCK]: (event: LiveBlock) => any; [LiveEvent.LIVE_LIKE]: (event: LiveLike) => any; [LiveEvent.LIVE_PRESENT]: (event: LivePresent) => any; [LiveEvent.LIVE_PRESENT_LIKE]: (event: LivePresentLike) => any; [LiveEvent.LIVE_USE_ITEM]: (event: LiveUseItem) => any; [LiveEvent.LIVE_PLAY]: (event: LivePlay) => any; [LiveEvent.LIVE_RANK]: (event: LiveRank) => any; [LiveEvent.LIVE_EVENT_ALL]: (eventName: keyof LiveSocketEvents, event: LiveStruct | LivePlay) => any; ['hook:before']: (eventName: keyof LiveSocketEvents, event: LiveStruct | LivePlay) => any; ['hook:after']: (eventName: keyof LiveSocketEvents, event: LiveStruct | LivePlay) => any; [LiveEvent.LIVE_LUCKYBOX_CREATE]: (event: PlayLuckyBoxCreate) => any; [LiveEvent.LIVE_LUCKYBOX_ACCEPT]: (event: PlayLuckyBoxAccept) => any; [LiveEvent.LIVE_LUCKYBOX_RESULT]: (event: PlayLuckyBoxResult) => any; [LiveEvent.LIVE_QUIZ_CREATE]: (event: PlayQuizCreate) => any; [LiveEvent.LIVE_QUIZ_ACCEPT]: (event: PlayQuizAccept) => any; [LiveEvent.LIVE_QUIZ_RESULT]: (event: PlayQuizResult) => any; [LiveEvent.LIVE_DONATION_TRAY]: (event: PlayDonationTray) => any; [LiveEvent.LIVE_MAILBOX_START]: (event: MailboxStartPayload) => any; [LiveEvent.LIVE_MAILBOX_UPDATE]: (event: MailboxUpdatePayload) => any; [LiveEvent.LIVE_MAILBOX_END]: (event: MailboxEndPayload) => any; [LiveEvent.LIVE_POLL_START]: (event: PollStartPayload) => any; [LiveEvent.LIVE_POLL_UPDATE]: (event: PollUpdatePayload) => any; [LiveEvent.LIVE_POLL_END]: (event: PollEndPayload) => any; }; export declare class LiveState extends LiveSocketBase { user_id: number; is_call: boolean; is_chat: string; is_freeze: boolean; is_mute: boolean; state: string; close_status: number; } export declare type LiveStruct = LiveJoin | LiveState | LiveUpdate | LiveLike | LivePresent | LivePresentLike | LiveUseItem; export declare class LiveToken { items: any[]; jwt: string; } /** * 스푼라디오 라이브 소켓 메시지 타입 상수 * * 소켓 통신 시 메시지의 타입을 구분하기 위해 사용되는 상수들입니다. * 요청, 보고, 응답 등의 메시지 유형을 정의합니다. */ export declare const LiveType: { /** 라이브 요청 메시지 타입 */ readonly LIVE_REQ: "live_req"; /** 라이브 보고 메시지 타입 */ readonly LIVE_RPT: "live_rpt"; /** 라이브 응답 메시지 타입 */ readonly LIVE_RSP: "live_rsp"; }; export declare class LiveUpdate extends LiveSocketBase { data: { author: User; live: Live; }; } export declare class LiveUrl { voice: { url: string; key: string; content_type: string; }; image: { url: string; key: string; content_type: string; }; } export declare class LiveUseItem extends LiveSocketBase { data: { user: User; }; items: any[]; use_items: Array<{ item_id: number; amount: number; combo: number; effect: string; animation_type: string; images: Array<{ url: string; }>; }>; update_component: { like: { value: number | null; combo: number; amount: number; sticker: string | null; }; listener: number | null; total_listener: number | null; spoon: number | null; close_air_time: string | null; message: string | null; }; } export declare class LuckyBoxAcceptPayload extends BaseGameEventPayload { boxInfo: { boxCount: number; message: string; amount: number; }; } export declare class LuckyBoxCreatePayload extends BaseGameEventPayload { } export declare const LuckyBoxItemId: { readonly AMOUNT_50: 1; readonly AMOUNT_100: 2; readonly AMOUNT_500: 3; readonly AMOUNT_1000: 4; }; export declare class LuckyBoxResultPayload extends BaseGameEventPayload { result: { isSuccess: boolean; amount: number; executionAmount: number; options: boolean[]; selectedNumber: number; }; } export declare class Mailbox { id: number; title: string; } export declare class MailboxEndPayload extends BaseLivePlayPayload { emit_type: "play_end"; play_type: "mailbox"; mailbox: { total_count: number; }; } export declare class MailboxMessage { id: number; mailbox_id: number; status: number; message: string; created: string; is_anonymous: boolean; nickname: string; profile_url: string; } export declare class MailboxStartPayload extends BaseLivePlayPayload { emit_type: "play_start"; play_type: "mailbox"; mailbox: { id: number; title: string; total_count: number; }; } export declare class MailboxUpdatePayload extends BaseLivePlayPayload { emit_type: "play_update"; play_type: "mailbox"; mailbox: { total_count?: number; id?: number; title?: string; message?: string; is_anonymous?: boolean; profile_url?: string; nickname?: string; status?: number; message_id?: number; is_publish?: boolean; }; } export declare interface PageRequestOptions { page_size?: number; page?: number; } declare class PlayApi { private http; private spoon; constructor(http: ApiHttpClient, spoon: Spoon); status(live: Live): Promise>; createPoll(live: Live, title: string, items: Pick[]): Promise>; votePoll(pollId: number, itemId: number): Promise>; getPoll(pollId: number): Promise>; closePoll(pollId: number): Promise>; createMailbox(live: Live, title: string): Promise>; sendMailbox(mailboxId: number, message: string, isAnonymous: boolean): Promise>; getMailbox(mailboxId: number): Promise>; getMailboxList(mailboxId: number): Promise>; getCurrentMailbox(mailboxId: number): Promise>; setCurrentMailbox(mailboxId: number, messageId: number, isPublish: boolean): Promise>; removeMailbox(mailboxId: number, messageId: number): Promise>; closeMailbox(mailboxId: number): Promise>; } export declare class PlayDonationTray extends PlayGameEvent { eventName: "DonationTray"; eventPayload: DonationTrayPayload; } export declare abstract class PlayGameEvent { abstract eventName: string; abstract eventPayload: BaseGameEventPayload | DonationTrayPayload; } declare class PlayGateway { private http; constructor(http: ApiHttpClient); createLuckyBox(live: Live, itemId: (typeof LuckyBoxItemId)[keyof typeof LuckyBoxItemId], message: string, options: boolean[]): Promise>; acceptLuckyBox(live: Live, donationId: number): Promise>; selectLuckyBox(live: Live, donationId: number, selectedNumber: number | null): Promise>; createQuiz(live: Live, itemId: (typeof QuizItemId)[keyof typeof QuizItemId], message: string, options: QuizOption[]): Promise>; acceptQuiz(live: Live, donationId: number): Promise>; selectQuiz(live: Live, donationId: number, selectedNumber: number | null): Promise>; } export declare type PlayLuckyBox = PlayLuckyBoxCreate | PlayLuckyBoxAccept | PlayLuckyBoxResult | PlayDonationTray; export declare class PlayLuckyBoxAccept extends PlayGameEvent { eventName: "LuckyBoxAccept"; eventPayload: LuckyBoxAcceptPayload; } export declare class PlayLuckyBoxCreate extends PlayGameEvent { eventName: "LuckyBoxCreate"; eventPayload: LuckyBoxCreatePayload; } export declare class PlayLuckyBoxResult extends PlayGameEvent { eventName: "LuckyBoxResult"; eventPayload: LuckyBoxResultPayload; } export declare class PlayQuizAccept extends PlayGameEvent { eventName: "QuizAccept"; eventPayload: QuizAcceptPayload; } export declare class PlayQuizCreate extends PlayGameEvent { eventName: "QuizCreate"; eventPayload: QuizCreatePayload; } export declare class PlayQuizResult extends PlayGameEvent { eventName: "QuizResult"; eventPayload: QuizResultPayload; } export declare class Poll { id: number; title: string; items: PollItem[]; my_choice: number; poll_count: number; } export declare class PollEndPayload extends BaseLivePlayPayload { emit_type: "play_end"; play_type: "poll"; poll: { id: number; title: string; result: Array<{ item_order: number; name: string; count: number; }>; }; } export declare class PollItem { id: number; title: string; count: number; name: string; item_order: number; } export declare class PollStartPayload extends BaseLivePlayPayload { emit_type: "play_start"; play_type: "poll"; poll: { id: number; title: string; items: Array<{ item_order: number; name: string; }>; }; } export declare class PollUpdatePayload extends BaseLivePlayPayload { emit_type: "play_update"; play_type: "poll"; poll: { total_count: number; }; } export declare class PollVote { poll_id: number; choice: number; total_count: number; } export declare interface PopularRequestOptions extends PageRequestOptions { category?: LiveCategory; } export declare class QuizAcceptPayload extends BaseGameEventPayload { quizInfo: { message: string; options: string[]; amount: number; timeLimit: number; startTime: number; expirationTime: number; }; } export declare class QuizCreatePayload extends BaseGameEventPayload { timeLimit: number; } export declare const QuizItemId: { readonly AMOUNT_50: 5; readonly AMOUNT_100: 6; readonly AMOUNT_500: 7; readonly AMOUNT_1000: 8; }; export declare interface QuizOption { option: string; isCorrect: boolean; } export declare class QuizResultPayload extends BaseGameEventPayload { result: { isSuccess: boolean; amount: number; executionAmount: number; message: string; options: Array<{ option: string; isCorrect: boolean; }>; selectedNumber: number; isRandom: boolean; }; } export declare class SelectLuckyBox { isSuccess: boolean; } export declare class SelectQuiz { isSuccess: boolean; } declare interface SignInRequestData { country: CountryType; sns_type: SnsValueType; sns_id?: number | string; password?: string; } export declare const SnsType: { readonly PHONE: "phone"; readonly EMAIL: "email"; readonly FACEBOOK: "facebook"; readonly GOOGLE: "google"; readonly APPLE: "apple"; readonly TWITTER: "twitter"; readonly LINE: "line"; }; export declare type SnsValueType = (typeof SnsType)[keyof typeof SnsType]; export declare class SoriPublish { publish: { name: string; control: string; transports: Array<{ type: string; address: string; port: number; }>; media: { type: string; protocol: string; format: string; }; rtmp: { url: string; name: string; }; }; } export declare class Spoon extends default_2 { country: CountryType; urls: ApiUrls; private httpClient; private apiClient; private liveClient; private gatewayClient; private stickerClient; token: string; refreshToken: string; deviceUniqueId: string; logonUser: User; appVersion: string; constructor(country?: CountryType); get api(): ApiClient; get live(): LiveClient; get gw(): GatewayClient; get http(): HttpClient; get sticker(): StickerClient; initUrlsInfo(): Promise; getClientCountry(): Promise; init(): Promise; initToken(sns_id: string | number, password: string, sns_type: SnsValueType): Promise; tokenRefresh(): Promise; setToken(token: string, refreshToken?: string, assignUserId?: number): Promise; } export declare class StaticStickers { version: number; updated: string; categories: StickerCategory[]; } export declare class Sticker { tag: string; name: string; title: string; description: string; isCashout: number; display: number; type: number; price: number; color: string; color_web: string; image_thumbnail: string; image_thumbnail_web: string; image_urls: string[]; image_url_web: string; lottie_url: string; lottie_combo_url: string; order: number; is_used: boolean; start_date: string; end_date: string; updated: string; category: string; dj_id: number; is_cashout: number; is_signature: boolean; } export declare class StickerCategory { id: number; name: string; title: string; is_used: boolean; stickers: Sticker[]; } export declare class StickerClient { private spoon; stickers: StaticStickers; signature: Map; constructor(spoon: Spoon); initSticker(): Promise; initSignatureSticker(user: number): Promise; findSticker(key: string, user?: number, force?: boolean): Sticker | undefined; } declare class StoreGateway { private http; constructor(http: ApiHttpClient); getInventory(userType: string, permanenceType: string, enveope: boolean): Promise>; } export declare interface Tier { name: string; title: string; } export declare class User { id: number; nickname: string; tag: string; sns_type: string; description: string; profile_url: string; date_joined: string; follower_count: number; following_count: number; token: string; budget: UserBudget; grants: UserGrants; push_settings: UserPushSettings; is_active: boolean; is_exist: boolean; is_staff: boolean; result_code: number; result_message: string; is_choice: boolean; tier: string | null; is_vip: boolean; country: string; service_agreement: UserServiceAgreement; gender: number; date_of_birth: string; is_password_notice: boolean; is_verified: boolean; is_dj: boolean; email: string; badge_style_ids: number[]; vip_grade: string | null; profile_cover_url: string; referring_target_user_id: number | null; referring_user_id: number | null; location: string | null; refresh_token: string; current_live: UserCurrentLive; current_live_id: number; is_manager: boolean; } declare class UserApi { private http; private spoon; constructor(http: ApiHttpClient, spoon: Spoon); getUserInfo(id: number): Promise>; getFollowings(id: number, nickname?: string): Promise>; getFollowers(id: number, nickname?: string): Promise>; getCurrentLive(id: number): Promise>; } export declare class UserBudget { present_spoon: number; purchase_spoon: number; total_exchange_spoon: number; monthly_pay_amount: number; } export declare class UserCurrentLive { id: number; is_live: boolean; } declare class UserGateway { private http; constructor(http: ApiHttpClient); search(keyword: string, page_size?: number): Promise>; } export declare class UserGrants { login: number; cast: number; talk: number; live: number; adult: number; auth: number; phone: number; payment: number; } export declare class UserMemberProfile { id: number; nickname: string; tag: string; top_impressions: string[]; description: string; profile_url: string; gender: number; follow_status: number; follower_count: number; following_count: number; is_active: boolean; is_staff: boolean; is_vip: boolean; date_joined: string; current_live: UserCurrentLive; country: string; tier: string | null; is_verified: boolean; self_introduction: string; is_award_user: boolean; profile_cover_url: string; badge_style_ids: number[]; vip_grade: string | null; favorite_temperature: number; is_high_temperature: boolean; profile_ring: string | null; subscriber_count: number | null; live_dj_rank: number | null; like_dj_rank: number | null; top_fan_rank: number; subscription_continuous_count: number | null; dj_follow_status: number; } export declare class UserPushSettings { bj: boolean; follow: boolean; like_or_present: boolean; comment_or_mention_cast: boolean; comment_or_mention_talk: boolean; comment_or_mention_board: boolean; event_or_marketing: boolean; subscription_dj: boolean; directmessage: boolean; buzz_post_liked: boolean; buzz_post_commented: boolean; buzz_comment_liked: boolean; buzz_related_added: boolean; my_channel: boolean; my_payment: boolean; voice_card_received: boolean; voice_card_reply_message: boolean; voice_card_reply_like: boolean; voice_card_reply_sticker: boolean; } export declare class UserServiceAgreement { service_terms: boolean; personal_info_col: boolean; personal_info_exp: boolean; device_access: boolean; marketing: boolean; voice_info_exp: boolean | null; birth_gender_nickname_col: boolean; over_fourteen_col: boolean; legal_representative_info_col: boolean | null; legal_rep_payment_col: boolean | null; privacy_policy_col: boolean | null; pay_agree_for_minors: boolean | null; marketing_email: boolean | null; night_push_agree: boolean | null; } export declare class WebSocketClient extends EventEmitter2 { protected spoon: Spoon; emit: (event: K, ...args: Parameters) => boolean; on: (event: K, listener: LiveSocketEvents[K]) => this; once: (event: K, listener: LiveSocketEvents[K]) => this; off: (event: K, listener: LiveSocketEvents[K]) => this; private ws; constructor(spoon: Spoon); connect(url: string, options: default_3.ClientOptions): Promise; private receiver; send(data: any): void; sendAndWaitForResponse>(message: Record, responseEvent: T, timeout?: number): Promise[0]>; disconnect(): void; } export { }