UNPKG

@wasserstoff/tribes-sdk

Version:

SDK for integrating with Tribes by Astrix platform on any EVM compatible chain

294 lines (293 loc) 4.67 kB
/** * 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; }