import type { Channel, Group, Workspace } from '@doist/twist-sdk'; export declare function isIdRef(ref: string): boolean; export declare function extractId(ref: string): number; export declare function looksLikeRawId(ref: string): boolean; export interface ParsedTwistUrl { workspaceId?: number; channelId?: number; threadId?: number; commentId?: number; conversationId?: number; messageId?: number; } export declare function parseTwistUrl(url: string): ParsedTwistUrl | null; export declare function parseRef(ref: string): { type: 'id'; id: number; } | { type: 'url'; parsed: ParsedTwistUrl; } | { type: 'name'; name: string; }; export declare function resolveWorkspaceRef(ref: string): Promise; export declare function resolveThreadId(ref: string): number; export declare function resolveChannelRef(ref: string, workspaceId: number): Promise; export declare function resolveChannelId(ref: string): number; export declare function resolveCommentId(ref: string): number; export declare function resolveConversationId(ref: string): number; export declare function resolveMessageId(ref: string): number; export type TwistUrlRoute = { entityType: 'message' | 'conversation' | 'comment' | 'thread'; url: string; }; export declare function classifyTwistUrl(url: string): TwistUrlRoute | null; export declare function partitionNotifyIds(ids: number[], groupIds: Set): { userIds: number[]; groupIds: number[]; }; export declare function parseUserIdRefs(refs: string): number[]; export declare function resolveGroupRef(ref: string, workspaceId: number): Promise; export type ChannelMemberRefs = { userIds: number[]; expandedFrom: { groupId: number; groupName: string; userIds: number[]; }[]; }; /** * Resolve a mixed list of user and `group:` references for channel membership. * * Groups are expanded to their current `userIds` at call time. The group itself * is not persistently linked to the channel — callers should surface that * caveat in user-facing help text. * * Returns deduped userIds in input order, with a parallel `expandedFrom` list * recording which groups contributed (and which users each group brought in, * pre-dedup) for reporting purposes. */ export declare function resolveChannelMemberRefs(refs: string[], workspaceId: number): Promise; export declare function resolveUserRefs(refs: string, workspaceId: number): Promise; //# sourceMappingURL=refs.d.ts.map