import type { ArkmeDirectMessageAdmission } from '../direct-message-admission.js'; import type { ArkmeSourceItem, ArkmeUserBanRecord, ArkmeUserBanSnapshot, ArkmeUserProfileSnapshot } from '../types.js'; import { ResourceStore } from './resource-store.js'; export interface ChatActionBinding { account: string; source: Pick; } export interface IdentityBinding { account: string; userId: number; } export declare const chatActionKey: (binding: ChatActionBinding) => string; /** Business ports retain their separate authorities: Auth, Chat, and Backend. */ export interface PrivateChatActionsPort { identity(binding: IdentityBinding, signal: AbortSignal): Promise; eligibility(binding: ChatActionBinding, signal: AbortSignal): Promise<{ allowed: boolean; }>; admission(binding: ChatActionBinding, signal: AbortSignal): Promise; setRefused(binding: ChatActionBinding, refused: boolean, revision: number, signal: AbortSignal): Promise; banStatus(binding: ChatActionBinding, signal: AbortSignal): Promise; setBanned(binding: ChatActionBinding, banned: boolean, signal: AbortSignal): Promise; } /** A read-back cannot prove all side effects of a submitted command completed. Keep its explicit retry intent. */ export declare class UnconfirmedBanError extends Error { readonly banned: boolean; constructor(banned: boolean, cause: unknown); } export declare function banAuthorizationRejected(error: unknown): boolean; export declare class PrivateChatActionsStore { private readonly port; account: string | undefined; readonly identity: ResourceStore; readonly eligibility: ResourceStore<{ allowed: boolean; }, ChatActionBinding>; readonly admission: ResourceStore; readonly ban: ResourceStore; constructor(port: PrivateChatActionsPort); private read; activateAccount(account: string | undefined): void; reset(): void; canManage(binding: ChatActionBinding, identity: IdentityBinding): boolean; setRefused(binding: ChatActionBinding, refused: boolean, confirm: () => boolean, active: () => boolean): Promise; setBanned(binding: ChatActionBinding, identity: IdentityBinding, banned: boolean, confirm: (name: string, banned: boolean) => boolean, active: () => boolean): Promise; } export declare const privateChatActions: PrivateChatActionsStore; //# sourceMappingURL=private-chat-actions-store.d.ts.map