import { ChainMethodParams, ClientConfig, SignatureResponse, TransactionResponse } from '../../types';
import { SupportedChain } from '../../types/chains';
import { V2ApiClient } from '../../api/clients/v2';
import { V4ApiClient } from '../../api/clients/v4';
import { V3ApiClient } from '../../api/clients/v3';
import { ChainOperation, OperationResponse, SignatureOperation, TransactionOperation } from '../../types/operations';
/**
 * Base class for NFT services
 */
export declare abstract class BaseNftService<C extends SupportedChain = SupportedChain> {
    protected readonly config: ClientConfig<C>;
    protected readonly v2ApiClient: V2ApiClient;
    protected readonly v3ApiClient: V3ApiClient;
    protected readonly v4ApiClient: V4ApiClient;
    constructor(config: ClientConfig<C>);
    /**
     * Publish a launchpad
     *
     * Only available for Solana. Meant to be called after calling createLaunchpad and creating a launchpad on-chain.
     */
    publishLaunchpad(params: ChainMethodParams<C, 'publishLaunchpad'>): Promise<boolean>;
    /**
     * Get publish launchpad response from API
     */
    protected abstract getPublishLaunchpadResponse(params: ChainMethodParams<C, 'publishLaunchpad'>): Promise<boolean>;
    /**
     * Creates a new launchpad
     */
    createLaunchpad(params: ChainMethodParams<C, 'createLaunchpad'>): Promise<OperationResponse[]>;
    /**
     * Get create launchpad transaction instructions from API
     */
    protected abstract getCreateLaunchpadOperations(params: ChainMethodParams<C, 'createLaunchpad'>): Promise<ChainOperation<C>[]>;
    /**
     * Updates an existing launchpad
     */
    updateLaunchpad(params: ChainMethodParams<C, 'updateLaunchpad'>): Promise<OperationResponse[]>;
    /**
     * Get update launchpad transaction instructions from API
     */
    protected abstract getUpdateLaunchpadOperations(params: ChainMethodParams<C, 'updateLaunchpad'>): Promise<ChainOperation<C>[]>;
    /**
     * Mints an NFT from a launchpad
     */
    mint(params: ChainMethodParams<C, 'mint'>): Promise<OperationResponse[]>;
    /**
     * Get mint transaction instructions from API
     */
    protected abstract getMintOperations(params: ChainMethodParams<C, 'mint'>): Promise<ChainOperation<C>[]>;
    /**
     * Lists an NFT for sale.
     *
     * - Supported on EVM.
     * - Supported on Solana (every NFT type excluding cNFT).
     *
     * @param params - The parameters for the list operation
     * @returns The operation response
     */
    list(params: ChainMethodParams<C, 'list'>): Promise<OperationResponse[]>;
    /**
     * Get list transaction instructions from API
     */
    protected abstract getListOperations(params: ChainMethodParams<C, 'list'>): Promise<ChainOperation<C>[]>;
    /**
     * Cancels an NFT listing
     */
    cancelListing(params: ChainMethodParams<C, 'cancelListing'>): Promise<OperationResponse[]>;
    /**
     * Get cancel listing transaction instructions from API
     */
    protected abstract getCancelListingOperations(params: ChainMethodParams<C, 'cancelListing'>): Promise<ChainOperation<C>[]>;
    /**
     * Takes an item offer on an NFT
     */
    takeItemOffer(params: ChainMethodParams<C, 'takeItemOffer'>): Promise<OperationResponse[]>;
    /**
     * Get take item offer transaction instructions from API
     */
    protected abstract getTakeItemOfferOperations(params: ChainMethodParams<C, 'takeItemOffer'>): Promise<ChainOperation<C>[]>;
    /**
     * Makes an item offer on an NFT
     */
    makeItemOffer(params: ChainMethodParams<C, 'makeItemOffer'>): Promise<OperationResponse[]>;
    /**
     * Get make item offer transaction instructions from API
     */
    protected abstract getMakeItemOfferOperations(params: ChainMethodParams<C, 'makeItemOffer'>): Promise<ChainOperation<C>[]>;
    /**
     * Cancels an item offer
     */
    cancelItemOffer(params: ChainMethodParams<C, 'cancelItemOffer'>): Promise<OperationResponse[]>;
    /**
     * Get cancel item offer transaction instructions from API
     */
    protected abstract getCancelItemOfferOperations(params: ChainMethodParams<C, 'cancelItemOffer'>): Promise<ChainOperation<C>[]>;
    /**
     * Buys an NFT
     */
    buy(params: ChainMethodParams<C, 'buy'>): Promise<OperationResponse[]>;
    /**
     * Get transfer transaction instructions from API
     */
    protected abstract getBuyOperations(params: ChainMethodParams<C, 'buy'>): Promise<ChainOperation<C>[]>;
    /**
     * Transfers an NFT to another wallet
     */
    transfer(params: ChainMethodParams<C, 'transfer'>): Promise<OperationResponse[]>;
    /**
     * Get transfer transaction instructions from API
     */
    protected abstract getTransferOperations(params: ChainMethodParams<C, 'transfer'>): Promise<ChainOperation<C>[]>;
    /**
     * Process a sequence of operations
     */
    protected processOperations(operations: ChainOperation<C>[]): Promise<OperationResponse[]>;
    /**
     * Process a transaction operation
     */
    protected processTransactionOperation(operation: TransactionOperation<C>): Promise<TransactionResponse>;
    /**
     * Process a signature operation
     */
    protected abstract processSignatureOperation(operation: SignatureOperation<C>): Promise<SignatureResponse>;
}
