import type { Channel, Group, WorkspaceUser } from '@doist/twist-sdk'; import type { MutationOptions } from '../../lib/options.js'; export type ChannelMutationOptions = MutationOptions; export type ExpandedGroup = { groupId: number; groupName: string; userIds: number[]; }; export declare function channelUserIds(channel: Channel): number[]; export declare function fetchUsersByIds(workspaceId: number, userIds: number[]): Promise>; export declare function logExpansion(expandedFrom: ExpandedGroup[]): void; export declare function describeExpansion(expandedFrom: ExpandedGroup[]): string | undefined; export declare function groupsFullyInChannel(groups: Group[], channelUserIdSet: Set): Group[]; /** * Shared add/remove mutation flow. Resolves the channel and the requested refs * concurrently, diffs against current membership, then either previews * (`--dry-run`) or applies the mutation and prints / emits JSON. */ export declare function mutateChannelMembership(channelRef: string, refs: string[], action: 'add' | 'remove', options: ChannelMutationOptions): Promise; //# sourceMappingURL=membership-helpers.d.ts.map