import type { mastodon } from 'masto' import type { UserLogin } from '~/types' export type SubscriptionResult = 'subscribed' | 'notification-denied' | 'not-supported' | 'invalid-vapid-key' | 'no-user' export interface PushManagerSubscriptionInfo { registration: ServiceWorkerRegistration subscription: PushSubscription | null } export interface RequiredUserLogin extends Required> { pushSubscription?: mastodon.v1.WebPushSubscription } export interface CreatePushNotification { alerts?: Partial | null policy?: mastodon.v1.SubscriptionPolicy } export type PushNotificationRequest = Record export type PushNotificationPolicy = Record export interface CustomEmojisInfo { lastUpdate: number emojis: mastodon.v1.CustomEmoji[] } export type PushSubscriptionErrorCode = 'too_many_registrations' export class PushSubscriptionError extends Error { code: PushSubscriptionErrorCode constructor(code: PushSubscriptionErrorCode, message?: string) { super(message) this.code = code } }