/**
 * #notifications_svc.ts
 *
 * Code generated by ts-proto. DO NOT EDIT.
 * @packageDocumentation
 */
import _m0 from "protobufjs/minimal.js";
import { Metadata } from "../../../../lib/Types.js";
import { Empty } from "../../../google/protobuf/empty.js";
import { DismissGamesDrawerBadgeRequest, DismissGamesDrawerBadgeResponse, GetGamesDrawerBadgeStatusRequest, GetGamesDrawerBadgeStatusResponse, ShowGamesDrawerBadgeRequest, ShowGamesDrawerBadgeResponse } from "./gamesdrawerbadge_msg.js";
import { IsOptedInRequest, IsOptedInResponse, ListOptedInUsersRequest, ListOptedInUsersResponse, OptInCurrentUserResponse, OptOutCurrentUserResponse } from "./optin_msg.js";
import { EnqueueRequest, EnqueueResponse } from "./pushnotif_msg.js";
/** Service for opting into and out of Devvit notifications */
export interface Notifications {
    /** This method opts the current authenticated user into receiving notifications. */
    OptInCurrentUser(request: Empty, metadata?: Metadata): Promise<OptInCurrentUserResponse>;
    /** This method opts the current authenticated user out of receiving notifications. */
    OptOutCurrentUser(request: Empty, metadata?: Metadata): Promise<OptOutCurrentUserResponse>;
    /** Lists users who have opted in to receive notifications. */
    ListOptedInUsers(request: ListOptedInUsersRequest, metadata?: Metadata): Promise<ListOptedInUsersResponse>;
    /** Checks if a specific user has opted in to receive notifications. */
    IsOptedIn(request: IsOptedInRequest, metadata?: Metadata): Promise<IsOptedInResponse>;
    /**
     * This method queues a notification for asynchronous delivery. The actual
     * delivery timing and success is not guaranteed by this service.
     */
    Enqueue(request: EnqueueRequest, metadata?: Metadata): Promise<EnqueueResponse>;
    /** Show a badge in the games drawer for a given app, linking to a given post */
    ShowGamesDrawerBadge(request: ShowGamesDrawerBadgeRequest, metadata?: Metadata): Promise<ShowGamesDrawerBadgeResponse>;
    /** Dismiss all active games drawer badges */
    DismissGamesDrawerBadge(request: DismissGamesDrawerBadgeRequest, metadata?: Metadata): Promise<DismissGamesDrawerBadgeResponse>;
    /** Get the status of active games drawer badges for an app */
    GetGamesDrawerBadgeStatus(request: GetGamesDrawerBadgeStatusRequest, metadata?: Metadata): Promise<GetGamesDrawerBadgeStatusResponse>;
}
export declare const NotificationsServiceName = "devvit.plugin.notifications.Notifications";
export declare class NotificationsClientImpl implements Notifications {
    private readonly rpc;
    private readonly service;
    constructor(rpc: Rpc, opts?: {
        service?: string;
    });
    OptInCurrentUser(request: Empty, metadata?: Metadata): Promise<OptInCurrentUserResponse>;
    OptOutCurrentUser(request: Empty, metadata?: Metadata): Promise<OptOutCurrentUserResponse>;
    ListOptedInUsers(request: ListOptedInUsersRequest, metadata?: Metadata): Promise<ListOptedInUsersResponse>;
    IsOptedIn(request: IsOptedInRequest, metadata?: Metadata): Promise<IsOptedInResponse>;
    Enqueue(request: EnqueueRequest, metadata?: Metadata): Promise<EnqueueResponse>;
    ShowGamesDrawerBadge(request: ShowGamesDrawerBadgeRequest, metadata?: Metadata): Promise<ShowGamesDrawerBadgeResponse>;
    DismissGamesDrawerBadge(request: DismissGamesDrawerBadgeRequest, metadata?: Metadata): Promise<DismissGamesDrawerBadgeResponse>;
    GetGamesDrawerBadgeStatus(request: GetGamesDrawerBadgeStatusRequest, metadata?: Metadata): Promise<GetGamesDrawerBadgeStatusResponse>;
}
/** Service for opting into and out of Devvit notifications */
export type NotificationsDefinition = typeof NotificationsDefinition;
export declare const NotificationsDefinition: {
    readonly name: "Notifications";
    readonly fullName: "devvit.plugin.notifications.Notifications";
    readonly methods: {
        /** This method opts the current authenticated user into receiving notifications. */
        readonly optInCurrentUser: {
            readonly name: "OptInCurrentUser";
            readonly requestType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.OptInCurrentUserResponse";
                encode(message: OptInCurrentUserResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): OptInCurrentUserResponse;
                fromJSON(object: any): OptInCurrentUserResponse;
                toJSON(message: OptInCurrentUserResponse): unknown;
                create(base?: {
                    success?: boolean;
                    message?: string;
                }): OptInCurrentUserResponse;
                fromPartial(object: {
                    success?: boolean;
                    message?: string;
                }): OptInCurrentUserResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** This method opts the current authenticated user out of receiving notifications. */
        readonly optOutCurrentUser: {
            readonly name: "OptOutCurrentUser";
            readonly requestType: {
                $type: "google.protobuf.Empty";
                encode(_: Empty, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): Empty;
                fromJSON(_: any): Empty;
                toJSON(_: Empty): unknown;
                create(base?: {}): Empty;
                fromPartial(_: {}): Empty;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.OptOutCurrentUserResponse";
                encode(message: OptOutCurrentUserResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): OptOutCurrentUserResponse;
                fromJSON(object: any): OptOutCurrentUserResponse;
                toJSON(message: OptOutCurrentUserResponse): unknown;
                create(base?: {
                    success?: boolean;
                    message?: string;
                }): OptOutCurrentUserResponse;
                fromPartial(object: {
                    success?: boolean;
                    message?: string;
                }): OptOutCurrentUserResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Lists users who have opted in to receive notifications. */
        readonly listOptedInUsers: {
            readonly name: "ListOptedInUsers";
            readonly requestType: {
                $type: "devvit.plugin.notifications.ListOptedInUsersRequest";
                encode(message: ListOptedInUsersRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListOptedInUsersRequest;
                fromJSON(object: any): ListOptedInUsersRequest;
                toJSON(message: ListOptedInUsersRequest): unknown;
                create(base?: {
                    limit?: number | undefined | undefined;
                    after?: string | undefined | undefined;
                }): ListOptedInUsersRequest;
                fromPartial(object: {
                    limit?: number | undefined | undefined;
                    after?: string | undefined | undefined;
                }): ListOptedInUsersRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.ListOptedInUsersResponse";
                encode(message: ListOptedInUsersResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ListOptedInUsersResponse;
                fromJSON(object: any): ListOptedInUsersResponse;
                toJSON(message: ListOptedInUsersResponse): unknown;
                create(base?: {
                    userIds?: string[];
                    next?: string | undefined | undefined;
                }): ListOptedInUsersResponse;
                fromPartial(object: {
                    userIds?: string[];
                    next?: string | undefined | undefined;
                }): ListOptedInUsersResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Checks if a specific user has opted in to receive notifications. */
        readonly isOptedIn: {
            readonly name: "IsOptedIn";
            readonly requestType: {
                $type: "devvit.plugin.notifications.IsOptedInRequest";
                encode(message: IsOptedInRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): IsOptedInRequest;
                fromJSON(object: any): IsOptedInRequest;
                toJSON(message: IsOptedInRequest): unknown;
                create(base?: {
                    userId?: string;
                }): IsOptedInRequest;
                fromPartial(object: {
                    userId?: string;
                }): IsOptedInRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.IsOptedInResponse";
                encode(message: IsOptedInResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): IsOptedInResponse;
                fromJSON(object: any): IsOptedInResponse;
                toJSON(message: IsOptedInResponse): unknown;
                create(base?: {
                    optedIn?: boolean;
                }): IsOptedInResponse;
                fromPartial(object: {
                    optedIn?: boolean;
                }): IsOptedInResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /**
         * This method queues a notification for asynchronous delivery. The actual
         * delivery timing and success is not guaranteed by this service.
         */
        readonly enqueue: {
            readonly name: "Enqueue";
            readonly requestType: {
                $type: "devvit.plugin.notifications.EnqueueRequest";
                encode(message: EnqueueRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): EnqueueRequest;
                fromJSON(object: any): EnqueueRequest;
                toJSON(message: EnqueueRequest): unknown;
                create(base?: {
                    title?: string;
                    body?: string;
                    recipients?: {
                        userId?: string;
                        comment?: string | undefined | undefined;
                        post?: string | undefined | undefined;
                        data?: {
                            [x: string]: any;
                        } | undefined;
                    }[];
                }): EnqueueRequest;
                fromPartial(object: {
                    title?: string;
                    body?: string;
                    recipients?: {
                        userId?: string;
                        comment?: string | undefined | undefined;
                        post?: string | undefined | undefined;
                        data?: {
                            [x: string]: any;
                        } | undefined;
                    }[];
                }): EnqueueRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.EnqueueResponse";
                encode(message: EnqueueResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): EnqueueResponse;
                fromJSON(object: any): EnqueueResponse;
                toJSON(message: EnqueueResponse): unknown;
                create(base?: {
                    successCount?: number;
                    failureCount?: number;
                    errors?: {
                        userId?: string;
                        message?: string;
                    }[];
                    timestamp?: number;
                }): EnqueueResponse;
                fromPartial(object: {
                    successCount?: number;
                    failureCount?: number;
                    errors?: {
                        userId?: string;
                        message?: string;
                    }[];
                    timestamp?: number;
                }): EnqueueResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Show a badge in the games drawer for a given app, linking to a given post */
        readonly showGamesDrawerBadge: {
            readonly name: "ShowGamesDrawerBadge";
            readonly requestType: {
                $type: "devvit.plugin.notifications.ShowGamesDrawerBadgeRequest";
                encode(message: ShowGamesDrawerBadgeRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ShowGamesDrawerBadgeRequest;
                fromJSON(object: any): ShowGamesDrawerBadgeRequest;
                toJSON(message: ShowGamesDrawerBadgeRequest): unknown;
                create(base?: {
                    post?: string;
                    expiresIn?: {
                        seconds?: number;
                        nanos?: number;
                    } | undefined;
                    expiresAt?: Date | undefined;
                }): ShowGamesDrawerBadgeRequest;
                fromPartial(object: {
                    post?: string;
                    expiresIn?: {
                        seconds?: number;
                        nanos?: number;
                    } | undefined;
                    expiresAt?: Date | undefined;
                }): ShowGamesDrawerBadgeRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.ShowGamesDrawerBadgeResponse";
                encode(message: ShowGamesDrawerBadgeResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): ShowGamesDrawerBadgeResponse;
                fromJSON(object: any): ShowGamesDrawerBadgeResponse;
                toJSON(message: ShowGamesDrawerBadgeResponse): unknown;
                create(base?: {
                    success?: boolean;
                    message?: string | undefined | undefined;
                }): ShowGamesDrawerBadgeResponse;
                fromPartial(object: {
                    success?: boolean;
                    message?: string | undefined | undefined;
                }): ShowGamesDrawerBadgeResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Dismiss all active games drawer badges */
        readonly dismissGamesDrawerBadge: {
            readonly name: "DismissGamesDrawerBadge";
            readonly requestType: {
                $type: "devvit.plugin.notifications.DismissGamesDrawerBadgeRequest";
                encode(_: DismissGamesDrawerBadgeRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): DismissGamesDrawerBadgeRequest;
                fromJSON(_: any): DismissGamesDrawerBadgeRequest;
                toJSON(_: DismissGamesDrawerBadgeRequest): unknown;
                create(base?: {}): DismissGamesDrawerBadgeRequest;
                fromPartial(_: {}): DismissGamesDrawerBadgeRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.DismissGamesDrawerBadgeResponse";
                encode(message: DismissGamesDrawerBadgeResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): DismissGamesDrawerBadgeResponse;
                fromJSON(object: any): DismissGamesDrawerBadgeResponse;
                toJSON(message: DismissGamesDrawerBadgeResponse): unknown;
                create(base?: {
                    success?: boolean;
                }): DismissGamesDrawerBadgeResponse;
                fromPartial(object: {
                    success?: boolean;
                }): DismissGamesDrawerBadgeResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
        /** Get the status of active games drawer badges for an app */
        readonly getGamesDrawerBadgeStatus: {
            readonly name: "GetGamesDrawerBadgeStatus";
            readonly requestType: {
                $type: "devvit.plugin.notifications.GetGamesDrawerBadgeStatusRequest";
                encode(_: GetGamesDrawerBadgeStatusRequest, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetGamesDrawerBadgeStatusRequest;
                fromJSON(_: any): GetGamesDrawerBadgeStatusRequest;
                toJSON(_: GetGamesDrawerBadgeStatusRequest): unknown;
                create(base?: {}): GetGamesDrawerBadgeStatusRequest;
                fromPartial(_: {}): GetGamesDrawerBadgeStatusRequest;
            };
            readonly requestStream: false;
            readonly responseType: {
                $type: "devvit.plugin.notifications.GetGamesDrawerBadgeStatusResponse";
                encode(message: GetGamesDrawerBadgeStatusResponse, writer?: _m0.Writer): _m0.Writer;
                decode(input: _m0.Reader | Uint8Array, length?: number): GetGamesDrawerBadgeStatusResponse;
                fromJSON(object: any): GetGamesDrawerBadgeStatusResponse;
                toJSON(message: GetGamesDrawerBadgeStatusResponse): unknown;
                create(base?: {
                    hasActiveBadge?: boolean;
                    expiresAt?: Date | undefined;
                }): GetGamesDrawerBadgeStatusResponse;
                fromPartial(object: {
                    hasActiveBadge?: boolean;
                    expiresAt?: Date | undefined;
                }): GetGamesDrawerBadgeStatusResponse;
            };
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
interface Rpc {
    request(service: string, method: string, data: Uint8Array, metadata?: Metadata): Promise<Uint8Array>;
}
export {};
//# sourceMappingURL=notifications_svc.d.ts.map