@wasserstoff/tribes-sdk
Version:
SDK for integrating with Tribes by Astrix platform on any EVM compatible chain
294 lines (293 loc) • 4.67 kB
TypeScript
/**
* Tribe join types
*/
export declare enum JoinType {
PUBLIC = 0,
PRIVATE = 1,
INVITE_ONLY = 2
}
/**
* Member status
*/
export declare enum MemberStatus {
NONE = 0,
ACTIVE = 1,
PENDING = 2,
BANNED = 3
}
/**
* Tribe information
*/
export interface TribeInfo {
/**
* Tribe ID
*/
id: number;
/**
* Tribe name
*/
name: string;
/**
* Admin address
*/
admin: string;
/**
* Metadata JSON string
*/
metadata: string;
/**
* Join type
*/
joinType: JoinType;
/**
* Entry fee in wei
*/
entryFee: bigint;
/**
* Member count
*/
memberCount: number;
/**
* Creation time
*/
createdAt: number;
/**
* Organization address
*/
organization?: string;
/**
* Token address
*/
tokenAddress?: string;
}
/**
* Tribe member information
*/
export interface TribeMemberInfo {
/**
* Member address
*/
address: string;
/**
* Membership status
*/
status: MemberStatus;
/**
* Joining time
*/
joinedAt: number;
/**
* Points balance
*/
points?: number;
/**
* Roles assigned to the member
*/
roles?: string[];
}
/**
* NFT requirement
*/
export interface NFTRequirement {
/**
* NFT contract address
*/
contractAddress: string;
/**
* Minimum token ID (optional)
*/
minTokenId?: number;
/**
* Maximum token ID (optional)
*/
maxTokenId?: number;
}
/**
* Parameters for creating a tribe
*/
export interface CreateTribeParams {
/**
* Tribe name
*/
name: string;
/**
* Tribe metadata (JSON string)
*/
metadata: string;
/**
* Array of admin addresses
*/
admins?: string[];
/**
* Join type
*/
joinType?: JoinType;
/**
* Entry fee in wei
*/
entryFee?: bigint;
/**
* NFT requirements for joining
*/
nftRequirements?: NFTRequirement[];
}
/**
* Parameters for updating a tribe configuration
*/
export interface UpdateTribeConfigParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* Join type
*/
joinType: JoinType;
/**
* Entry fee in wei
*/
entryFee: bigint;
/**
* NFT requirements for joining
*/
nftRequirements?: NFTRequirement[];
}
/**
* Parameters for updating a tribe
*/
export interface UpdateTribeParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* New metadata
*/
newMetadata: string;
/**
* Updated whitelist of addresses
*/
updatedWhitelist?: string[];
}
/**
* Parameters for joining a tribe
*/
export interface JoinTribeParams {
/**
* Tribe ID
*/
tribeId: number;
}
/**
* Parameters for requesting to join a tribe
*/
export interface RequestToJoinTribeParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* Entry fee in wei
*/
entryFee: bigint;
}
/**
* Parameters for joining a tribe with a code
*/
export interface JoinTribeWithCodeParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* Invite code
*/
inviteCode: string;
}
/**
* Parameters for managing a member
*/
export interface ManageMemberParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* Member address
*/
memberAddress: string;
}
/**
* Parameters for creating an invite code
*/
export interface CreateInviteCodeParams {
/**
* Tribe ID
*/
tribeId: number;
/**
* Code string
*/
code: string;
/**
* Maximum number of uses
*/
maxUses: number;
/**
* Expiry time (Unix timestamp)
*/
expiryTime?: number;
}
/**
* Tribe details
*/
export interface TribeDetails {
/**
* Tribe ID
*/
id: number;
/**
* Tribe name
*/
name: string;
/**
* Tribe admin address
*/
admin: string;
/**
* Tribe metadata
*/
metadata: string;
/**
* Join type
*/
joinType: JoinType;
/**
* Entry fee in wei
*/
entryFee: bigint;
/**
* Member count
*/
memberCount: number;
/**
* Creation time
*/
creationTime: number;
/**
* NFT requirements
*/
nftRequirements: NFTRequirement[];
/**
* Organization address that funds the tribe
*/
organization?: string;
/**
* Whether the tribe is active
*/
isActive?: boolean;
/**
* Whether the tribe can be merged
*/
canMerge?: boolean;
}