import { BaseModule } from '../core/BaseModule';
import { ActionType, AwardPointsParams, BatchAwardPointsParams, CreateTribeTokenParams, DeductPointsParams, ExchangeTokensParams, RecordActionParams, SetActionPointsParams, SetExchangeRateParams, SetTribeOrganizationParams, TopMemberResponse } from '../types/points';
/**
 * Module for interacting with the point system
 */
export declare class PointsModule extends BaseModule {
    /**
     * Get the point system contract
     * @param useSigner Whether to use the signer
     */
    private getPointSystemContract;
    /**
     * Set the organization that will fund points for a tribe
     * @param params Parameters for setting the tribe organization
     */
    setTribeOrganization(params: SetTribeOrganizationParams): Promise<string>;
    /**
     * Set the exchange rate for a tribe
     * @param params Parameters for setting the exchange rate
     */
    setExchangeRate(params: SetExchangeRateParams): Promise<string>;
    /**
     * Create a new tribe token
     * @param params Parameters for creating a tribe token
     */
    createTribeToken(params: CreateTribeTokenParams): Promise<string>;
    /**
     * Set points for an action type
     * @param params Parameters for setting action points
     */
    setActionPoints(params: SetActionPointsParams): Promise<string>;
    /**
     * Award points to a member
     * @param params Parameters for awarding points
     */
    awardPoints(params: AwardPointsParams): Promise<string>;
    /**
     * Deduct points from a member
     * @param params Parameters for deducting points
     */
    deductPoints(params: DeductPointsParams): Promise<string>;
    /**
     * Record an action performed by a member
     * @param params Parameters for recording an action
     */
    recordAction(params: RecordActionParams): Promise<string>;
    /**
     * Award points to multiple members
     * @param params Parameters for batch awarding points
     */
    batchAwardPoints(params: BatchAwardPointsParams): Promise<string>;
    /**
     * Exchange Astrix tokens for tribe tokens
     * @param params Parameters for exchanging tokens
     */
    exchangeTokens(params: ExchangeTokensParams): Promise<string>;
    /**
     * Get a member's point balance
     * @param tribeId Tribe ID
     * @param member Member address
     */
    getMemberPoints(tribeId: number, member: string): Promise<number>;
    /**
     * Get the points value for an action
     * @param tribeId Tribe ID
     * @param actionType Action type
     */
    getActionPoints(tribeId: number, actionType: ActionType | string): Promise<number>;
    /**
     * Get the count of actions performed by a member
     * @param tribeId Tribe ID
     * @param member Member address
     * @param actionType Action type
     */
    getActionCount(tribeId: number, member: string, actionType: ActionType | string): Promise<number>;
    /**
     * Get the top members by points
     * @param tribeId Tribe ID
     * @param limit Maximum number of members to return
     */
    getTopMembers(tribeId: number, limit?: number): Promise<TopMemberResponse[]>;
    /**
     * Get the tribe token address
     * @param tribeId Tribe ID
     */
    getTribeTokenAddress(tribeId: number): Promise<string>;
    /**
     * Get the tribe organization address
     * @param tribeId Tribe ID
     */
    getTribeOrganization(tribeId: number): Promise<string>;
    /**
     * Get the exchange rate for a tribe
     * @param tribeId Tribe ID
     */
    getExchangeRate(tribeId: number): Promise<number>;
}
