@wasserstoff/tribes-sdk
Version:
SDK for integrating with Tribes by Astrix platform on any EVM compatible chain
146 lines (145 loc) • 4.99 kB
TypeScript
import { BaseModule } from '../core/BaseModule';
import { CreateTribeParams, UpdateTribeParams, UpdateTribeConfigParams, JoinTribeParams, RequestToJoinTribeParams, JoinTribeWithCodeParams, ManageMemberParams, CreateInviteCodeParams, TribeDetails, MemberStatus } from '../types/tribes';
/**
* Module for managing tribes and tribe membership
*/
export declare class TribesModule extends BaseModule {
/**
* Get the TribeController contract
* @param useSigner Whether to use the signer
*/
private getTribeControllerContract;
/**
* Create a new tribe
* @param params Tribe creation parameters
* @returns Tribe ID of the newly created tribe
*/
createTribe(params: CreateTribeParams): Promise<number>;
/**
* Update tribe configuration
* @param params Tribe configuration update parameters
* @returns Transaction hash
*/
updateTribeConfig(params: UpdateTribeConfigParams): Promise<string>;
/**
* Update tribe metadata and whitelist
* @param params Tribe update parameters
* @returns Transaction hash
*/
updateTribe(params: UpdateTribeParams): Promise<string>;
/**
* Join a tribe
* @param params Join tribe parameters
* @returns Transaction hash
*/
joinTribe(params: JoinTribeParams): Promise<string>;
/**
* Request to join a private tribe
* @param params Request to join parameters
* @returns Transaction hash
*/
requestToJoinTribe(params: RequestToJoinTribeParams): Promise<string>;
/**
* Join a tribe using an invite code
* @param params Join with code parameters
* @returns Transaction hash
*/
joinTribeWithCode(params: JoinTribeWithCodeParams): Promise<string>;
/**
* Approve a member's request to join
* @param params Manage member parameters
* @returns Transaction hash
*/
approveMember(params: ManageMemberParams): Promise<string>;
/**
* Remove a member from a tribe
* @param params Manage member parameters
* @returns Transaction hash
*/
removeMember(params: ManageMemberParams): Promise<string>;
/**
* Ban a member from a tribe
* @param params Manage member parameters
* @returns Transaction hash
*/
banMember(params: ManageMemberParams): Promise<string>;
/**
* Create an invite code for a tribe
* @param params Create invite code parameters
* @returns Transaction hash
*/
createInviteCode(params: CreateInviteCodeParams): Promise<string>;
/**
* Get tribe details
* @param tribeId Tribe ID
* @returns Tribe details object
*/
getTribeDetails(tribeId: number): Promise<TribeDetails>;
/**
* Check if an address is a member of a tribe
* @param tribeId Tribe ID
* @param address Address to check
* @returns Member status
*/
getMemberStatus(tribeId: number, address: string): Promise<MemberStatus>;
/**
* Get all members of a tribe
* @param tribeId Tribe ID
* @returns Array of member addresses
*/
getMembers(tribeId: number): Promise<string[]>;
/**
* Get all tribes a user is a member of
* @param address User address
* @returns Array of tribe IDs
*/
getUserTribes(address: string): Promise<number[]>;
/**
* Check if an invite code is valid
* @param tribeId Tribe ID
* @param code Invite code
* @returns True if the code is valid
*/
isInviteCodeValid(tribeId: number, code: string): Promise<boolean>;
/**
* Get all tribes with pagination
* @param offset The starting index for pagination
* @param limit The maximum number of tribes to return
* @returns Object containing tribe IDs and total count
*/
getAllTribes(offset?: number, limit?: number): Promise<{
tribeIds: number[];
total: number;
}>;
/**
* Check if a tribe exists
* @param tribeId Tribe ID to check
* @returns True if the tribe exists
*/
tribeExists(tribeId: number): Promise<boolean>;
/**
* Get the total number of tribes
* @returns Total number of tribes
*/
getTribeCount(): Promise<number>;
/**
* Check if a user is an active member of a tribe
* @param tribeId Tribe ID
* @param address User address
* @returns True if the user is an active member
*/
isActiveMember(tribeId: number, address: string): Promise<boolean>;
/**
* Find the first tribe the user is a member of, useful for testing
* @param address User address
* @returns Tribe ID of the first tribe the user is a member of, or 0 if none
*/
findFirstActiveTribe(address: string): Promise<number>;
/**
* Check if a user can post in a tribe
* @param tribeId Tribe ID
* @param address User address
* @returns True if the user can post in the tribe
*/
canPostInTribe(tribeId: number, address: string): Promise<boolean>;
}