import { NosanaNetwork } from '@nosana/types';
import { NosanaApiClient } from '@nosana/api';
import { NosanaIpfsClient } from '@nosana/ipfs';
import { type NosanaAuthorization } from '@nosana/authorization';
import { Logger } from './logger/Logger.js';
import { ClientConfig, PartialClientConfig } from './config/index.js';
import { type JobsProgram } from './services/programs/jobs/index.js';
import { type StakeProgram } from './services/programs/stake/index.js';
import { type MerkleDistributorProgram } from './services/programs/merkleDistributor/index.js';
import { type SolanaService } from './services/solana/index.js';
import { type TokenService } from './services/token/index.js';
import type { Wallet } from './types.js';
/**
 * The Nosana client interface. Contains all the services and programs
 * needed to interact with the Nosana network.
 * @group @nosana/kit
 */
export interface NosanaClient {
    readonly config: ClientConfig;
    readonly jobs: JobsProgram;
    readonly stake: StakeProgram;
    readonly merkleDistributor: MerkleDistributorProgram;
    readonly solana: SolanaService;
    readonly nos: TokenService;
    readonly api: NosanaApiClient;
    readonly ipfs: NosanaIpfsClient;
    readonly authorization: NosanaAuthorization;
    readonly logger: Logger;
    /**
     * The wallet. Must be a Wallet (supports both message and transaction signing).
     * Set this property directly to configure the wallet.
     *
     * @example
     * ```ts
     * import { createNosanaClient, NosanaNetwork } from '@nosana/kit';
     *
     * const client = createNosanaClient(NosanaNetwork.MAINNET);
     * client.wallet = myWallet;
     * ```
     */
    wallet: Wallet | undefined;
}
export declare function createNosanaClient(network?: NosanaNetwork, customConfig?: PartialClientConfig): NosanaClient;
//# sourceMappingURL=NosanaClient.d.ts.map