twitch-eventsub-client
Version:
A Twitch EventSub WebSocket client for Node.js
3,332 lines • 119 kB
text/typescript
import { EventEmitter } from 'events';
import { AxiosError } from 'axios';
interface KeepaliveMessageMetadata extends EventSubMessageMetadata {
message_type: 'session_keepalive';
}
type KeepaliveMessagePayload = {};
type KeepaliveMessage = EventSubMessage<KeepaliveMessageMetadata, KeepaliveMessagePayload>;
interface AutomodMessageHoldEventV1 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message: [
{
text: string;
fragments: [
{
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
category: string;
level: number;
held_at: string;
}
interface AutomodMessageHoldEventV2 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message: [
{
text: string;
fragments: [
{
type: 'text' | 'emote' | 'cheermote';
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
held_at: string;
reason: 'automod' | 'blocked_term';
automod: {
category: string;
level: number;
boundaries: [
{
start_pos: number;
end_pos: number;
}
];
blocked_term: {
terms_found: [
{
term_id: string;
boundary: {
start_pos: number;
end_pos: number;
};
owner_broadcaster_user_id: string;
owner_broadcaster_user_login: string;
owner_broadcaster_user_name: string;
}
];
} | null;
} | null;
}
interface AutomodMessageUpdateEventV1 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
message_id: string;
message: [
{
text: string;
fragments: [
{
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
category: string;
level: number;
status: 'Approved' | 'Denied' | 'Expired';
held_at: string;
}
interface AutomodMessageUpdateEventV2 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
message_id: string;
message: [
{
text: string;
fragments: [
{
type: 'text' | 'emote' | 'cheermote';
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
status: 'Approved' | 'Denied' | 'Expired';
held_at: string;
reason: 'automod' | 'blocked_term';
automod: {
category: string;
level: number;
boundaries: [
{
start_pos: number;
end_pos: number;
}
];
blocked_term: {
terms_found: [
{
term_id: string;
boundary: {
start_pos: number;
end_pos: number;
};
owner_broadcaster_user_id: string;
owner_broadcaster_user_login: string;
owner_broadcaster_user_name: string;
}
];
} | null;
} | null;
}
interface AutomodSettingsUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
bullying: number;
overall_level: number | null;
disability: number;
race_ethnicity_or_religion: number;
misogyny: number;
sexuality_sex_or_gender: number;
aggression: number;
sex_based_terms: number;
swearing: number;
}
interface AutomodTermsUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
action: 'add_permitted' | 'remove_permitted' | 'add_blocked' | 'remove_blocked';
from_automod: boolean;
terms: string[];
}
interface ChannelAdBreakBeginEvent {
duration_seconds: number;
started_at: string;
is_automatic: boolean;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
requester_user_id: string;
requester_user_login: string;
requester_user_name: string;
}
interface ChannelBanEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
reason: string;
banned_at: string;
ends_at: string | null;
is_permanent: boolean;
}
interface ChannelBitsUseEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
bits: number;
type: 'cheer' | 'power_up';
message: [
{
text: string;
type: 'text' | 'cheermote' | 'emote';
fragments: [
{
text: string;
emote: {
id: string;
emote_set_id: string;
owner_id: string;
format: string[];
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
] | null;
power_up: {
type: 'message_effect' | 'celebration' | 'gigantify_an_emote';
emote: {
id: string;
name: string;
};
message_effect_id: string;
};
}
interface ChannelChatClearEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcast_user_login: string;
}
interface ChannelChatClearUserMessagesEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcast_user_login: string;
target_user_id: string;
target_user_login: string;
target_user_name: string;
}
interface ChannelChatMessageEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcast_user_login: string;
chatter_user_id: string;
chatter_user_name: string;
chatter_user_login: string;
message_id: string;
message: {
text: string;
fragments: [
{
type: 'text' | 'cheermote' | 'emote' | 'mention';
text: string;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
emote: {
id: string;
emote_set_id: string;
owner_id: string;
format: string[];
} | null;
mention: {
user_id: string;
user_name: string;
user_login: string;
} | null;
}
];
};
message_type: 'text' | 'channel_points_highlighted' | 'channel_points_sub_only' | 'user_intro' | 'power_ups_message_effect' | 'power_ups_gigantified_emote';
badges: [
{
set_id: string;
id: string;
info: string;
cheer: {
bits: number;
} | null;
}
];
color: string;
reply: {
parent_message_id: string;
parent_message_body: string;
parent_user_id: string;
parent_user_name: string;
parent_user_login: string;
thread_message_id: string;
thread_user_id: string;
thread_user_name: string;
thread_user_login: string;
} | null;
channel_points_custom_reward_id: string | null;
source_broadcaster_user_id: string | null;
source_broadcaster_user_login: string | null;
source_broadcaster_user_name: string | null;
source_message_id: string | null;
source_badges: [
{
set_id: string;
id: string;
info: string;
}
] | null;
}
interface ChannelChatMessageDeleteEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
target_user_id: string;
target_user_name: string;
target_user_login: string;
message_id: string;
}
interface ChannelChatNotificationEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
chatter_user_id: string | null;
chatter_user_name: string | null;
chatter_user_login: string | null;
chatter_is_anonymous: boolean;
color: string;
badges: [
{
set_id: string;
id: string;
info: string;
}
];
system_message: string;
message_id: string;
message: {
text: string;
fragments: [
{
type: 'text' | 'cheermote' | 'emote' | 'mention';
text: string;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
emote: {
id: string;
emote_set_id: string;
owner_id: string;
format: string[];
} | null;
mention: {
user_id: string;
user_name: string;
user_login: string;
} | null;
}
];
};
notice_type: 'sub' | 'resub' | 'sub_gift' | 'community_sub_gift' | 'gift_paid_upgrade' | 'prime_paid_upgrade' | 'raid' | 'unraid' | 'pay_it_forward' | 'announcement' | 'bits_badge_tier' | 'charity_donation' | 'shared_chat_sub' | 'shared_chat_resub' | 'shared_chat_sub_gift' | 'shared_chat_community_sub_gift' | 'shared_chat_gift_paid_upgrade' | 'shared_chat_prime_paid_upgrade' | 'shared_chat_raid' | 'shared_chat_pay_it_forward' | 'shared_chat_announcement';
sub: {
sub_tier: number;
is_prime: boolean;
duration_months: number;
} | null;
resub: {
cumulative_months: number;
duration_months: number;
streak_months: number;
sub_tier: number;
is_prime: boolean;
is_gift: boolean;
gifter_is_anonymous: boolean;
gifter_user_id: string | null;
gifter_user_name: string | null;
gifter_user_login: string | null;
} | null;
sub_gift: {
duration_months: number;
cumulative_total: number | null;
recipient_user_id: string;
recipient_user_name: string;
recipient_user_login: string;
sub_tier: number;
community_gift_id: string | null;
} | null;
community_sub_gift: {
id: string;
total: number;
sub_tier: number;
cumulative_total: number | null;
} | null;
gift_paid_upgrade: {
gifter_is_anonymous: boolean;
gifter_user_id: string | null;
gifter_user_name: string | null;
gifter_user_login: string | null;
} | null;
prime_paid_upgrade: {
sub_tier: number;
} | null;
pay_it_forward: {
gifter_is_anonymous: boolean;
gifter_user_id: string | null;
gifter_user_name: string | null;
gifter_user_login: string | null;
};
raid: {
user_id: string;
user_name: string;
user_login: string;
viewer_count: number;
profile_image_url: string;
} | null;
unraid: null;
announcement: {
color: string;
} | null;
bits_badge_tier: {
tier: number;
} | null;
charity_donation: {
charity_name: string;
amount: {
value: number;
decimal_place: number;
currency: string;
};
} | null;
source_broadcaster_user_id: string | null;
source_broadcaster_user_name: string | null;
source_broadcaster_user_login: string | null;
source_message_id: string | null;
source_badges: [
{
set_id: string;
id: string;
info: string;
}
] | null;
shared_chat_sub: {
sub_tier: number;
is_prime: boolean;
duration_months: number;
} | null;
shared_chat_resub: {
cumulative_months: number;
duration_months: number;
streak_months: number;
sub_tier: number;
is_prime: boolean;
is_gift: boolean;
gifter_is_anonymous: boolean;
gifter_user_id: string;
gifter_user_name: string;
gifter_user_login: string;
} | null;
shared_chat_sub_gift: {
duration_months: number;
cumulative_total: number | null;
recipient_user_id: string;
recipient_user_name: string;
recipient_user_login: string;
sub_tier: number;
community_gift_id: string | null;
} | null;
shared_chat_community_sub_gift: {
id: string;
total: number;
sub_tier: number;
cumulative_total: number | null;
} | null;
shared_chat_gift_paid_upgrade: {
gifter_is_anonymous: boolean;
gifter_user_id: string | null;
gifter_user_name: string | null;
gifter_user_login: string | null;
} | null;
shared_chat_prime_paid_upgrade: {
sub_tier: number;
} | null;
shared_chat_pay_it_forward: {
gifter_is_anonymous: boolean;
gifter_user_id: string | null;
gifter_user_name: string | null;
gifter_user_login: string | null;
} | null;
shared_chat_raid: {
user_id: string;
user_name: string;
user_login: string;
viewer_count: number;
profile_image_url: string;
} | null;
shared_chat_announcement: {
color: string;
} | null;
}
interface ChannelChatSettingsUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
emote_mode: boolean;
follower_mode: boolean;
follower_mode_duration_minutes: number;
slow_mode: boolean;
slow_mode_wait_time_seconds: number;
subscriber_mode: boolean;
unique_chat_mode: boolean;
}
interface ChannelChatUserMessageHoldEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message: [
{
text: string;
fragments: [
{
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
}
interface ChannelChatUserMessageUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
status: 'approved' | 'denied' | 'invalid';
message_id: string;
message: [
{
text: string;
fragments: [
{
text: string;
emote: {
id: string;
emote_set_id: string;
} | null;
cheermote: {
prefix: string;
bits: number;
tier: number;
} | null;
}
];
}
];
}
interface ChannelSubscribeEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
tier: string;
is_gift: boolean;
}
interface ChannelCheerEvent {
is_anonymous: boolean;
user_id: string | null;
user_login: string | null;
user_name: string | null;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
message: string;
bits: number;
}
interface ChannelUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
title: string;
language: string;
category_id: string;
category_name: string;
content_classification_labels: string[];
}
interface ChannelUnbanEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
}
interface ChannelUnbanRequestCreateEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
text: string;
created_at: string;
}
interface ChannelUnbanRequestResolveEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
user_id: string;
user_login: string;
user_name: string;
resolution_text: string;
status: 'approved' | 'canceled' | 'denied';
}
interface ChannelFollowEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
followed_at: string;
}
interface ChannelRaidEvent {
from_broadcaster_user_id: string;
from_broadcaster_user_login: string;
from_broadcaster_user_name: string;
to_broadcaster_user_id: string;
to_broadcaster_user_login: string;
to_broadcaster_user_name: string;
viewers: number;
}
interface ChannelModerateEventV1 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
source_broadcaster_user_id: string;
source_broadcaster_user_login: string;
source_broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
action: 'ban' | 'timeout' | 'unban' | 'untimeout' | 'clear' | 'emoteonly' | 'emoteonlyoff' | 'followers' | 'followersoff' | 'uniquechat' | 'uniquechatoff' | 'slow' | 'slowoff' | 'subscribers' | 'subscribersoff' | 'unraid' | 'delete' | 'unvip' | 'vip' | 'raid' | 'add_blocked_term' | 'add_permitted_term' | 'remove_blocked_term' | 'remove_permitted_term' | 'mod' | 'unmod' | 'approve_unban_request' | 'deny_unban_request' | 'shared_chat_ban' | 'shared_chat_timeout' | 'shared_chat_untimeout' | 'shared_chat_unban' | 'shared_chat_delete';
followers: {
follow_duration_minutes: number;
} | null;
slow: {
wait_time_seconds: number;
} | null;
vip: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unvip: {
user_id: string;
user_login: string;
user_name: string;
} | null;
mod: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unmod: {
user_id: string;
user_login: string;
user_name: string;
} | null;
ban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
timeout: {
user_id: string;
user_login: string;
user_name: string;
reason: string;
expires_at: string;
} | null;
untimeout: {
user_id: string;
user_login: string;
user_name: string;
} | null;
raid: {
user_id: string;
user_login: string;
user_name: string;
viewer_count: number;
} | null;
unraid: {
user_id: string;
user_login: string;
user_name: string;
} | null;
delete: {
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message_body: string;
} | null;
automod_terms: {
action: 'add' | 'remove';
list: 'blocked' | 'permitted';
terms: string[];
from_automod: boolean;
} | null;
unban_request: {
is_approved: boolean;
user_id: string;
user_login: string;
user_name: string;
moderator_message: string;
} | null;
shared_chat_ban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_unban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_timeout: {
user_id: string;
user_login: string;
user_name: string;
reason: string;
expires_at: string;
} | null;
shared_chat_untimeout: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_delete: {
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message_body: string;
} | null;
}
interface ChannelModerateEventV2 {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
source_broadcaster_user_id: string;
source_broadcaster_user_login: string;
source_broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
action: 'ban' | 'timeout' | 'unban' | 'untimeout' | 'clear' | 'emoteonly' | 'emoteonlyoff' | 'followers' | 'followersoff' | 'uniquechat' | 'uniquechatoff' | 'slow' | 'slowoff' | 'subscribers' | 'subscribersoff' | 'unraid' | 'delete' | 'unvip' | 'vip' | 'raid' | 'add_blocked_term' | 'add_permitted_term' | 'remove_blocked_term' | 'remove_permitted_term' | 'mod' | 'unmod' | 'approve_unban_request' | 'deny_unban_request' | 'warn' | 'shared_chat_ban' | 'shared_chat_timeout' | 'shared_chat_untimeout' | 'shared_chat_unban' | 'shared_chat_delete';
followers: {
follow_duration_minutes: number;
} | null;
slow: {
wait_time_seconds: number;
} | null;
vip: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unvip: {
user_id: string;
user_login: string;
user_name: string;
} | null;
mod: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unmod: {
user_id: string;
user_login: string;
user_name: string;
} | null;
ban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
unban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
timeout: {
user_id: string;
user_login: string;
user_name: string;
reason: string;
expires_at: string;
} | null;
untimeout: {
user_id: string;
user_login: string;
user_name: string;
} | null;
raid: {
user_id: string;
user_login: string;
user_name: string;
viewer_count: number;
} | null;
unraid: {
user_id: string;
user_login: string;
user_name: string;
} | null;
delete: {
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message_body: string;
} | null;
automod_terms: {
action: 'add' | 'remove';
list: 'blocked' | 'permitted';
terms: string[];
from_automod: boolean;
} | null;
unban_request: {
is_approved: boolean;
user_id: string;
user_login: string;
user_name: string;
moderator_message: string;
} | null;
warn: {
user_id: string;
user_login: string;
user_name: string;
reason: string | null;
chat_rules_cited: string[] | null;
} | null;
shared_chat_ban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_unban: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_timeout: {
user_id: string;
user_login: string;
user_name: string;
reason: string;
expires_at: string;
} | null;
shared_chat_untimeout: {
user_id: string;
user_login: string;
user_name: string;
} | null;
shared_chat_delete: {
user_id: string;
user_login: string;
user_name: string;
message_id: string;
message_body: string;
} | null;
}
interface ChannelModeratorAddEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
}
interface ChannelModeratorRemoveEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
}
interface ChannelGuestStarSessionBeginEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
session_id: string;
started_at: string;
}
interface ChannelGuestStarSessionEndEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
session_id: string;
started_at: string;
ended_at: string;
host_user_id: string;
host_user_name: string;
host_user_login: string;
}
interface ChannelGuestStarGuestUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
session_id: string;
moderator_user_id: string | null;
moderator_user_name: string | null;
moderator_user_login: string | null;
guest_user_id: string | null;
guest_user_name: string | null;
guest_user_login: string | null;
slot_id: string | null;
state: 'invited' | 'accepted' | 'ready' | 'backstage' | 'live' | 'removed';
host_user_id: string;
host_user_name: string;
host_user_login: string;
host_video_enabled: boolean | null;
host_audio_enabled: boolean | null;
host_volume: number | null;
}
interface ChannelGuestStarSettingsUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
is_moderator_send_live_enabled: boolean;
slot_count: number;
is_browser_source_audio_enabled: boolean;
group_layout: 'tiled' | 'screenshare' | 'horizontal_top' | 'horizontal_bottom' | 'vertical_left' | 'vertical_right';
}
interface ChannelPollBeginEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
choices: [
{
id: string;
title: string;
bits_votes: number;
channel_points_votes: number;
votes: number;
}
];
bits_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
channel_points_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
started_at: string;
ends_at: string;
}
interface ChannelPollProgressEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
choices: [
{
id: string;
title: string;
bits_votes: number;
channel_points_votes: number;
votes: number;
}
];
bits_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
channel_points_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
started_at: string;
ends_at: string;
}
interface ChannelPollEndEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
choices: [
{
id: string;
title: string;
bits_votes: number;
channel_points_votes: number;
votes: number;
}
];
bits_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
channel_points_voting: {
is_enabled: boolean;
amount_per_vote: number;
};
status: 'completed' | 'archived' | 'terminated';
started_at: string;
ended_at: string;
}
interface ChannelPointsAutomaticRewardRedemptionAddEventV1 {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
user_id: string;
user_login: string;
user_name: string;
id: string;
reward: {
type: 'single_message_bypass_sub_mode' | 'send_highlighted_message' | 'random_sub_emote_unlock' | 'chosen_sub_emote_unlock' | 'chosen_modified_sub_emote_unlock' | 'message_effect' | 'gigantify_an_emote' | 'celebration';
cost: number;
unlocked_emote: {
id: string;
name: string;
} | null;
};
message: {
text: string;
emotes: [
{
id: string;
begin: number;
end: number;
}
];
};
user_input: string | null;
redeemed_at: string;
}
interface ChannelPointsAutomaticRewardRedemptionAddEventV2 {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
user_id: string;
user_login: string;
user_name: string;
id: string;
reward: {
type: 'single_message_bypass_sub_mode' | 'send_highlighted_message' | 'random_sub_emote_unlock' | 'chosen_sub_emote_unlock' | 'chosen_modified_sub_emote_unlock';
channel_points: number;
emote: {
id: string;
name: string;
} | null;
};
message: {
text: string;
type: 'text' | 'emote';
emotes: [
{
id: string;
}
] | null;
} | null;
redeemed_at: string;
}
interface ChannelPointsCustomRewardAddEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
is_enabled: boolean;
is_paused: boolean;
is_in_stock: boolean;
title: string;
cost: number;
prompt: string;
is_user_input_required: boolean;
should_redemptions_skip_request_queue: boolean;
max_per_stream: {
is_enabled: boolean;
value: number;
};
max_per_user_per_stream: {
is_enabled: boolean;
value: number;
};
background_color: string;
image: {
url_1x: string;
url_2x: string;
url_4x: string;
} | null;
default_image: {
url_1x: string;
url_2x: string;
url_4x: string;
};
global_cooldown: {
is_enabled: boolean;
seconds: number;
};
cooldown_expires_at: string | null;
redemptions_redeemed_current_stream: number | null;
}
interface ChannelPointsCustomRewardUpdateEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
is_enabled: boolean;
is_paused: boolean;
is_in_stock: boolean;
title: string;
cost: number;
prompt: string;
is_user_input_required: boolean;
should_redemptions_skip_request_queue: boolean;
max_per_stream: {
is_enabled: boolean;
value: number;
};
max_per_user_per_stream: {
is_enabled: boolean;
value: number;
};
background_color: string;
image: {
url_1x: string;
url_2x: string;
url_4x: string;
} | null;
default_image: {
url_1x: string;
url_2x: string;
url_4x: string;
};
global_cooldown: {
is_enabled: boolean;
seconds: number;
};
cooldown_expires_at: string | null;
redemptions_redeemed_current_stream: number | null;
}
interface ChannelPointsCustomRewardRemoveEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
is_enabled: boolean;
is_paused: boolean;
is_in_stock: boolean;
title: string;
cost: number;
prompt: string;
is_user_input_required: boolean;
should_redemptions_skip_request_queue: boolean;
max_per_stream: {
is_enabled: boolean;
value: number;
};
max_per_user_per_stream: {
is_enabled: boolean;
value: number;
};
background_color: string;
image: {
url_1x: string;
url_2x: string;
url_4x: string;
} | null;
default_image: {
url_1x: string;
url_2x: string;
url_4x: string;
};
global_cooldown: {
is_enabled: boolean;
seconds: number;
};
cooldown_expires_at: string | null;
redemptions_redeemed_current_stream: number | null;
}
interface ChannelPointsCustomRewardRedemptionAddEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
user_id: string;
user_login: string;
user_name: string;
user_input: string | null;
status: 'unknown' | 'unfulfilled' | 'fulfilled' | 'canceled';
reward: {
id: string;
title: string;
cost: number;
prompt: string;
};
redeemed_at: string;
}
interface ChannelPointsCustomRewardRedemptionUpdateEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
user_id: string;
user_login: string;
user_name: string;
user_input: string | null;
status: 'unknown' | 'unfulfilled' | 'fulfilled' | 'canceled';
reward: {
id: string;
title: string;
cost: number;
prompt: string;
};
redeemed_at: string;
}
interface ChannelPredictionBeginEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
outcomes: [
{
id: string;
title: string;
color: 'pink' | 'blue';
users: number;
channel_points: number;
top_predictors: [
{
user_id: string;
user_login: string;
user_name: string;
channel_points_won: number | null;
channel_points_used: number;
}
];
}
];
started_at: string;
locks_at: string;
}
interface ChannelPredictionProgressEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
outcomes: [
{
id: string;
title: string;
color: 'pink' | 'blue';
users: number;
channel_points: number;
top_predictors: [
{
user_id: string;
user_login: string;
user_name: string;
channel_points_won: number | null;
channel_points_used: number;
}
];
}
];
started_at: string;
locks_at: string;
}
interface ChannelPredictionLockEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
outcomes: [
{
id: string;
title: string;
color: 'pink' | 'blue';
users: number;
channel_points: number;
top_predictors: [
{
user_id: string;
user_login: string;
user_name: string;
channel_points_won: number | null;
channel_points_used: number;
}
];
}
];
started_at: string;
locked_at: string;
}
interface ChannelPredictionEndEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
title: string;
winning_outcome_id: string;
outcomes: [
{
id: string;
title: string;
color: 'pink' | 'blue';
users: number;
channel_points: number;
top_predictors: [
{
user_id: string;
user_login: string;
user_name: string;
channel_points_won: number | null;
channel_points_used: number;
}
];
}
];
started_at: string;
locked_at: string;
}
interface ChannelSharedChatSessionBeginEvent {
session_id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
host_broadcaster_user_id: string;
host_broadcaster_user_name: string;
host_broadcaster_user_login: string;
participants: [
{
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
}
];
}
interface ChannelSharedChatSessionUpdateEvent {
session_id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
host_broadcaster_user_id: string;
host_broadcaster_user_name: string;
host_broadcaster_user_login: string;
participants: [
{
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
}
];
}
interface ChannelSharedChatSessionEndEvent {
session_id: string;
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
host_broadcaster_user_id: string;
host_broadcaster_user_name: string;
host_broadcaster_user_login: string;
}
interface ChannelSubscriptionEndEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
tier: string;
is_gift: boolean;
}
interface ChannelSubscriptionGiftEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
total: number;
tier: string;
cumulative_total: number | null;
is_anonymous: boolean;
}
interface ChannelSubscriptionMessageEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
tier: string;
message: {
text: string;
emotes: [
{
begin: number;
end: number;
id: string;
}
] | null;
};
cumulative_total: number;
streak_months: number | null;
duration_months: number;
}
interface ChannelSuspiciousUserUpdateEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
moderator_user_id: string;
moderator_user_name: string;
moderator_user_login: string;
user_id: string;
user_name: string;
user_login: string;
low_trust_status: 'none' | 'active_monitoring' | 'restricted';
}
interface ChannelSuspiciousUserMessageEvent {
broadcaster_user_id: string;
broadcaster_user_name: string;
broadcaster_user_login: string;
user_id: string;
user_name: string;
user_login: string;
low_trust_status: 'none' | 'active_monitoring' | 'restricted';
shared_ban_channel_ids: string[];
types: 'manually_added' | 'ban_evader' | 'banned_in_shared_channel';
ban_evasion_evaluation: 'unknown' | 'possible' | 'likely';
message: {
message_id: string;
text: string;
fragments: [
{
type: 'text' | 'cheermote' | 'emote';
text: string;
cheermote: {
prefix: string;
bits: string;
tier: string;
} | null;
emote: {
id: string;
emote_set_id: string;
} | null;
}
];
};
}
interface ChannelVIPAddEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
interface ChannelVIPRemoveEvent {
user_id: string;
user_login: string;
user_name: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
interface ChannelWarningAcknowledgeEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
}
interface ChannelWarningSendEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
user_id: string;
user_login: string;
user_name: string;
reason: string | null;
chat_rules_cited: string[] | null;
}
interface CharityDonationEvent {
id: string;
campaign_id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
charity_name: string;
charity_description: string;
charity_logo: string;
charity_website: string;
amount: {
value: number;
decimal_places: number;
currency: string;
};
}
interface CharityCampaignStartEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
charity_name: string;
charity_description: string;
charity_logo: string;
charity_website: string;
current_amount: {
value: number;
decimal_places: number;
currency: string;
};
target_amount: {
value: number;
decimal_places: number;
currency: string;
};
started_at: string;
}
interface CharityCampaignProgressEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
charity_name: string;
charity_description: string;
charity_logo: string;
charity_website: string;
current_amount: {
value: number;
decimal_places: number;
currency: string;
};
target_amount: {
value: number;
decimal_places: number;
currency: string;
};
}
interface CharityCampaignStopEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
charity_name: string;
charity_description: string;
charity_logo: string;
charity_website: string;
current_amount: {
value: number;
decimal_places: number;
currency: string;
};
target_amount: {
value: number;
decimal_places: number;
currency: string;
};
stopped_at: string;
}
interface ConduitShardDisabledEvent {
conduit_id: string;
shard_id: string;
status: string;
transport: string;
method: string;
callback: string | null;
session_id: string | null;
connected_at: string | null;
disconnected_at: string | null;
}
interface DropEntitlementGrantEvent {
id: string;
data: [
{
organization_id: string;
category_id: string;
category_name: string;
campaign_id: string;
user_id: string;
user_name: string;
user_login: string;
entitlement_id: string;
benefit_id: string;
created_at: string;
}
];
}
interface ExtensionBitsTransactionCreateEvent {
extension_client_id: string;
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
user_id: string;
user_login: string;
user_name: string;
product: {
name: string;
bits: number;
sku: string;
in_development: boolean;
};
}
interface GoalsEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
type: 'follow' | 'subscription' | 'subscription_count' | 'new_subscription' | 'new_subscription_count' | 'new_bit' | 'new_cheerer ';
description: string;
current_amount: number;
target_amount: number;
started_at: string;
ended_at: string;
}
interface GoalsEndEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
type: 'follow' | 'subscription' | 'subscription_count' | 'new_subscription' | 'new_subscription_count' | 'new_bit' | 'new_cheerer ';
description: string;
is_achieved: boolean;
current_amount: number;
target_amount: number;
started_at: string;
ended_at: string;
}
interface HypeTrainBeginEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
total: number;
progress: number;
goal: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
last_contribution: {
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
};
level: number;
started_at: string;
expires_at: string;
is_golden_kappa_train: boolean;
}
interface HypeTrainBeginEventV2 {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
total: number;
progress: number;
goal: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
level: number;
all_time_high_level: number;
all_time_high_total: number;
shared_train_participants: [
{
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
] | null;
started_at: string;
expires_at: string;
type: 'treasure' | 'golden_kappa' | 'regular';
is_shared_train: boolean;
}
interface HypeTrainProgressEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
level: number;
total: number;
progress: number;
goal: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
last_contribution: {
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
};
started_at: string;
expires_at: string;
is_golden_kappa_train: boolean;
}
interface HypeTrainProgressEventV2 {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
total: number;
progress: number;
goal: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
level: number;
shared_train_participants: [
{
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
] | null;
started_at: string;
expires_at: string;
type: 'treasure' | 'golden_kappa' | 'regular';
is_shared_train: boolean;
}
interface HypeTrainEndEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
level: number;
total: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
started_at: string;
ended_at: string;
cooldown_ends_at: string;
is_golden_kappa_train: boolean;
}
interface HypeTrainEndEventV2 {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
total: number;
top_contributions: [
{
user_id: string;
user_login: string;
user_name: string;
type: 'bits' | 'subscription' | 'other';
total: number;
}
];
level: number;
shared_train_participants: [
{
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
] | null;
started_at: string;
cooldown_ends_at: string;
ended_at: string;
type: 'treasure' | 'golden_kappa' | 'regular';
is_shared_train: boolean;
}
interface StreamOnlineEvent {
id: string;
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
type: 'live' | 'playlist' | 'watch_party' | 'premiere' | 'rerun';
started_at: string;
}
interface StreamOfflineEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
}
interface UserAuthorizationGrantEvent {
client_id: string;
user_id: string;
user_login: string;
user_name: string;
}
interface UserAuthorizationRevokeEvent {
client_id: string;
user_id: string;
user_login: string;
user_name: string;
}
interface UserUpdateEvent {
user_id: string;
user_login: string;
user_name: string;
email: string | null;
email_verified: boolean;
description: string;
}
interface WhisperReceivedEvent {
from_user_id: string;
from_user_name: string;
from_user_login: string;
to_user_id: string;
to_user_name: string;
to_user_login: string;
whisper_id: string;
whisper: {
text: string;
};
}
interface ShieldModeBeginEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
started_at: string;
}
interface ShieldModeEndEvent {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
ended_at: string;
}
interface ShoutoutCreate {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
to_broadcaster_user_id: string;
to_broadcaster_user_login: string;
to_broadcaster_user_name: string;
moderator_user_id: string;
moderator_user_login: string;
moderator_user_name: string;
viewer_count: number;
started_at: string;
cooldown_ends_at: string;
target_cooldown_ends_at: string;
}
interface ShoutoutReceived {
broadcaster_user_id: string;
broadcaster_user_login: string;
broadcaster_user_name: string;
from_broadcaster_user_id: string;
from_broadcaster_user_login: string;
from_broadcaster_user_name: string;
viewer_count: number;
started_at: string;
}
type Condition<T extends Record<string, string | number | boolean>> = T;
type ConditionBroadcasterUserId = Condition<{
broadcaster_user_id: string;
}>;
type ConditionBroadcasterModeratorUserId = Condition<{
broadcaster_user_id: string;
moderator_user_id: string;
}>;
type ConditionBroadcasterUserIdUserId = Condition<{
broadcaster_user_id: string;
user_id: string;
}>;
type ConditionBroadcasterRewardId = Condition<{
broadcaster_user_id: string;
reward_id?: string;
}>;
type ConditionOrganizationId = Condition<{
organization_id: string;
}>;
type ConditionOrganizationCategoryExtensionClientId = Condition<{
organization_id: string;
category_id: string;
extension_client_id: string;
}>;
type ConditionClientId = Condition<{
client_id: string;
}>;
type ConditionUserId = Condition<{
user_id: string;
}>;
interface SubscriptionDetailsMap {
'automod.message.hold:1': {
type: 'automod.message.hold';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodMessageHoldEventV1;
};
'automod.message.hold:2': {
type: 'automod.message.hold';
version: '2';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodMessageHoldEventV2;
};
'automod.message.update:1': {
type: 'automod.message.update';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodMessageUpdateEventV1;
};
'automod.message.update:2': {
type: 'automod.message.update';
version: '2';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodMessageUpdateEventV2;
};
'automod.settings.update:1': {
type: 'automod.settings.update';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodSettingsUpdateEvent;
};
'automod.terms.update:1': {
type: 'automod.terms.update';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: AutomodTermsUpdateEvent;
};
'channel.bits.use:1': {
type: 'channel.bits.use';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelBitsUseEvent;
};
'channel.update:2': {
type: 'channel.update';
version: '2';
condition: ConditionBroadcasterUserId;
event: ChannelUpdateEvent;
};
'channel.follow:2': {
type: 'channel.follow';
version: '2';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelFollowEvent;
};
'channel.ad_break.begin:1': {
type: 'channel.ad_break.begin';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelAdBreakBeginEvent;
};
'channel.chat.clear:1': {
type: 'channel.chat.clear';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatClearEvent;
};
'channel.chat.clear_user_messages:1': {
type: 'channel.chat.clear_user_messages';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatClearUserMessagesEvent;
};
'channel.chat.message:1': {
type: 'channel.chat.message';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatMessageEvent;
};
'channel.chat.message_delete:1': {
type: 'channel.chat.message_delete';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatMessageDeleteEvent;
};
'channel.chat.notification:1': {
type: 'channel.chat.notification';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatNotificationEvent;
};
'channel.chat_settings.update:1': {
type: 'channel.chat_settings.update';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatSettingsUpdateEvent;
};
'channel.chat.user_message_hold:1': {
type: 'channel.chat.user_message_hold';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatUserMessageHoldEvent;
};
'channel.chat.user_message_update:1': {
type: 'channel.chat.user_message_update';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelChatUserMessageUpdateEvent;
};
'channel.shared_chat.begin:1': {
type: 'channel.shared_chat.begin';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelSharedChatSessionBeginEvent;
};
'channel.shared_chat.update:1': {
type: 'channel.shared_chat.update';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelSharedChatSessionUpdateEvent;
};
'channel.shared_chat.end:1': {
type: 'channel.shared_chat.end';
version: '1';
condition: ConditionBroadcasterUserIdUserId;
event: ChannelSharedChatSessionEndEvent;
};
'channel.subscribe:1': {
type: 'channel.subscribe';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelSubscribeEvent;
};
'channel.subscription.end:1': {
type: 'channel.subscription.end';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelSubscriptionEndEvent;
};
'channel.subscription.gift:1': {
type: 'channel.subscription.gift';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelSubscriptionGiftEvent;
};
'channel.subscription.message:1': {
type: 'channel.subscription.message';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelSubscriptionMessageEvent;
};
'channel.cheer:1': {
type: 'channel.cheer';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelCheerEvent;
};
'channel.raid:1': {
type: 'channel.raid';
version: '1';
condition: Condition<{
to_broadcaster_user_id: string;
} | {
from_broadcaster_user_id: string;
}>;
event: ChannelRaidEvent;
};
'channel.ban:1': {
type: 'channel.ban';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelBanEvent;
};
'channel.unban:1': {
type: 'channel.unban';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelUnbanEvent;
};
'channel.unban_request.create:1': {
type: 'channel.unban_request.create';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelUnbanRequestCreateEvent;
};
'channel.unban_request.resolve:1': {
type: 'channel.unban_request.resolve';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelUnbanRequestResolveEvent;
};
'channel.moderate:1': {
type: 'channel.moderate';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelModerateEventV1;
};
'channel.moderate:2': {
type: 'channel.moderate';
version: '2';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelModerateEventV2;
};
'channel.moderator.add:1': {
type: 'channel.moderator.add';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelModeratorAddEvent;
};
'channel.moderator.remove:1': {
type: 'channel.moderator.remove';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelModeratorRemoveEvent;
};
'channel.guest_star_session.begin:beta': {
type: 'channel.guest_star_session.begin';
version: 'beta';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelGuestStarSessionBeginEvent;
};
'channel.guest_star_session.end:beta': {
type: 'channel.guest_star_session.end';
version: 'beta';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelGuestStarSessionEndEvent;
};
'channel.guest_star_guest.update:beta': {
type: 'channel.guest_star_guest.update';
version: 'beta';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelGuestStarSettingsUpdateEvent;
};
'channel.guest_star_settings.update:beta': {
type: 'channel.guest_star_settings.update';
version: 'beta';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelGuestStarSettingsUpdateEvent;
};
'channel.channel_points_automatic_reward_redemption.add:1': {
type: 'channel.channel_points_automatic_reward_redemption.add';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPointsAutomaticRewardRedemptionAddEventV1;
};
'channel.channel_points_automatic_reward_redemption.add:2': {
type: 'channel.channel_points_automatic_reward_redemption.add';
version: '2';
condition: ConditionBroadcasterUserId;
event: ChannelPointsAutomaticRewardRedemptionAddEventV2;
};
'channel.channel_points_custom_reward.add:1': {
type: 'channel.channel_points_custom_reward.add';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPointsCustomRewardAddEvent;
};
'channel.channel_points_custom_reward.update:1': {
type: 'channel.channel_points_custom_reward.update';
version: '1';
condition: ConditionBroadcasterRewardId;
event: ChannelPointsCustomRewardUpdateEvent;
};
'channel.channel_points_custom_reward.remove:1': {
type: 'channel.channel_points_custom_reward.remove';
version: '1';
condition: ConditionBroadcasterRewardId;
event: ChannelPointsCustomRewardRemoveEvent;
};
'channel.channel_points_custom_reward_redemption.add:1': {
type: 'channel.channel_points_custom_reward_redemption.add';
version: '1';
condition: ConditionBroadcasterRewardId;
event: ChannelPointsCustomRewardRedemptionAddEvent;
};
'channel.channel_points_custom_reward_redemption.update:1': {
type: 'channel.channel_points_custom_reward_redemption.update';
version: '1';
condition: ConditionBroadcasterRewardId;
event: ChannelPointsCustomRewardRedemptionUpdateEvent;
};
'channel.poll.begin:1': {
type: 'channel.poll.begin';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPollBeginEvent;
};
'channel.poll.progress:1': {
type: 'channel.poll.progress';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPollProgressEvent;
};
'channel.poll.end:1': {
type: 'channel.poll.end';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPollEndEvent;
};
'channel.prediction.begin:1': {
type: 'channel.prediction.begin';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPredictionBeginEvent;
};
'channel.prediction.progress:1': {
type: 'channel.prediction.progress';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPredictionProgressEvent;
};
'channel.prediction.lock:1': {
type: 'channel.prediction.lock';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPredictionLockEvent;
};
'channel.prediction.end:1': {
type: 'channel.prediction.end';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelPredictionEndEvent;
};
'channel.suspicious_user.message:1': {
type: 'channel.suspicious_user.message';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelSuspiciousUserMessageEvent;
};
'channel.suspicious_user.update:1': {
type: 'channel.suspicious_user.update';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelSuspiciousUserUpdateEvent;
};
'channel.vip.add:1': {
type: 'channel.vip.add';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelVIPAddEvent;
};
'channel.vip.remove:1': {
type: 'channel.vip.remove';
version: '1';
condition: ConditionBroadcasterUserId;
event: ChannelVIPRemoveEvent;
};
'channel.warning.acknowledge:1': {
type: 'channel.warning.acknowledge';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelWarningAcknowledgeEvent;
};
'channel.warning.send:1': {
type: 'channel.warning.send';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ChannelWarningSendEvent;
};
'channel.charity_campaign.donate:1': {
type: 'channel.charity_campaign.donate';
version: '1';
condition: ConditionBroadcasterUserId;
event: CharityDonationEvent;
};
'channel.charity_campaign.start:1': {
type: 'channel.charity_campaign.start';
version: '1';
condition: ConditionBroadcasterUserId;
event: CharityCampaignStartEvent;
};
'channel.charity_campaign.progress:1': {
type: 'channel.charity_campaign.progress';
version: '1';
condition: ConditionBroadcasterUserId;
event: CharityCampaignProgressEvent;
};
'channel.charity_campaign.stop:1': {
type: 'channel.charity_campaign.stop';
version: '1';
condition: ConditionBroadcasterUserId;
event: CharityCampaignStopEvent;
};
'conduit.shard.disabled:1': {
type: 'conduit.shard.disabled';
version: '1';
condition: ConditionClientId;
event: ConduitShardDisabledEvent;
};
'drop.entitlement.grant:1': {
type: 'drop.entitlement.grant';
version: '1';
condition: ConditionOrganizationId | ConditionOrganizationCategoryExtensionClientId;
event: DropEntitlementGrantEvent;
};
'extension.bits_transaction.create:1': {
type: 'extension.bits_transaction.create';
version: '1';
condition: ConditionClientId;
event: ExtensionBitsTransactionCreateEvent;
};
'channel.goal.begin:1': {
type: 'channel.goal.begin';
version: '1';
condition: ConditionBroadcasterUserId;
event: GoalsEvent;
};
'channel.goal.progress:1': {
type: 'channel.goal.progress';
version: '1';
condition: ConditionBroadcasterUserId;
event: GoalsEvent;
};
'channel.goal.end:1': {
type: 'channel.goal.end';
version: '1';
condition: ConditionBroadcasterUserId;
event: GoalsEndEvent;
};
'channel.hype_train.begin:1': {
type: 'channel.hype_train.begin';
version: '1';
condition: ConditionBroadcasterUserId;
event: HypeTrainBeginEvent;
};
'channel.hype_train.begin:2': {
type: 'channel.hype_train.begin';
version: '2';
condition: ConditionBroadcasterUserId;
event: HypeTrainBeginEventV2;
};
'channel.hype_train.progress:1': {
type: 'channel.hype_train.progress';
version: '1';
condition: ConditionBroadcasterUserId;
event: HypeTrainProgressEvent;
};
'channel.hype_train.progress:2': {
type: 'channel.hype_train.progress';
version: '2';
condition: ConditionBroadcasterUserId;
event: HypeTrainProgressEventV2;
};
'channel.hype_train.end:1': {
type: 'channel.hype_train.end';
version: '1';
condition: ConditionBroadcasterUserId;
event: HypeTrainEndEvent;
};
'channel.hype_train.end:2': {
type: 'channel.hype_train.end';
version: '2';
condition: ConditionBroadcasterUserId;
event: HypeTrainEndEventV2;
};
'channel.shield_mode.begin:1': {
type: 'channel.shield_mode.begin';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ShieldModeBeginEvent;
};
'channel.shield_mode.end:1': {
type: 'channel.shield_mode.end';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ShieldModeEndEvent;
};
'channel.shoutout.create:1': {
type: 'channel.shoutout.create';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ShoutoutCreate;
};
'channel.shoutout.receive:1': {
type: 'channel.shoutout.receive';
version: '1';
condition: ConditionBroadcasterModeratorUserId;
event: ShoutoutReceived;
};
'stream.online:1': {
type: 'stream.online';
version: '1';
condition: ConditionBroadcasterUserId;
event: StreamOnlineEvent;
};
'stream.offline:1': {
type: 'stream.offline';
version: '1';
condition: ConditionBroadcasterUserId;
event: StreamOfflineEvent;
};
'user.authorization.grant:1': {
type: 'user.authorization.grant';
version: '1';
condition: ConditionClientId;
event: UserAuthorizationGrantEvent;
};
'user.authorization.revoke:1': {
type: 'user.authorization.revoke';
version: '1';
condition: ConditionClientId;
event: UserAuthorizationRevokeEvent;
};
'user.update:1': {
type: 'user.update';
version: '1';
condition: ConditionUserId;
event: UserUpdateEvent;
};
'user.whisper.message:1': {
type: 'user.whisper.message';
version: '1';
condition: ConditionUserId;
event: WhisperReceivedEvent;
};
}
type SubscriptionTypeVersionKey = keyof SubscriptionDetailsMap;
type GetSubscriptionDetails<TKey extends SubscriptionTypeVersionKey> = SubscriptionDetailsMap[TKey];
type SpecificSubscriptionRequest<TKey extends SubscriptionTypeVersionKey> = SubscriptionRequest<GetSubscriptionDetails<TKey>['type'], GetSubscriptionDetails<TKey>['version'], GetSubscriptionDetails<TKey>['condition']>;
type AnySubscriptionRequest = {
[K in SubscriptionTypeVersionKey]: {
type: SubscriptionDetailsMap[K]['type'];
version: SubscriptionDetailsMap[K]['version'];
condition: SubscriptionDetailsMap[K]['condition'];
};
}[SubscriptionTypeVersionKey] | {
type: string;
version: string;
condition: Record<string, string | number | boolean>;
} | {
type: string;
version: string;
condition: Record<string, string | number | boolean | undefined>;
};
interface NotificationMessageMetadata extends EventSubMessageMetadata {
message_type: 'notification';
subscription_type: string;
subscription_version: string;
}
interface NotificationMessagePayload<TCondition extends Record<string, any> = Record<string, any>, TEvent extends Record<string, any> = Record<string, any>> {
subscription: EventSubSubscriptionData<TCondition>;
event: TEvent;
}
declare class NotificationMessage implements EventSubMessage<NotificationMessageMetadata, NotificationMessagePayload> {
readonly metadata: NotificationMessageMetadata;
readonly payload: NotificationMessagePayload;
constructor(rawMessage: any);
isAutomodMessageHoldV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.message.hold:1']['condition'], SubscriptionDetailsMap['automod.message.hold:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.message.hold';
subscription_version: '1';
};
};
isAutomodMessageHoldV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.message.hold:2']['condition'], SubscriptionDetailsMap['automod.message.hold:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.message.hold';
subscription_version: '2';
};
};
isAutomodMessageUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.message.update:1']['condition'], SubscriptionDetailsMap['automod.message.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.message.update';
subscription_version: '1';
};
};
isAutomodMessageUpdateV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.message.update:2']['condition'], SubscriptionDetailsMap['automod.message.update:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.message.update';
subscription_version: '2';
};
};
isAutomodSettingsUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.settings.update:1']['condition'], SubscriptionDetailsMap['automod.settings.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.settings.update';
subscription_version: '1';
};
};
isAutomodTermsUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['automod.terms.update:1']['condition'], SubscriptionDetailsMap['automod.terms.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'automod.terms.update';
subscription_version: '1';
};
};
isChannelBitsUseV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.bits.use:1']['condition'], SubscriptionDetailsMap['channel.bits.use:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.bits.use';
subscription_version: '1';
};
};
isChannelUpdateV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.update:2']['condition'], SubscriptionDetailsMap['channel.update:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.update';
subscription_version: '2';
};
};
isChannelFollowV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.follow:2']['condition'], SubscriptionDetailsMap['channel.follow:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.follow';
subscription_version: '2';
};
};
isChannelAdBreakBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.ad_break.begin:1']['condition'], SubscriptionDetailsMap['channel.ad_break.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.ad_break.begin';
subscription_version: '1';
};
};
isChannelChatClearV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.clear:1']['condition'], SubscriptionDetailsMap['channel.chat.clear:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.clear';
subscription_version: '1';
};
};
isChannelChatClearUserMessagesV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.clear_user_messages:1']['condition'], SubscriptionDetailsMap['channel.chat.clear_user_messages:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.clear_user_messages';
subscription_version: '1';
};
};
isChannelChatMessageV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.message:1']['condition'], SubscriptionDetailsMap['channel.chat.message:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.message';
subscription_version: '1';
};
};
isChannelChatMessageDeleteV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.message_delete:1']['condition'], SubscriptionDetailsMap['channel.chat.message_delete:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.message_delete';
subscription_version: '1';
};
};
isChannelChatNotificationV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.notification:1']['condition'], SubscriptionDetailsMap['channel.chat.notification:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.notification';
subscription_version: '1';
};
};
isChannelChatSettingsUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat_settings.update:1']['condition'], SubscriptionDetailsMap['channel.chat_settings.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat_settings.update';
subscription_version: '1';
};
};
isChannelChatUserMessageHoldV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.user_message_hold:1']['condition'], SubscriptionDetailsMap['channel.chat.user_message_hold:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.user_message_hold';
subscription_version: '1';
};
};
isChannelChatUserMessageUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.chat.user_message_update:1']['condition'], SubscriptionDetailsMap['channel.chat.user_message_update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.chat.user_message_update';
subscription_version: '1';
};
};
isChannelSharedChatBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shared_chat.begin:1']['condition'], SubscriptionDetailsMap['channel.shared_chat.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shared_chat.begin';
subscription_version: '1';
};
};
isChannelSharedChatUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shared_chat.update:1']['condition'], SubscriptionDetailsMap['channel.shared_chat.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shared_chat.update';
subscription_version: '1';
};
};
isChannelSharedChatEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shared_chat.end:1']['condition'], SubscriptionDetailsMap['channel.shared_chat.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shared_chat.end';
subscription_version: '1';
};
};
isChannelSubscribeV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.subscribe:1']['condition'], SubscriptionDetailsMap['channel.subscribe:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.subscribe';
subscription_version: '1';
};
};
isChannelSubscriptionEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.subscription.end:1']['condition'], SubscriptionDetailsMap['channel.subscription.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.subscription.end';
subscription_version: '1';
};
};
isChannelSubscriptionGiftV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.subscription.gift:1']['condition'], SubscriptionDetailsMap['channel.subscription.gift:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.subscription.gift';
subscription_version: '1';
};
};
isChannelSubscriptionMessageV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.subscription.message:1']['condition'], SubscriptionDetailsMap['channel.subscription.message:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.subscription.message';
subscription_version: '1';
};
};
isChannelCheerV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.cheer:1']['condition'], SubscriptionDetailsMap['channel.cheer:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.cheer';
subscription_version: '1';
};
};
isChannelRaidV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.raid:1']['condition'], SubscriptionDetailsMap['channel.raid:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.raid';
subscription_version: '1';
};
};
isChannelBanV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.ban:1']['condition'], SubscriptionDetailsMap['channel.ban:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.ban';
subscription_version: '1';
};
};
isChannelUnbanV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.unban:1']['condition'], SubscriptionDetailsMap['channel.unban:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.unban';
subscription_version: '1';
};
};
isChannelUnbanRequestCreateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.unban_request.create:1']['condition'], SubscriptionDetailsMap['channel.unban_request.create:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.unban_request.create';
subscription_version: '1';
};
};
isChannelUnbanRequestResolveV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.unban_request.resolve:1']['condition'], SubscriptionDetailsMap['channel.unban_request.resolve:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.unban_request.resolve';
subscription_version: '1';
};
};
isChannelModerateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.moderate:1']['condition'], SubscriptionDetailsMap['channel.moderate:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.moderate';
subscription_version: '1';
};
};
isChannelModerateV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.moderate:2']['condition'], SubscriptionDetailsMap['channel.moderate:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.moderate';
subscription_version: '2';
};
};
isChannelModeratorAddV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.moderator.add:1']['condition'], SubscriptionDetailsMap['channel.moderator.add:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.moderator.add';
subscription_version: '1';
};
};
isChannelModeratorRemoveV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.moderator.remove:1']['condition'], SubscriptionDetailsMap['channel.moderator.remove:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.moderator.remove';
subscription_version: '1';
};
};
isChannelGuestStarSessionBeginBeta(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.guest_star_session.begin:beta']['condition'], SubscriptionDetailsMap['channel.guest_star_session.begin:beta']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.guest_star_session.begin';
subscription_version: 'beta';
};
};
isChannelGuestStarSessionEndBeta(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.guest_star_session.end:beta']['condition'], SubscriptionDetailsMap['channel.guest_star_session.end:beta']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.guest_star_session.end';
subscription_version: 'beta';
};
};
isChannelGuestStarGuestUpdateBeta(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.guest_star_guest.update:beta']['condition'], SubscriptionDetailsMap['channel.guest_star_guest.update:beta']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.guest_star_guest.update';
subscription_version: 'beta';
};
};
isChannelGuestStarSettingsUpdateBeta(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.guest_star_settings.update:beta']['condition'], SubscriptionDetailsMap['channel.guest_star_settings.update:beta']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.guest_star_settings.update';
subscription_version: 'beta';
};
};
isChannelChannelPointsAutomaticRewardRedemptionAddV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_automatic_reward_redemption.add:1']['condition'], SubscriptionDetailsMap['channel.channel_points_automatic_reward_redemption.add:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_automatic_reward_redemption.add';
subscription_version: '1';
};
};
isChannelChannelPointsAutomaticRewardRedemptionAddV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_automatic_reward_redemption.add:2']['condition'], SubscriptionDetailsMap['channel.channel_points_automatic_reward_redemption.add:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_automatic_reward_redemption.add';
subscription_version: '2';
};
};
isChannelChannelPointsCustomRewardAddV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_custom_reward.add:1']['condition'], SubscriptionDetailsMap['channel.channel_points_custom_reward.add:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_custom_reward.add';
subscription_version: '1';
};
};
isChannelChannelPointsCustomRewardUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_custom_reward.update:1']['condition'], SubscriptionDetailsMap['channel.channel_points_custom_reward.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_custom_reward.update';
subscription_version: '1';
};
};
isChannelChannelPointsCustomRewardRemoveV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_custom_reward.remove:1']['condition'], SubscriptionDetailsMap['channel.channel_points_custom_reward.remove:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_custom_reward.remove';
subscription_version: '1';
};
};
isChannelChannelPointsCustomRewardRedemptionAddV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_custom_reward_redemption.add:1']['condition'], SubscriptionDetailsMap['channel.channel_points_custom_reward_redemption.add:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_custom_reward_redemption.add';
subscription_version: '1';
};
};
isChannelChannelPointsCustomRewardRedemptionUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.channel_points_custom_reward_redemption.update:1']['condition'], SubscriptionDetailsMap['channel.channel_points_custom_reward_redemption.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.channel_points_custom_reward_redemption.update';
subscription_version: '1';
};
};
isChannelPollBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.poll.begin:1']['condition'], SubscriptionDetailsMap['channel.poll.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.poll.begin';
subscription_version: '1';
};
};
isChannelPollProgressV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.poll.progress:1']['condition'], SubscriptionDetailsMap['channel.poll.progress:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.poll.progress';
subscription_version: '1';
};
};
isChannelPollEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.poll.end:1']['condition'], SubscriptionDetailsMap['channel.poll.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.poll.end';
subscription_version: '1';
};
};
isChannelPredictionBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.prediction.begin:1']['condition'], SubscriptionDetailsMap['channel.prediction.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.prediction.begin';
subscription_version: '1';
};
};
isChannelPredictionProgressV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.prediction.progress:1']['condition'], SubscriptionDetailsMap['channel.prediction.progress:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.prediction.progress';
subscription_version: '1';
};
};
isChannelPredictionLockV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.prediction.lock:1']['condition'], SubscriptionDetailsMap['channel.prediction.lock:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.prediction.lock';
subscription_version: '1';
};
};
isChannelPredictionEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.prediction.end:1']['condition'], SubscriptionDetailsMap['channel.prediction.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.prediction.end';
subscription_version: '1';
};
};
isChannelSuspiciousUserMessageV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.suspicious_user.message:1']['condition'], SubscriptionDetailsMap['channel.suspicious_user.message:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.suspicious_user.message';
subscription_version: '1';
};
};
isChannelSuspiciousUserUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.suspicious_user.update:1']['condition'], SubscriptionDetailsMap['channel.suspicious_user.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.suspicious_user.update';
subscription_version: '1';
};
};
isChannelVipAddV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.vip.add:1']['condition'], SubscriptionDetailsMap['channel.vip.add:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.vip.add';
subscription_version: '1';
};
};
isChannelVipRemoveV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.vip.remove:1']['condition'], SubscriptionDetailsMap['channel.vip.remove:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.vip.remove';
subscription_version: '1';
};
};
isChannelWarningAcknowledgeV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.warning.acknowledge:1']['condition'], SubscriptionDetailsMap['channel.warning.acknowledge:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.warning.acknowledge';
subscription_version: '1';
};
};
isChannelWarningSendV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.warning.send:1']['condition'], SubscriptionDetailsMap['channel.warning.send:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.warning.send';
subscription_version: '1';
};
};
isChannelCharityCampaignDonateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.charity_campaign.donate:1']['condition'], SubscriptionDetailsMap['channel.charity_campaign.donate:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.charity_campaign.donate';
subscription_version: '1';
};
};
isChannelCharityCampaignStartV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.charity_campaign.start:1']['condition'], SubscriptionDetailsMap['channel.charity_campaign.start:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.charity_campaign.start';
subscription_version: '1';
};
};
isChannelCharityCampaignProgressV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.charity_campaign.progress:1']['condition'], SubscriptionDetailsMap['channel.charity_campaign.progress:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.charity_campaign.progress';
subscription_version: '1';
};
};
isChannelCharityCampaignStopV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.charity_campaign.stop:1']['condition'], SubscriptionDetailsMap['channel.charity_campaign.stop:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.charity_campaign.stop';
subscription_version: '1';
};
};
isConduitShardDisabledV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['conduit.shard.disabled:1']['condition'], SubscriptionDetailsMap['conduit.shard.disabled:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'conduit.shard.disabled';
subscription_version: '1';
};
};
isDropEntitlementGrantV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['drop.entitlement.grant:1']['condition'], SubscriptionDetailsMap['drop.entitlement.grant:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'drop.entitlement.grant';
subscription_version: '1';
};
};
isExtensionBitsTransactionCreateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['extension.bits_transaction.create:1']['condition'], SubscriptionDetailsMap['extension.bits_transaction.create:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'extension.bits_transaction.create';
subscription_version: '1';
};
};
isChannelGoalBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.goal.begin:1']['condition'], SubscriptionDetailsMap['channel.goal.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.goal.begin';
subscription_version: '1';
};
};
isChannelGoalProgressV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.goal.progress:1']['condition'], SubscriptionDetailsMap['channel.goal.progress:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.goal.progress';
subscription_version: '1';
};
};
isChannelGoalEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.goal.end:1']['condition'], SubscriptionDetailsMap['channel.goal.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.goal.end';
subscription_version: '1';
};
};
/**
* @deprecated This method is deprecated use isChannelHypeTrainBeginV2 instead.
*/
isChannelHypeTrainBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.begin:1']['condition'], SubscriptionDetailsMap['channel.hype_train.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.begin';
subscription_version: '1';
};
};
isChannelHypeTrainBeginV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.begin:2']['condition'], SubscriptionDetailsMap['channel.hype_train.begin:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.begin';
subscription_version: '2';
};
};
/**
* @deprecated This method is deprecated use isChannelHypeTrainProgressV2 instead.
*/
isChannelHypeTrainProgressV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.progress:1']['condition'], SubscriptionDetailsMap['channel.hype_train.progress:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.progress';
subscription_version: '1';
};
};
isChannelHypeTrainProgressV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.progress:2']['condition'], SubscriptionDetailsMap['channel.hype_train.progress:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.progress';
subscription_version: '2';
};
};
/**
* @deprecated This method is deprecated use isChannelHypeTrainEndV2 instead.
*/
isChannelHypeTrainEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.end:1']['condition'], SubscriptionDetailsMap['channel.hype_train.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.end';
subscription_version: '1';
};
};
isChannelHypeTrainEndV2(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.hype_train.end:2']['condition'], SubscriptionDetailsMap['channel.hype_train.end:2']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.hype_train.end';
subscription_version: '2';
};
};
isChannelShieldModeBeginV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shield_mode.begin:1']['condition'], SubscriptionDetailsMap['channel.shield_mode.begin:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shield_mode.begin';
subscription_version: '1';
};
};
isChannelShieldModeEndV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shield_mode.end:1']['condition'], SubscriptionDetailsMap['channel.shield_mode.end:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shield_mode.end';
subscription_version: '1';
};
};
isChannelShoutoutCreateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shoutout.create:1']['condition'], SubscriptionDetailsMap['channel.shoutout.create:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shoutout.create';
subscription_version: '1';
};
};
isChannelShoutoutReceiveV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['channel.shoutout.receive:1']['condition'], SubscriptionDetailsMap['channel.shoutout.receive:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'channel.shoutout.receive';
subscription_version: '1';
};
};
isStreamOnlineV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['stream.online:1']['condition'], SubscriptionDetailsMap['stream.online:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'stream.online';
subscription_version: '1';
};
};
isStreamOfflineV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['stream.offline:1']['condition'], SubscriptionDetailsMap['stream.offline:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'stream.offline';
subscription_version: '1';
};
};
isUserAuthorizationGrantV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['user.authorization.grant:1']['condition'], SubscriptionDetailsMap['user.authorization.grant:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'user.authorization.grant';
subscription_version: '1';
};
};
isUserAuthorizationRevokeV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['user.authorization.revoke:1']['condition'], SubscriptionDetailsMap['user.authorization.revoke:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'user.authorization.revoke';
subscription_version: '1';
};
};
isUserUpdateV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['user.update:1']['condition'], SubscriptionDetailsMap['user.update:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'user.update';
subscription_version: '1';
};
};
isUserWhisperMessageV1(): this is NotificationMessage & {
payload: NotificationMessagePayload<SubscriptionDetailsMap['user.whisper.message:1']['condition'], SubscriptionDetailsMap['user.whisper.message:1']['event']>;
metadata: NotificationMessageMetadata & {
subscription_type: 'user.whisper.message';
subscription_version: '1';
};
};
}
interface ReconnectMessageMetadata extends EventSubMessageMetadata {
message_type: 'session_reconnect';
}
interface ReconnectMessagePayload {
session: EventSubSessionData;
}
type ReconnectMessage = EventSubMessage<ReconnectMessageMetadata, ReconnectMessagePayload>;
type RevocationStatus = 'user_removed' | 'authorization_revoked' | 'version_removed' | 'chat_user_banned' | string;
interface RevocationMessageMetadata extends EventSubMessageMetadata {
message_type: 'revocation';
subscription_type: string;
subscription_version: string;
}
interface RevocationMessagePayload<TCondition extends Record<string, any> = Record<string, any>> {
subscription: EventSubSubscriptionData<TCondition> & {
status: RevocationStatus;
};
}
type RevocationMessage = EventSubMessage<RevocationMessageMetadata, RevocationMessagePayload<any>>;
interface WelcomeMessageMetadata extends EventSubMessageMetadata {
message_type: 'session_welcome';
}
interface WelcomeMessagePayload {
session: EventSubSessionData;
}
type WelcomeMessage = EventSubMessage<WelcomeMessageMetadata, WelcomeMessagePayload>;
type TwitchEventSubMessage = WelcomeMessage | KeepaliveMessage | NotificationMessage | ReconnectMessage | RevocationMessage;
interface EventSubMessageMetadata {
message_id: string;
message_type: string;
message_timestamp: string;
subscription_type?: string;
subscription_version?: string;
}
interface EventSubTransport {
method: 'websocket' | 'webhook' | 'conduit';
session_id?: string;
connected_at?: string;
disconnected_at?: string;
callback?: string;
conduit_id?: string;
}
interface EventSubSubscriptionData<TCondition extends Record<string, any> = Record<string, any>> {
id: string;
status: string;
type: string;
version: string;
cost: number;
condition: TCondition;
transport: EventSubTransport;
created_at: string;
}
interface EventSubSessionData {
id: string;
status: 'connected' | 'reconnecting';
connected_at: string;
keepalive_timeout_seconds: number | null;
reconnect_url: string | null;
}
interface EventSubMessage<TMetadata extends EventSubMessageMetadata, TPayload extends Record<string, any> | {}> {
metadata: TMetadata;
payload: TPayload;
}
interface EventSubClientConfig {
clientId: string;
token: string;
keepaliveTimeoutSeconds?: number;
apiBaseUrl?: string;
websocketUrl?: string;
reconnectBackoff?: {
initialDelay?: number;
maxDelay?: number;
multiplier?: number;
maxRetries?: number;
};
skipKeepaliveValidation?: boolean;
}
interface SubscriptionRequest<TType extends string, TVersion extends string, TCondition extends Record<string, any>> {
type: TType;
version: TVersion;
condition: TCondition;
}
interface CreateSubscriptionSuccessResponse {
data: EventSubSubscriptionData<any>[];
total: number;
total_cost: number;
max_total_cost: number;
}
interface TwitchApiErrorResponse {
error: string;
status: number;
message: string;
}
interface GetSubscriptionsSuccessResponse extends CreateSubscriptionSuccessResponse {
pagination: {
cursor?: string;
};
}
interface EventSubClientEvents {
connect: (session: EventSubSessionData) => void;
disconnect: (data: {
code: number;
reason: string;
}) => void;
error: (error: Error | AxiosError<TwitchApiErrorResponse>) => void;
rawMessage: (message: TwitchEventSubMessage) => void;
welcome: (message: WelcomeMessage) => void;
keepalive: (message: KeepaliveMessage) => void;
reconnect: (message: ReconnectMessage) => void;
revocation: (message: RevocationMessage) => void;
notification: (message: NotificationMessage) => void;
}
declare interface EventSubClient {
on<K extends keyof EventSubClientEvents>(event: K, listener: EventSubClientEvents[K]): this;
once<K extends keyof EventSubClientEvents>(event: K, listener: EventSubClientEvents[K]): this;
emit<K extends keyof EventSubClientEvents>(event: K, ...args: Parameters<EventSubClientEvents[K]>): boolean;
off<K extends keyof EventSubClientEvents>(event: K, listener: EventSubClientEvents[K]): this;
removeAllListeners<K extends keyof EventSubClientEvents>(event?: K): this;
}
declare class EventSubClient extends EventEmitter {
private readonly clientId;
private token;
private readonly apiClient;
private readonly wsHandler;
private activeSubscriptions;
constructor(options: EventSubClientConfig);
updateToken(newToken: string): void;
connect(): void;
disconnect(): void;
isConnected(): boolean;
getSessionId(): string | null;
subscribe(this: EventSubClient, requests: AnySubscriptionRequest | AnySubscriptionRequest[]): Promise<CreateSubscriptionSuccessResponse[]>;
private _doSubscribe;
unsubscribe(ids: string | string[]): Promise<void>;
getAllSubscriptions(filter?: {
status: string;
} | {
type: string;
} | {
user_id: string;
}): Promise<EventSubSubscriptionData<any>[]>;
getSubscriptionsPage(filter?: {
status: string;
} | {
type: string;
} | {
user_id: string;
}, after?: string): Promise<GetSubscriptionsSuccessResponse>;
private handleReconnect;
}
export { type AnySubscriptionRequest, type AutomodMessageHoldEventV1, type AutomodMessageHoldEventV2, type AutomodMessageUpdateEventV1, type AutomodMessageUpdateEventV2, type AutomodSettingsUpdateEvent, type AutomodTermsUpdateEvent, type ChannelAdBreakBeginEvent, type ChannelBanEvent, type ChannelBitsUseEvent, type ChannelChatClearEvent, type ChannelChatClearUserMessagesEvent, type ChannelChatMessageDeleteEvent, type ChannelChatMessageEvent, type ChannelChatNotificationEvent, type ChannelChatSettingsUpdateEvent, type ChannelChatUserMessageHoldEvent, type ChannelChatUserMessageUpdateEvent, type ChannelCheerEvent, type ChannelFollowEvent, type ChannelGuestStarGuestUpdateEvent, type ChannelGuestStarSessionBeginEvent, type ChannelGuestStarSessionEndEvent, type ChannelGuestStarSettingsUpdateEvent, type ChannelModerateEventV1, type ChannelModerateEventV2, type ChannelModeratorAddEvent, type ChannelModeratorRemoveEvent, type ChannelPointsAutomaticRewardRedemptionAddEventV1, type ChannelPointsAutomaticRewardRedemptionAddEventV2, type ChannelPointsCustomRewardAddEvent, type ChannelPointsCustomRewardRedemptionAddEvent, type ChannelPointsCustomRewardRedemptionUpdateEvent, type ChannelPointsCustomRewardRemoveEvent, type ChannelPointsCustomRewardUpdateEvent, type ChannelPollBeginEvent, type ChannelPollEndEvent, type ChannelPollProgressEvent, type ChannelPredictionBeginEvent, type ChannelPredictionEndEvent, type ChannelPredictionLockEvent, type ChannelPredictionProgressEvent, type ChannelRaidEvent, type ChannelSharedChatSessionBeginEvent, type ChannelSharedChatSessionEndEvent, type ChannelSharedChatSessionUpdateEvent, type ChannelSubscribeEvent, type ChannelSubscriptionEndEvent, type ChannelSubscriptionGiftEvent, type ChannelSubscriptionMessageEvent, type ChannelSuspiciousUserMessageEvent, type ChannelSuspiciousUserUpdateEvent, type ChannelUnbanEvent, type ChannelUnbanRequestCreateEvent, type ChannelUnbanRequestResolveEvent, type ChannelUpdateEvent, type ChannelVIPAddEvent, type ChannelVIPRemoveEvent, type ChannelWarningAcknowledgeEvent, type ChannelWarningSendEvent, type CharityCampaignProgressEvent, type CharityCampaignStartEvent, type CharityCampaignStopEvent, type CharityDonationEvent, type ConduitShardDisabledEvent, type CreateSubscriptionSuccessResponse, type DropEntitlementGrantEvent, EventSubClient, type EventSubClientConfig, type EventSubMessage, type EventSubMessageMetadata, type EventSubSessionData, type EventSubSubscriptionData, type EventSubTransport, type ExtensionBitsTransactionCreateEvent, type GetSubscriptionsSuccessResponse, type GoalsEndEvent, type GoalsEvent, type HypeTrainBeginEvent, type HypeTrainBeginEventV2, type HypeTrainEndEvent, type HypeTrainEndEventV2, type HypeTrainProgressEvent, type HypeTrainProgressEventV2, type KeepaliveMessage, type KeepaliveMessageMetadata, type KeepaliveMessagePayload, NotificationMessage, type NotificationMessageMetadata, type NotificationMessagePayload, type ReconnectMessage, type ReconnectMessageMetadata, type ReconnectMessagePayload, type RevocationMessage, type RevocationMessageMetadata, type RevocationMessagePayload, type RevocationStatus, type ShieldModeBeginEvent, type ShieldModeEndEvent, type ShoutoutCreate, type ShoutoutReceived, type SpecificSubscriptionRequest, type StreamOfflineEvent, type StreamOnlineEvent, type SubscriptionDetailsMap, type SubscriptionRequest, type SubscriptionTypeVersionKey, type TwitchApiErrorResponse, type TwitchEventSubMessage, type UserAuthorizationGrantEvent, type UserAuthorizationRevokeEvent, type UserUpdateEvent, type WelcomeMessage, type WelcomeMessageMetadata, type WelcomeMessagePayload, type WhisperReceivedEvent, EventSubClient as default };