import type { Filter, ResourcePage as Page, Params } from '../types';
import type { AddSharegroupImagesPayload, AddSharegroupMemberPayload, CreateSharegroupPayload, GenerateSharegroupTokenPayload, Image, Sharegroup, SharegroupMember, SharegroupToken, UpdateSharegroupImagePayload, UpdateSharegroupMemberPayload, UpdateSharegroupPayload } from './types';
/**
 * Create a Image Sharegroup.
 *
 * @param data { createSharegroupPayload } the sharegroup details
 */
export declare const createSharegroup: (data: CreateSharegroupPayload) => Promise<Sharegroup>;
/**
 * Add Images to the Sharegroup
 *
 * @param sharegroupId { string } ID of the sharegroup to add images
 * @param data { AddSharegroupImagesPayload } the image details
 */
export declare const addImagesToSharegroup: (sharegroupId: number, data: AddSharegroupImagesPayload) => Promise<Sharegroup>;
/**
 *  Add Member to the Sharegroup
 *
 * @param sharegroupId {string} ID of the Sharegroup to add member
 * @param data {AddSharegroupMemberPayload} the Member details
 */
export declare const addMembersToSharegroup: (sharegroupId: number, data: AddSharegroupMemberPayload) => Promise<Sharegroup>;
/**
 * Generate user token for the Sharegroup
 *
 * @param data {GenerateSharegroupTokenPayload} the token details
 */
export declare const generateSharegroupToken: (data: GenerateSharegroupTokenPayload) => Promise<SharegroupToken>;
/**
 * Returns a paginated list of Sharegroups
 */
export declare const getSharegroups: (params?: Params, filters?: Filter) => Promise<Page<Sharegroup>>;
/**
 * Lists all the sharegroups a given private image is present in.
 *
 * @param imageId { string } ID of the Image to look up.
 */
export declare const getSharegroupsFromImage: (imageId: string, params?: Params, filters?: Filter) => Promise<Page<Sharegroup>>;
/**
 * Get information about a single Sharegroup
 *
 * @param sharegroupId {string} ID of the Sharegroup to look up
 */
export declare const getSharegroup: (sharegroupId: string) => Promise<Sharegroup>;
/**
 * Get details of the Sharegroup the token has been accepted into
 *
 * @param token_uuid {string} Token UUID of the user
 */
export declare const getSharegroupFromToken: (token_uuid: string) => void;
/**
 * Get a paginated list of Images present in a Sharegroup
 *
 * @param sharegroupId {string} ID of the Sharegroup to look up
 */
export declare const getSharegroupImages: (sharegroupId: string, params?: Params, filters?: Filter) => Promise<Page<Image>>;
/**
 * Get a paginated list of Sharegroup Images the token has been accepted into
 *
 * @param token_uuid {string} Token UUID of the user
 */
export declare const getSharegroupImagesFromToken: (token_uuid: string, params?: Params, filters?: Filter) => void;
/**
 * Get a paginated list of members part of the Sharegroup
 *
 * @param sharegroupId {string} ID of the Sharegroup to look up
 */
export declare const getSharegroupMembers: (sharegroupId: string, params?: Params, filters?: Filter) => void;
/**
 * Get member details of a user from the Sharegroup
 *
 * @param sharegroupId {string} ID of the Sharegroup to look up
 * @param token_uuid {string} Token UUID of the user to look up
 */
export declare const getSharegroupMember: (sharegroupId: string, token_uuid: string) => void;
/**
 * Returns a paginated list of tokens created by the user
 */
export declare const getUserSharegroupTokens: (params?: Params, filters?: Filter) => void;
/**
 * Get details about a specific token created by the user
 *
 * @param token_uuid Token UUID of the user to look up
 */
export declare const getUserSharegroupToken: (token_uuid: string) => void;
/**
 * Update a Sharegroup.
 *
 * @param sharegroupId {string} ID of the Sharegroup to update
 * @param data { updateSharegroupPayload } the sharegroup details
 */
export declare const updateSharegroup: (sharegroupId: string, data: UpdateSharegroupPayload) => Promise<Sharegroup>;
/**
 * Update an Image in a Sharegroup.
 *
 * @param sharegroupId {string} ID of the Sharegroup the image belongs to
 * @param imageId {string} ID of the Image to update
 * @param data { UpdateSharegroupImagePayload } the updated image details
 */
interface UpdateSharegroupImage {
    data: UpdateSharegroupImagePayload;
    imageId: string;
    sharegroupId: string;
}
export declare const updateSharegroupImage: ({ sharegroupId, imageId, data, }: UpdateSharegroupImage) => Promise<Image>;
/**
 * Update a Sharegroup member's label
 *
 * @param token_uuid {string} token UUID of the user
 * @param data {UpdateSharegroupMemberPayload} the updated label
 */
interface UpdateSharegroupMember {
    data: UpdateSharegroupMemberPayload;
    sharegroupId: string;
    token_uuid: string;
}
export declare const updateSharegroupMember: ({ sharegroupId, token_uuid, data, }: UpdateSharegroupMember) => Promise<SharegroupMember>;
/**
 * Update a user token's label
 *
 * @param token_uuid {string} token UUID of the user
 * @param data {UpdateSharegroupMemberPayload} the updated label
 */
export declare const updateSharegroupToken: (token_uuid: string, data: UpdateSharegroupMemberPayload) => Promise<SharegroupToken>;
/**
 * Delete a sharegroup
 *
 * @param sharegroupId {string} ID of the sharegroup to delete
 */
export declare const deleteSharegroup: (sharegroupId: string) => Promise<{}>;
/**
 * Delete a sharegroup Image
 *
 * @param sharegroupId {string} ID of the sharegroup to delete
 * @param imageId {string} ID of the image to delete
 */
export declare const deleteSharegroupImage: (sharegroupId: string, imageId: string) => Promise<{}>;
/**
 * Delete a sharegroup Member
 *
 * @param token_uuid {string} Token UUID of the member to delete
 */
export declare const deleteSharegroupMember: (sharegroupId: string, token_uuid: string) => Promise<{}>;
/**
 * Delete a user token
 *
 * @param token_uuid {string} Token UUID of the user to delete
 */
export declare const deleteSharegroupToken: (token_uuid: string) => Promise<{}>;
export {};
//# sourceMappingURL=sharegroup.d.ts.map