import { BaseController, type ControllerStateChangeEvent, type ControllerGetStateAction, type RestrictedMessenger } from "@metamask/base-controller"; import type { AuthenticationController } from "@metamask/profile-sync-controller"; import { controllerName } from "./constants.cjs"; import type { ISubscriptionService, Subscription } from "./types.cjs"; export type SubscriptionControllerState = { subscriptions: Subscription[]; }; type CreateActionsObj = { [K in Controller]: { type: `${typeof controllerName}:${K}`; handler: SubscriptionController[K]; }; }; type ActionsObj = CreateActionsObj<'getSubscriptions' | 'cancelSubscription'>; export type SubscriptionControllerGetStateAction = ControllerGetStateAction; export type SubscriptionControllerActions = ActionsObj[keyof ActionsObj] | SubscriptionControllerGetStateAction; export type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerToken; export type SubscriptionControllerStateChangeEvent = ControllerStateChangeEvent; export type SubscriptionControllerEvents = SubscriptionControllerStateChangeEvent; export type AllowedEvents = AuthenticationController.AuthenticationControllerStateChangeEvent; export type SubscriptionControllerMessenger = RestrictedMessenger; /** * Subscription Controller Options. */ export type SubscriptionControllerOptions = { messenger: SubscriptionControllerMessenger; /** * Initial state to set on this controller. */ state?: Partial; /** * Subscription service to use for the subscription controller. */ subscriptionService: ISubscriptionService; }; /** * Get the default state for the Subscription Controller. * * @returns The default state for the Subscription Controller. */ export declare function getDefaultSubscriptionControllerState(): SubscriptionControllerState; export declare class SubscriptionController extends BaseController { #private; /** * Creates a new SubscriptionController instance. * * @param options - The options for the SubscriptionController. * @param options.messenger - A restricted messenger. * @param options.state - Initial state to set on this controller. * @param options.subscriptionService - The subscription service for communicating with subscription server. */ constructor({ messenger, state, subscriptionService, }: SubscriptionControllerOptions); getSubscriptions(): Promise; cancelSubscription(request: { subscriptionId: string; }): Promise; } export {}; //# sourceMappingURL=SubscriptionController.d.cts.map