export interface APIDiscordResource {
    name: string;
    discordId: string;
}
export interface APIUser {
    authId: string;
    discordId: string;
    email: string;
    name: string;
    team?: string;
    roles: APIDiscordResource[];
}
export interface APITeam {
    authId: string;
    name: string;
    creator: string;
    teamNumber: number;
}
export interface RoleOptions {
    method: 'add' | 'set' | 'remove';
    roles: string[];
}
interface AccountSyncResponse {
    message: string;
}
interface AccountLinkResponse {
    message: string;
    url: string;
}
interface ModifyRolesResponse {
    user: {
        discordId: string;
        authId: string;
        roles: APIDiscordResource[];
    };
}
export declare function getUsers(): Promise<APIUser[]>;
export declare function getUser(discordId: string): Promise<APIUser>;
export declare function modifyUserRoles(discordId: string, options: RoleOptions): Promise<ModifyRolesResponse>;
export declare function getTeams(): Promise<APITeam[]>;
export declare function getTeam(authId: string): Promise<APITeam>;
export declare function getDiscordResource(name: string): Promise<string>;
export declare function createVerificationHmac(authId: string, hmacKey: string): string;
export declare function linkAccount(authId: string, code: string, state: string): Promise<AccountLinkResponse>;
export declare function syncAccount(discordId: string): Promise<AccountSyncResponse>;
export {};
