import type * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
import type { KeetaAnchorMetadataServerConfig } from '../../lib/anchor-metadata-server.js';
import type { KeetaNotificationAnchorRegisterTargetClientRequest, KeetaNotificationAnchorListTargetsClientRequest, NotificationTargetWithIDResponse, KeetaNotificationAnchorDeleteTargetClientRequest, KeetaNotificationAnchorCreateSubscriptionClientRequest, KeetaNotificationAnchorDeleteSubscriptionClientRequest, KeetaNotificationAnchorListSubscriptionsClientRequest, SubscriptionDetails, NotificationSubscriptionType, SupportedChannelConfigurationMetadata } from './common.js';
import type { ServiceMetadata } from '../../lib/resolver.js';
import { KeetaAnchorMetadataServer } from '../../lib/anchor-metadata-server.js';
export interface KeetaAnchorNotificationServerConfig extends KeetaAnchorMetadataServerConfig {
    homepage?: string | (() => Promise<string> | string);
    notification: {
        registerTarget?: (args: Required<KeetaNotificationAnchorRegisterTargetClientRequest>) => Promise<{
            id: string;
        }>;
        listTargets?: (args: Required<KeetaNotificationAnchorListTargetsClientRequest>) => Promise<{
            targets: NotificationTargetWithIDResponse[];
        }>;
        deleteTarget?: (args: Required<KeetaNotificationAnchorDeleteTargetClientRequest>) => Promise<{
            ok: boolean;
        }>;
        createSubscription?: (args: Required<KeetaNotificationAnchorCreateSubscriptionClientRequest>) => Promise<{
            id: string;
        }>;
        listSubscriptions?: (args: Required<KeetaNotificationAnchorListSubscriptionsClientRequest>) => Promise<{
            subscriptions: SubscriptionDetails[];
        }>;
        deleteSubscription?: (args: Required<KeetaNotificationAnchorDeleteSubscriptionClientRequest>) => Promise<{
            ok: boolean;
        }>;
        supportedChannels?: SupportedChannelConfigurationMetadata;
        supportedSubscriptions?: NotificationSubscriptionType[];
    };
    routes?: KeetaAnchorHTTPServer.Routes;
}
export declare class KeetaNetNotificationAnchorHTTPServer extends KeetaAnchorMetadataServer<NonNullable<ServiceMetadata['services']['notification']>[string], KeetaAnchorNotificationServerConfig> {
    readonly homepage: NonNullable<KeetaAnchorNotificationServerConfig['homepage']>;
    readonly notification: KeetaAnchorNotificationServerConfig['notification'];
    readonly routes: NonNullable<KeetaAnchorNotificationServerConfig['routes']>;
    constructor(config: KeetaAnchorNotificationServerConfig);
    protected initRoutes(config: KeetaAnchorNotificationServerConfig): Promise<KeetaAnchorHTTPServer.Routes>;
    protected buildServiceMetadata(): Promise<NonNullable<ServiceMetadata['services']['notification']>[string]>;
}
//# sourceMappingURL=server.d.ts.map