export interface PaginatedResponse<T> {
    count: number;
    next: string | null;
    previous: string | null;
    results: T[];
}
export interface WatchedGroupListItem {
    id: number;
    name: string;
    platform_key: string;
}
export interface WatchedGroupDetail {
    id: number;
    name: string;
    platform_key: string;
    watcher_count: number;
    watchers: WatcherSummary[] | string[];
    watched_user_count: number;
    watched_users: WatchedUserSummary[] | string[];
}
export interface WatcherSummary {
    id: number;
    username: string;
    email: string;
    events: string | string[];
}
export interface WatchedUserSummary {
    id: number;
    username: string;
    email: string;
}
export interface WatchedGroupListParams {
    limit?: number;
    offset?: number;
    platform_key?: string;
}
export interface WatchedGroupDetailParams {
    platform_key?: string;
    watched_user_limit?: number;
    watcher_limit?: number;
}
export interface WatcherCreatePayload {
    watcher_id: number;
    events: string[];
}
export interface CreateWatchedGroupBody {
    name: string;
    watched_users?: number[];
    watchers?: WatcherCreatePayload[];
    owner_id?: number;
}
export interface UpdateWatchedGroupBody {
    name: string;
}
export interface AddWatchedUserBody {
    user_id: number;
}
export interface UpdateWatcherBody {
    events: string[];
}
export type GetWatchedGroupsArgs = {
    params?: WatchedGroupListParams;
};
export type GetWatchedGroupArgs = {
    id: number;
    params?: WatchedGroupDetailParams;
};
export type CreateWatchedGroupArgs = {
    body: CreateWatchedGroupBody;
    params?: WatchedGroupDetailParams;
};
export type UpdateWatchedGroupArgs = {
    id: number;
    body: UpdateWatchedGroupBody;
    params?: {
        platform_key?: string;
    };
};
export type DeleteWatchedGroupArgs = {
    id: number;
    params?: {
        platform_key?: string;
    };
};
export type GetWatchedUsersArgs = {
    watchedGroupPk: number;
    params?: {
        limit?: number;
        offset?: number;
        platform_key?: string;
    };
};
export type AddWatchedUserArgs = {
    watchedGroupPk: number;
    body: AddWatchedUserBody;
    params?: {
        platform_key?: string;
    };
};
export type RemoveWatchedUserArgs = {
    watchedGroupPk: number;
    id: number;
    params?: {
        platform_key?: string;
    };
};
export type GetWatchersArgs = {
    watchedGroupPk: number;
    params?: {
        limit?: number;
        offset?: number;
        platform_key?: string;
    };
};
export type AddWatcherArgs = {
    watchedGroupPk: number;
    body: WatcherCreatePayload;
    params?: {
        platform_key?: string;
    };
};
export type GetWatcherArgs = {
    watchedGroupPk: number;
    id: number;
    params?: {
        platform_key?: string;
    };
};
export type UpdateWatcherArgs = {
    watchedGroupPk: number;
    id: number;
    body: UpdateWatcherBody;
    params?: {
        platform_key?: string;
    };
};
export type DeleteWatcherArgs = {
    watchedGroupPk: number;
    id: number;
    params?: {
        platform_key?: string;
    };
};
