export interface WebPushSubscriptionPolicyRegistry {
    all: never;
    followed: never;
    follower: never;
    none: never;
}
export type WebPushSubscriptionPolicy = keyof WebPushSubscriptionPolicyRegistry;
/**
 * Represents a subscription to the push streaming server.
 * @see https://docs.joinmastodon.org/entities/WebPushSubscription/
 */
export interface WebPushSubscription {
    /** The id of the push subscription in the database. */
    id: string;
    /** Where push alerts will be sent to. */
    endpoint: string;
    /** The streaming server's VAPID key. */
    serverKey: string;
    /** Which alerts should be delivered to the `endpoint`. */
    alerts: WebPushSubscriptionAlerts;
    policy: WebPushSubscriptionPolicy;
}
export interface WebPushSubscriptionAlerts {
    /** Receive a push notification when someone has followed you? Boolean. */
    follow: boolean;
    /** Receive a push notification when a status you created has been favourited by someone else? Boolean. */
    favourite: boolean;
    /** Receive a push notification when someone else has mentioned you in a status? Boolean. */
    reblog: boolean;
    /** Receive a push notification when a status you created has been boosted by someone else? Boolean. */
    mention: boolean;
    /** Receive a push notification when a poll you voted in or created has ended? Boolean. */
    poll: boolean;
    /** Receive new subscribed account notifications? Defaults to false. */
    status: boolean;
    /** Receive status edited notifications? Defaults to false. */
    update: boolean;
    admin: {
        /** Receive new user signup notifications? Defaults to false. Must have a role with the appropriate permissions. */
        signUp: boolean;
        /** Receive new report notifications? Defaults to false. Must have a role with the appropriate permissions. */
        report: boolean;
    };
}
