import { type FromSchema } from 'json-schema-to-ts';
import { type IterablePromise } from '../client/method.js';
import { Resource } from '../client/resource.js';
import { type RequestOptions } from '../client/types.js';
import * as schemas from '../schemas/subscriptions.js';
type CreateSubscriptionsResponse = FromSchema<typeof schemas.CreateSubscriptionsResponseSchema>;
type CreateSubscriptionsPayload = FromSchema<typeof schemas.CreateSubscriptionsPayloadSchema>;
type UnsubscribeSubscriptionsResponse = FromSchema<typeof schemas.UnsubscribeSubscriptionsResponseSchema>;
type UnsubscribeSubscriptionsPayload = FromSchema<typeof schemas.UnsubscribeSubscriptionsPayloadSchema>;
type ListSubscriptionsResponse = FromSchema<typeof schemas.ListSubscriptionsResponseSchema>;
type GetSubscriptionsResponse = FromSchema<typeof schemas.GetSubscriptionsResponseSchema>;
type DeleteSubscriptionsPayload = FromSchema<typeof schemas.DeleteSubscriptionsPayloadSchema>;
export declare class Subscriptions extends Resource {
    path: string;
    entity: string;
    /**
     * Set a user's subscription status to subscribed for a particular topic (and
     * optional categories). If the user previously unsubscribed, the user will be
     * resubscribed.
     *
     * @param data
     * @param options - override client request options.
     * @returns
     **/
    create(data: CreateSubscriptionsPayload, options?: RequestOptions): Promise<CreateSubscriptionsResponse>;
    /**
     * Unusbscribe a user from a particular topic (and optional categories).
     *
     * @param topic - The topic for which we'd like to filter topic subscriptions.
     * @param data
     * @param options - override client request options.
     * @returns
     **/
    unsubscribe(topic: string, data: UnsubscribeSubscriptionsPayload, options?: RequestOptions): Promise<UnsubscribeSubscriptionsResponse>;
    /**
     * Fetch a user's topic subscriptions.
     *
     * @param options - override client request options.
     * @returns
     **/
    list(options?: RequestOptions): IterablePromise<ListSubscriptionsResponse>;
    /**
     * Show a user's subscription status for a particular topic and categories.
     *
     * @param topic - The topic for which we'd like to filter topic subscriptions.
     * @param options - override client request options.
     * @returns
     **/
    get(topic: string, options?: RequestOptions): Promise<GetSubscriptionsResponse>;
    /**
     * Delete topic subscription(s)
     *
     * @param topic - The topic for which we'd like to filter topic subscriptions.
     * @param options - override client request options.
     **/
    delete(topic: string, options?: RequestOptions): Promise<void>;
    /**
     * Delete topic subscription(s)
     *
     * @param topic - The topic for which we'd like to filter topic subscriptions.
     * @param data
     * @param options - override client request options.
     **/
    delete(topic: string, data: DeleteSubscriptionsPayload, options?: RequestOptions): Promise<void>;
}
export {};
