import { Connection, Keypair, PublicKey } from '@solana/web3.js';
import { KaminoMarket } from '../classes';
import { UserMetadata } from '../lib';
import Decimal from 'decimal.js';
/**
 * Initialize all referrer token states for a given referrer
 * @param referrer
 * @param kaminoMarket
 */
export declare const initAllReferrerTokenStates: ({ referrer, kaminoMarket, }: {
    referrer: Keypair;
    kaminoMarket: KaminoMarket;
}) => Promise<string>;
/**
 * Initialize referrer state and short url
 * @param connection
 * @param referrer
 * @param shortUrl
 */
export declare const createReferrerStateAndShortUrl: ({ connection, referrer, shortUrl, programId, }: {
    connection: Connection;
    referrer: Keypair;
    shortUrl: string;
    programId?: PublicKey;
}) => Promise<string>;
/**
 * Initialize referrer state and short url
 * @param connection
 * @param referrer
 * @param newShortUrl
 */
export declare const updateReferrerStateAndShortUrl: ({ connection, referrer, newShortUrl, programId, }: {
    connection: Connection;
    referrer: Keypair;
    newShortUrl: string;
    programId?: PublicKey;
}) => Promise<string>;
/**
 * Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)
 * @param connection
 * @param shortUrl
 * @param programId
 */
export declare function isShortUrlAvailable(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<boolean>;
/**
 * Get referrer short URL address and shortUrl
 * @param connection
 * @param referrer
 * @param programId
 */
export declare function getReferrerShortUrl(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<[PublicKey | null, string | null]>;
/**
 * Get referrer for a given Short URL
 * @param connection
 * @param shortUrl
 * @param programId
 */
export declare function getReferrerForShortUrl(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<PublicKey>;
/**
 * Get referrer all UserMetadata user accounts linked to a given referrer
 * @param connection
 * @param referrer
 * @param programId
 */
export declare function getUserMetadatasByReferrer(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<UserMetadata[]>;
/**
 * Get referrer all UserMetadata user accounts
 * @param connection
 * @param referrer
 * @param programId
 */
export declare function getAllUserMetadatas(connection: Connection, programId?: PublicKey): Promise<UserMetadata[]>;
/**
 * Get referrer all UserMetadata user accounts linked to a given referrer
 * @param connection
 * @param referrer
 * @param programId
 */
export declare function getTotalUsersReferred(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<number>;
export type ReferralRank = {
    referrer: PublicKey;
    totalUsersReferred: number;
    totalEarningsUsd: Decimal;
};
/**
 * Get ReferralRank array of all referrers ordered by how much they've earned in USD
 * @param connection
 * @param kaminoMarket
 */
export declare function getReferralsRanking(connection: Connection, kaminoMarket: KaminoMarket): Promise<ReferralRank[]>;
/**
 * Get ReferralRank array of all referrers ordered by how much they've earned in USD
 * @param connection
 * @param user
 * @param kaminoMarket
 */
export declare function getUserReferralRanking(connection: Connection, user: PublicKey, kaminoMarket: KaminoMarket): Promise<number | undefined>;
//# sourceMappingURL=operations.d.ts.map