module import { ObserverHandler } from './observer' ; export class TwitchAuth { public clientId : string ; public token : string ; public channelId : string ; public userId : string ; public helixToken : string ; } export class JWT { public channel_id : string ; public user_id : string ; public token : string ; public role : string ; } export interface Position { x : number ; y : number ; } export interface TwitchBitsTransaction { transactionId : string ; product : TwitchBitsProduct ; userId : string ; displayName : string ; initiator : any ; transactionReceipt : string ; } export interface TwitchBitsProduct { domain : string ; sku : string ; inDevelopment : boolean ; displayName : string ; cost : TwitchBitsCost ; } export interface TwitchBitsCost { amount : number ; type : string ; } export interface TwitchActionsSDK { followChannel ( chan ) : void ; onFollow ( cb ) : void ; requestIdShare ( ) : void ; } export interface TwitchBitsSDK { getProducts : ( ) => Promise < TwitchBitsProduct [ ] > ; useBits : ( sku : string ) => void ; onTransactionComplete : ( callback : ( transaction : TwitchBitsTransaction ) => void ) => void ; onTransactionCancelled : ( callback : ( ) => void ) => void ; showBitsBalance : ( ) => void ; setUseLoopback : ( useLoopback : boolean ) => void ; } export interface TwitchFeaturesSDK { isBitsEnabled : boolean ; isChatEnabled : boolean ; isSubscriptionStatusAvailable : boolean ; onChanged : ( callback : ( changes : string [ ] ) => void ) => void ; } export interface TwitchPurchasesSDK { beginPurchase ( sku ) : void ; getPrices ( ) : Promise < any > ; onReloadEntitlements ( cb ) : void ; } export interface TwitchSDK { actions : TwitchActionsSDK ; bits : TwitchBitsSDK ; features : TwitchFeaturesSDK ; purchases : TwitchPurchasesSDK ; settings : any ; onAuthorized ( cb ) : void ; onContext ( cb ) : void ; onError ( cb ) : void ; onVisibilityChanged ( callback ) : void ; onPositionChanged ( callback ) : void ; onHighlightChanged ( callback ) : void ; getAuthData ( ) : any ; send ( target , dataType , event ) ; listen ( topic , callback ) ; unlisten ( topic , callback ) ; } export interface TwitchExtensionHelper { ext : TwitchSDK ; } export class ContextUpdateCallbackHandle extends ObserverHandler < TwitchContext > { private cb : ( context : TwitchContext ) => void ; constructor ( cb ) { super ( ) ; this . cb = cb ; } public notify ( context ) { this . cb ( context ) ; } } export class HighlightChangedCallbackHandle extends ObserverHandler < boolean > { private cb : ( isHighlighted : boolean ) => void ; constructor ( cb ) { super ( ) ; this . cb = cb ; } public notify ( isHighlighted ) { this . cb ( isHighlighted ) ; } } export interface HostingInfo { hostedChannelId : string ; hostingChannelId : string ; } export interface TwitchContext { arePlayerControlsVisible : boolean ; bitrate : number ; bufferSize : number ; displayResolution : string ; game : string ; hlsLatencyBroadcaster : number ; hostingInfo ? : HostingInfo ; isFullScreen : boolean ; isMuted : boolean ; isPaused : boolean ; isTheatreMode : boolean ; language : string ; mode : string ; playbackMode : string ; theme : string ; videoResolution : string ; volume : number ; } declare global { interface Window { Twitch : TwitchExtensionHelper ; } }