import { MarketItemBase, PluginConnectionType, InstallFailureAnalysisQuery, InstallFailureAnalysis, RangeQuery, RangeStats, TopPluginsQuery, TopPlugin, PluginManifest, AdminPluginItem, AdminPluginItemDetail, PluginVersion, PluginVersionLocalization, AdminDeploymentOption, InstallationDetails, SystemDependency, IncompleteI18nPlugin, CategoryListQuery, CategoryItem, PluginItemDetail, InstallReportRequest, InstallReportResponse, CallReportRequest, CallReportResponse } from '@lobehub/market-types';
export * from '@lobehub/market-types';
export { CategoryItem, CategoryListQuery, CategoryListResponse } from '@lobehub/market-types';
import { z } from 'zod';

/**
 * Visibility levels for plugins in the marketplace
 * - public: Visible to all users
 * - private: Visible only to the owner and authorized users
 * - internal: Visible only within the organization
 */
declare const VisibilityEnumSchema: z.ZodEnum<["public", "private", "internal"]>;
/**
 * Publication status options for plugins
 * - published: Publicly available in the marketplace
 * - unpublished: Not publicly visible
 * - archived: Marked as no longer maintained
 * - deprecated: Marked as deprecated, but still available
 */
declare const StatusEnumSchema: z.ZodEnum<["published", "unpublished", "archived", "deprecated"]>;
/**
 * Common query parameters for admin list endpoints
 * These parameters are used for pagination, filtering, and sorting.
 */
interface AdminListQueryParams {
    /** Current page number (1-based) */
    current?: number;
    /** Search keyword for filtering results */
    keyword?: string;
    /** Number of items per page */
    pageSize?: number;
    /** Field to sort results by */
    sortField?: string;
    /** Sort direction */
    sortOrder?: 'ascend' | 'descend';
}
/**
 * Common response format for paginated admin list endpoints
 * This structure provides both the data and pagination information.
 */
interface AdminListResponse<T> {
    /** Current page number (1-based) */
    current: number;
    /** Array of items for the current page */
    data: T[];
    /** Number of items per page */
    pageSize: number;
    /** Total number of items across all pages */
    total: number;
    /** Total number of pages */
    totalPages: number;
}
/**
 * Review status options
 * - pending: Awaiting review
 * - approved: Review approved
 * - rejected: Review rejected
 */
type ReviewStatus = 'pending' | 'approved' | 'rejected';
/**
 * Review status schema for validation
 */
declare const ReviewStatusEnumSchema: z.ZodEnum<["published", "draft", "review", "rejected"]>;
/**
 * Parameters for admin plugin listing
 * Extends the common query parameters with plugin-specific filters.
 */
interface AdminPluginParams {
    /** Filter for featured plugins */
    featured?: boolean;
    /** Maximum number of items to return */
    limit?: number;
    /** Number of items to skip */
    offset?: number;
    /** Sort direction */
    order?: 'asc' | 'desc';
    /** Field to sort by */
    orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';
    /** Filter by owner ID */
    ownerId?: number;
    /** Search query string */
    query?: string;
    /** Filter by plugin status */
    status?: 'published' | 'draft' | 'review' | 'rejected';
    /** Filter by visibility level */
    visibility?: 'public' | 'private' | 'unlisted';
}
/**
 * Parameters for creating a new plugin version
 */
interface PluginVersionCreateParams {
    /** Author or organization name for this version */
    author?: string;
    /** URL to the author's website or profile */
    authorUrl?: string;
    /** Capability flag: whether this plugin provides prompts */
    capabilitiesPrompts?: boolean;
    /** Capability flag: whether this plugin manages resources (MCP) */
    capabilitiesResources?: boolean;
    /** Capability flag: whether this plugin provides tools */
    capabilitiesTools?: boolean;
    /** Category key for the plugin */
    category?: string;
    /** Description of the plugin version */
    description?: string;
    /** Icon URL or emoji for the plugin */
    icon?: string;
    /** Whether this is the latest version */
    isLatest?: boolean;
    /** Whether this version has been validated */
    isValidated?: boolean;
    /** Name of the plugin version */
    name?: string;
    /** Array of prompt definitions */
    prompts?: any[];
    /** README content */
    readme?: string;
    /** Array of resource definitions */
    resources?: any[];
    /** Summary of the plugin version */
    summary?: string;
    /** Array of tags for categorization */
    tags?: string[];
    /** Array of tool definitions */
    tools?: any[];
    /** Semantic version string (e.g., "1.0.0") */
    version: string;
}
/**
 * Parameters for updating an existing plugin version
 */
interface PluginVersionUpdateParams {
    /** Author or organization name for this version */
    author?: string;
    /** URL to the author's website or profile */
    authorUrl?: string;
    /** Capability flag: whether this plugin provides prompts */
    capabilitiesPrompts?: boolean;
    /** Capability flag: whether this plugin manages resources (MCP) */
    capabilitiesResources?: boolean;
    /** Capability flag: whether this plugin provides tools */
    capabilitiesTools?: boolean;
    /** Category key for the plugin */
    category?: string;
    /** Description of the plugin version */
    description?: string;
    /** Icon URL or emoji for the plugin */
    icon?: string;
    /** Whether this version has been validated */
    isValidated?: boolean;
    /** Name of the plugin version */
    name?: string;
    /** Array of prompt definitions */
    prompts?: any[];
    /** README content */
    readme?: string;
    /** Array of resource definitions */
    resources?: any[];
    /** Summary of the plugin version */
    summary?: string;
    /** Array of tags for categorization */
    tags?: string[];
    /** Array of tool definitions */
    tools?: any[];
}
/**
 * Parameters for updating plugin basic metadata (non-version specific)
 */
interface PluginUpdateParams {
    /** Unique identifier for the plugin */
    identifier?: string;
    /** Whether this plugin has been claimed by its original author */
    isClaimed?: boolean;
    /** Whether this plugin is featured */
    isFeatured?: boolean;
    /** Whether this plugin is officially maintained by LobeHub */
    isOfficial?: boolean;
    /** Publication status */
    status?: 'published' | 'draft' | 'review' | 'rejected';
    /** Visibility level */
    visibility?: 'public' | 'private' | 'unlisted';
}
/**
 * Plugin localization data
 */
interface PluginLocalization {
    /** Plugin description in specific locale */
    description: string;
    /** Locale identifier (e.g., 'en-US', 'zh-CN') */
    locale: string;
    /** Plugin name in specific locale */
    name: string;
    /** Summary in specific locale */
    summary?: string;
    /** Plugin tags in specific locale */
    tags?: string[];
}
/**
 * Parameters for importing plugin i18n data
 */
interface PluginI18nImportParams {
    /** Plugin identifier */
    identifier: string;
    /** Array of localizations for this plugin version */
    localizations: PluginLocalization[];
    /** Plugin version */
    version: string;
}
/**
 * Response from plugin i18n import operation
 */
interface PluginI18nImportResponse {
    /** Number of failed localizations */
    failed: number;
    /** Number of successful localizations */
    success: number;
    /** Total number of processed localizations */
    totalLocalizations: number;
}
/**
 * Unclaimed plugin item data structure
 * Represents a plugin that has not been claimed by its author
 */
interface UnclaimedPluginItem {
    /** Plugin ID */
    id: number;
    /** Plugin identifier */
    identifier: string;
}

/**
 * Market Service Discovery Document
 *
 * Defines the structure of the discovery document returned by the API.
 * This document provides information about available endpoints, authentication
 * methods, and other capabilities of the Market API.
 */
interface DiscoveryDocument {
    /** URL to the API documentation */
    api_documentation_url?: string;
    /** Authentication schemes supported by the API */
    authentication?: {
        /** List of supported authentication methods */
        schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;
    };
    /** API issuer identifier (typically the base domain) */
    issuer: string;
    /** Template for constructing manifest endpoint URLs */
    manifest_endpoint_template: string | Record<string, string>;
    /** Version of the market index schema */
    market_index_schema_version: number;
    /** URL to the privacy policy */
    policy_url?: string;
    /** Mapping of resource types to their endpoint paths */
    resource_endpoints: Record<string, string>;
    /** List of resource types available in the marketplace */
    resource_types_supported: string[];
    /** List of response types supported by the API */
    response_types_supported: string[];
    /** List of locales supported for content localization */
    support_locales: string[];
    /** URL to the terms of service */
    terms_of_service_url?: string;
}
/**
 * SDK Configuration Options
 *
 * Options for configuring the behavior of the Market SDK.
 */
interface MarketSDKOptions {
    /**
     * Access Token for server-side authentication.
     * If provided, the SDK will use this token directly instead of fetching one.
     */
    accessToken?: string;
    /**
     * API Key for authentication
     */
    apiKey?: string;
    /**
     * The base URL for the LobeHub Market API
     */
    baseURL?: string;
    /**
     * The client ID for M2M authentication
     */
    clientId?: string;
    /**
     * The client secret for M2M authentication
     */
    clientSecret?: string;
    /**
     * The default locale for the market
     * @default 'en-US'
     */
    defaultLocale?: string;
    /**
     * Base URL for root path
     */
    rootBaseURL?: string;
}
/**
 * Shared token state for SDK instances
 *
 * Used to share authentication tokens between multiple service instances
 * to avoid duplicate token requests and improve performance.
 */
interface SharedTokenState {
    /**
     * The current access token
     */
    accessToken?: string;
    /**
     * Token expiry timestamp (milliseconds since epoch)
     */
    tokenExpiry?: number;
    /**
     * Promise for ongoing token request to prevent concurrent requests
     */
    tokenPromise?: Promise<string>;
}

interface ClientRegistrationRequest {
    /** Client name (required) */
    clientName: string;
    /** Client type (required) */
    clientType: 'desktop' | 'mobile' | 'web' | 'server' | 'docker';
    /** Client version (optional) */
    clientVersion?: string;
    /** Description (optional) */
    description?: string;
    /** Device ID (required) */
    deviceId: string;
    /** Platform (e.g., 'x64', 'arm64') (optional) */
    platform?: string;
    /** OS version (optional) */
    version?: string;
}
interface ClientRegistrationResponse {
    /** Generated client ID */
    client_id: string;
    /** Generated client secret */
    client_secret: string;
    /** Token expiry in seconds (optional) */
    expires_in?: number;
    /** Success message (optional) */
    message?: string;
}
interface ClientRegistrationError {
    /** Error code */
    error: string;
    /** Error description (optional) */
    error_description?: string;
}

/**
 * Plugin item in the marketplace
 * Represents a plugin as displayed in the marketplace listing.
 */
interface PluginItem extends MarketItemBase {
    /** Plugin capabilities */
    capabilities: {
        /** Whether the plugin provides custom prompts */
        prompts: boolean;
        /** Whether the plugin provides resources (assets) */
        resources: boolean;
        /** Whether the plugin provides tools (functions) */
        tools: boolean;
    };
    /** Number of comments on this plugin */
    commentCount?: number;
    /** Connection type strategy for communicating with the plugin */
    connectionType?: PluginConnectionType;
    /** GitHub repository information */
    github?: {
        language?: string;
        license?: string;
        stars?: number;
        url: string;
    };
    /** Number of installations */
    installCount?: number;
    /** Installation method required by the plugin's recommended deployment option */
    installationMethods?: string;
    /** Whether this plugin has been claimed by its original author */
    isClaimed?: boolean;
    /** Whether the plugin is featured */
    isFeatured?: boolean;
    /** Whether this plugin is officially maintained by LobeHub */
    isOfficial?: boolean;
    /** Whether this plugin has been validated */
    isValidated?: boolean;
    /** Number of prompts provided by this plugin */
    promptsCount?: number;
    /** Average rating (typically 1-5 scale) */
    ratingAverage?: number;
    /** Number of ratings received */
    ratingCount?: number;
    /** Number of resources provided by this plugin */
    resourcesCount?: number;
    /** Number of tools provided by this plugin */
    toolsCount?: number;
}
/**
 * Response structure for plugin listing endpoints
 * Contains both the plugin items and pagination/filtering metadata.
 */
interface PluginListResponse {
    /** Available categories for filtering */
    categories: string[];
    /** Current page number (1-based) */
    currentPage: number;
    /** Array of plugin items for the current page */
    items: PluginItem[];
    /** Number of items per page */
    pageSize: number;
    /** Total number of items across all pages */
    totalCount: number;
    /** Total number of pages */
    totalPages: number;
}
/**
 * Query parameters for plugin listing
 * Used to filter, sort, and paginate plugin results.
 */
interface PluginQueryParams {
    /** Filter by category */
    category?: string;
    /** Locale for localized content */
    locale?: string;
    /** Sort direction */
    order?: 'asc' | 'desc';
    /** Page number (1-based) */
    page?: number;
    /** Number of items per page */
    pageSize?: number;
    /** Search query string */
    q?: string;
    /** Field to sort by */
    sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage' | 'ratingCount' | 'isFeatured' | 'isValidated';
    /** Filter by tags (comma-separated) */
    tags?: string;
}

/**
 * Base SDK class
 *
 * Provides shared request handling and authentication functionality that is used
 * by both the Market SDK and Admin SDK. This class handles the common concerns:
 * - API endpoint configuration
 * - Authentication header management
 * - HTTP request handling
 * - Error handling
 * - Query string building
 */
declare class BaseSDK {
    /** Base API URL */
    protected apiBaseUrl: string;
    /** Base URL */
    protected baseUrl: string;
    /** OAuth URL */
    protected oauthBaseUrl: string;
    /** Default locale for requests that require localization */
    protected defaultLocale: string;
    /** HTTP headers to include with all requests */
    protected headers: Record<string, string>;
    private clientId?;
    private clientSecret?;
    private readonly initialAccessToken?;
    private accessToken?;
    private tokenExpiry?;
    private sharedTokenState?;
    /**
     * Creates a new BaseSDK instance
     *
     * @param options - Configuration options for the SDK
     * @param sharedHeaders - Optional shared headers object for reuse across services
     * @param sharedTokenState - Optional shared token state object for reuse across services
     */
    constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>, sharedTokenState?: SharedTokenState);
    /**
     * Sends an HTTP request to the API and handles the response
     *
     * @param url - Request URL path (will be appended to baseUrl)
     * @param options - Fetch API request options
     * @returns Promise resolving to the parsed JSON response
     * @throws Error if the request fails
     */
    protected request<T>(url: string, options?: RequestInit): Promise<T>;
    /**
     * Builds a URL query string from a parameters object
     *
     * @param params - Object containing query parameters
     * @returns Formatted query string (including leading ? if params exist)
     */
    protected buildQueryString(params: Record<string, any>): string;
    /**
     * Sets an authentication token for API requests
     *
     * @param token - API authentication token
     */
    setAuthToken(token: string): void;
    /**
     * Clears the authentication token
     */
    clearAuthToken(): void;
    /**
     * Fetches an M2M access token.
     * This method is designed for server-side use cases where you need to manage the token lifecycle
     * (e.g., storing it in a cookie).
     *
     * @returns A promise that resolves to an object containing the access token and its expiry time.
     */
    fetchM2MToken(): Promise<{
        accessToken: string;
        expiresIn: number;
    }>;
    private createClientAssertion;
    private exchangeToken;
    private exchangeTokenForServer;
    private setM2MAuthToken;
    private fetchNewToken;
}

/**
 * Market Overview Statistics Interface
 * Defines the structure for market overview data
 */
interface MarketOverviewStats {
    devices: {
        count: number;
        prevCount: number;
    };
    installs: {
        count: number;
        prevCount: number;
    };
    period: string;
    pluginCalls: {
        count: number;
        prevCount: number;
    };
    plugins: {
        count: number;
        prevCount: number;
    };
}
/**
 * Period type for analysis queries
 */
type AnalysisPeriod = '1d' | '7d' | '30d' | '1mo' | '3mo' | '1y';
/**
 * Market overview query parameters
 */
interface MarketOverviewQuery {
    /** Analysis period: 1d, 7d, 30d (rolling periods) or 1mo, 3mo, 1y (natural periods) */
    period?: AnalysisPeriod;
}
/**
 * Analysis Management Service
 *
 * Provides administrative functionality for accessing market analysis and statistics.
 * This service handles retrieving various analytics reports including market overview,
 * plugin trends, and installation analytics for administrative dashboards.
 */
declare class AnalysisService extends BaseSDK {
    /**
     * Retrieves market overview statistics
     *
     * Returns comprehensive market statistics including plugin counts,
     * installation metrics, new plugin trends, and rating averages
     * with comparison to previous periods.
     *
     * @param params - Query parameters for the analysis
     * @returns Promise resolving to market overview statistics
     */
    getMarketOverview(params?: MarketOverviewQuery): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for 1 day period
     *
     * Convenience method for getting daily market statistics.
     *
     * @returns Promise resolving to market overview statistics for 1 day
     */
    getDailyOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for 7 days period
     *
     * Convenience method for getting weekly market statistics.
     *
     * @returns Promise resolving to market overview statistics for 7 days
     */
    getWeeklyOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for 30 days period
     *
     * Convenience method for getting monthly market statistics.
     *
     * @returns Promise resolving to market overview statistics for 30 days
     */
    getMonthlyOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for current natural month
     *
     * Convenience method for getting current month vs previous month statistics.
     *
     * @returns Promise resolving to market overview statistics for current month
     */
    getThisMonthOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for current quarter
     *
     * Convenience method for getting current quarter vs previous quarter statistics.
     *
     * @returns Promise resolving to market overview statistics for current quarter
     */
    getQuarterlyOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves market overview statistics for current year
     *
     * Convenience method for getting current year vs previous year statistics.
     *
     * @returns Promise resolving to market overview statistics for current year
     */
    getYearlyOverview(): Promise<MarketOverviewStats>;
    /**
     * Retrieves install failure analysis for plugins within a date range
     *
     * Returns detailed analysis of plugin installation failures including failure counts,
     * failure rates, and most common error messages for each plugin with failures.
     *
     * @param params - Query parameters for the failure analysis
     * @returns Promise resolving to install failure analysis data
     */
    getInstallFailureAnalysis(params: InstallFailureAnalysisQuery): Promise<InstallFailureAnalysis[]>;
    /**
     * Calculates growth rate between current and previous values
     *
     * Utility method for calculating percentage growth rates from the statistics.
     *
     * @param current - Current period value
     * @param previous - Previous period value
     * @returns Growth rate as percentage (e.g., 15.5 for 15.5% growth)
     */
    static calculateGrowthRate(current: number, previous: number): number;
    /**
     * Formats market overview statistics with calculated growth rates
     *
     * Utility method that enhances the raw statistics with calculated growth rates
     * for easier consumption in dashboards and reports.
     *
     * @param stats - Raw market overview statistics
     * @returns Enhanced statistics with growth rate calculations
     */
    static formatMarketOverview(stats: MarketOverviewStats): {
        growth: {
            devices: number;
            installs: number;
            pluginCalls: number;
            plugins: number;
        };
        devices: {
            count: number;
            prevCount: number;
        };
        installs: {
            count: number;
            prevCount: number;
        };
        period: string;
        pluginCalls: {
            count: number;
            prevCount: number;
        };
        plugins: {
            count: number;
            prevCount: number;
        };
    };
    /**
     * Retrieves installation trend statistics for a specified date range
     *
     * Returns daily installation counts and trends for the specified period
     * with optional comparison to a previous period.
     *
     * @param params - Query parameters including date range and display config
     * @returns Promise resolving to installation trend statistics
     */
    getRangeInstalls(params: RangeQuery): Promise<RangeStats>;
    /**
     * Retrieves plugin growth trend statistics for a specified date range
     *
     * Returns daily plugin creation counts and trends for the specified period
     * with optional comparison to a previous period.
     *
     * @param params - Query parameters including date range and display config
     * @returns Promise resolving to plugin growth trend statistics
     */
    getRangePlugins(params: RangeQuery): Promise<RangeStats>;
    /**
     * Retrieves device growth trend statistics for a specified date range
     *
     * Note: This is a system-level statistic that tracks device registrations,
     * not plugin-specific metrics. It provides daily device registration counts
     * and trends for the specified period with optional comparison to a previous period.
     *
     * @param params - Query parameters including date range and display config
     * @returns Promise resolving to device growth trend statistics
     */
    getRangeDevices(params: RangeQuery): Promise<RangeStats>;
    /**
     * Retrieves plugin call trend statistics for a specified date range
     *
     * Returns daily plugin call counts and trends for the specified period
     * with optional comparison to a previous period.
     *
     * @param params - Query parameters including date range and display config
     * @returns Promise resolving to plugin call trend statistics
     */
    getRangeCalls(params: RangeQuery): Promise<RangeStats>;
    /**
     * Calculates trend growth rate between current and previous period totals
     *
     * Utility method for calculating percentage growth rates from range statistics.
     *
     * @param stats - Range statistics with sum and prevSum
     * @returns Growth rate as percentage (e.g., 15.5 for 15.5% growth)
     */
    static calculateTrendGrowthRate(stats: RangeStats): number;
    /**
     * Retrieves top plugins sorted by specified criteria within a date range
     *
     * Returns list of plugins sorted by the specified criteria (installs or calls)
     * in descending order for the specified date range.
     *
     * @param params - Query parameters including date range, sort criteria, and limit
     * @returns Promise resolving to list of top plugins
     */
    getTopPlugins(params: TopPluginsQuery): Promise<TopPlugin[]>;
}

/**
 * Plugin Management Service
 *
 * Provides administrative functionality for managing plugins in the marketplace.
 * This service handles CRUD operations for plugins, plugin versions, and deployment options.
 */
declare class PluginService extends BaseSDK {
    /**
     * Batch imports plugin manifests using the dedicated import endpoint
     *
     * This method is intended for use with scripts and bulk import operations.
     *
     * @param manifests - Array of plugin manifests to import
     * @param ownerId - Optional owner ID to associate with the imported plugins
     * @returns Promise resolving to the import results with counts of success, skipped, failed, and a list of failed IDs
     */
    importPlugins(manifests: PluginManifest[], ownerId?: number): Promise<{
        failed: number;
        failedIds: string[];
        skipped: number;
        success: number;
    }>;
    /**
     * Imports plugin internationalization (i18n) data
     *
     * Allows importing localized content for a specific plugin version.
     * This method creates or updates localizations for the specified plugin.
     *
     * @param params - Plugin i18n import parameters containing identifier, version, and localizations
     * @returns Promise resolving to the import results with counts of success and failure
     */
    importPluginI18n(params: PluginI18nImportParams): Promise<PluginI18nImportResponse>;
    /**
     * Retrieves a list of plugins with admin details
     *
     * Supports filtering, pagination, and sorting of results.
     *
     * @param params - Query parameters for filtering and pagination
     * @returns Promise resolving to the plugin list response with admin details
     */
    getPlugins(params?: AdminListQueryParams): Promise<AdminListResponse<AdminPluginItem>>;
    /**
     * Retrieves all published plugin identifiers
     *
     * Returns a lightweight list of all published plugin identifiers without
     * full plugin metadata. This is useful for admin operations that need to know
     * which plugins are currently published and available to users.
     *
     * @returns Promise resolving to an array containing identifiers array and last modified time
     */
    getPublishedIdentifiers(): Promise<{
        identifier: string;
        lastModified: string;
    }[]>;
    /**
     * Retrieves a single plugin with full admin details
     *
     * @param id - Plugin ID or identifier
     * @returns Promise resolving to the detailed plugin information with version history
     */
    getPlugin(id: number | string): Promise<AdminPluginItemDetail>;
    /**
     * Retrieves a plugin by its GitHub repository URL
     *
     * @param githubUrl - The GitHub repository URL to search for
     * @returns Promise resolving to the detailed plugin information with version history
     */
    getPluginByGithubUrl(githubUrl: string): Promise<AdminPluginItemDetail>;
    /**
     * Updates plugin information
     *
     * @param id - Plugin ID
     * @param data - Plugin update data containing fields to update
     * @returns Promise resolving to the updated plugin
     */
    updatePlugin(id: number, data: PluginUpdateParams): Promise<AdminPluginItem>;
    /**
     * Updates plugin publication status
     *
     * @param id - Plugin ID
     * @param status - New status to set
     * @returns Promise resolving to success response
     */
    updatePluginStatus(id: number, status: 'published' | 'draft' | 'review' | 'rejected'): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Deletes a plugin
     *
     * @param id - Plugin ID
     * @returns Promise resolving to success response
     */
    deletePlugin(id: number): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Retrieves the version history for a plugin
     *
     * @param pluginId - Plugin ID
     * @returns Promise resolving to an array of plugin versions
     */
    getPluginVersions(pluginId: number): Promise<PluginVersion[]>;
    /**
     * Retrieves a specific plugin version
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @returns Promise resolving to the plugin version details
     */
    getPluginVersion(pluginId: number, versionId: number): Promise<PluginVersion>;
    /**
     * Retrieves all localizations for a specific plugin version
     *
     * @param pluginId - Plugin ID or identifier
     * @param versionId - Version ID
     * @returns Promise resolving to an array of plugin version localizations
     */
    getPluginLocalizations(pluginId: number | string, versionId: number): Promise<PluginVersionLocalization[]>;
    /**
     * Creates a new plugin version with all version-specific data
     *
     * @param pluginId - Plugin ID
     * @param data - Version creation data including all version-specific fields
     * @returns Promise resolving to the created plugin version
     */
    createPluginVersion(pluginId: number, data: PluginVersionCreateParams): Promise<PluginVersion>;
    /**
     * Creates a new plugin version from a manifest
     * Extracts version data from the manifest for easier creation
     *
     * @param pluginId - Plugin ID
     * @param manifest - Plugin manifest containing all version data
     * @param options - Additional options for version creation
     * @returns Promise resolving to the created plugin version
     */
    createPluginVersionFromManifest(pluginId: number, manifest: PluginManifest, options?: {
        isLatest?: boolean;
        isValidated?: boolean;
    }): Promise<PluginVersion>;
    /**
     * Updates a plugin version with comprehensive version-specific data
     *
     * @param idOrIdentifier - Plugin ID
     * @param versionId - Version ID
     * @param data - Version update data including all version-specific fields
     * @returns Promise resolving to the updated plugin version
     */
    updatePluginVersion(idOrIdentifier: number | string, versionId: number, data: PluginVersionUpdateParams): Promise<PluginVersion>;
    /**
     * Deletes a plugin version
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @returns Promise resolving to success response
     */
    deletePluginVersion(pluginId: number, versionId: number): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Sets a specific version as the latest version of a plugin
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID to set as latest
     * @returns Promise resolving to success response
     */
    setPluginVersionAsLatest(pluginId: number, versionId: number): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Updates plugin visibility
     *
     * @param id - Plugin ID
     * @param visibility - New visibility setting
     * @returns Promise resolving to success response
     */
    updatePluginVisibility(id: number, visibility: 'public' | 'private' | 'unlisted'): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Updates status for multiple plugins in a single operation
     *
     * @param ids - Array of plugin IDs to update
     * @param status - New status to set for all specified plugins
     * @returns Promise resolving to success response
     */
    batchUpdatePluginStatus(ids: number[], status: 'published' | 'draft' | 'review' | 'rejected'): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Deletes multiple plugins in a single operation
     *
     * @param ids - Array of plugin IDs to delete
     * @returns Promise resolving to success response
     */
    batchDeletePlugins(ids: number[]): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Retrieves detailed information about a plugin version including deployment options
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @returns Promise resolving to version details with deployment options
     */
    getPluginVersionDetails(pluginId: number, versionId: number): Promise<PluginVersion & {
        deploymentOptions: any;
    }>;
    /**
     * Retrieves deployment options for a specific plugin version
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @returns Promise resolving to an array of deployment options
     */
    getDeploymentOptions(pluginId: number, versionId: number): Promise<AdminDeploymentOption[]>;
    /**
     * Creates a new deployment option for a plugin version
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @param data - Deployment option configuration data
     * @returns Promise resolving to the created deployment option
     */
    createDeploymentOption(pluginId: number, versionId: number, data: {
        connectionArgs?: string[];
        connectionCommand?: string;
        connectionType: string;
        description?: string;
        installationDetails?: InstallationDetails;
        installationMethod: string;
        isRecommended?: boolean;
    }): Promise<AdminDeploymentOption>;
    /**
     * Updates an existing deployment option
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @param optionId - Deployment option ID
     * @param data - Updated deployment option configuration
     * @returns Promise resolving to the updated deployment option
     */
    updateDeploymentOption(pluginId: number, versionId: number, optionId: number, data: {
        connectionArgs?: string[];
        connectionCommand?: string;
        connectionType?: string;
        description?: string;
        installationDetails?: Record<string, any>;
        installationMethod?: string;
        isRecommended?: boolean;
    }): Promise<AdminDeploymentOption>;
    /**
     * Deletes a deployment option
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @param optionId - Deployment option ID
     * @returns Promise resolving to success response
     */
    deleteDeploymentOption(pluginId: number, versionId: number, optionId: number): Promise<{
        message: string;
        success: boolean;
    }>;
    /**
     * Retrieves system dependencies for a deployment option
     *
     * @param pluginId - Plugin ID
     * @param versionId - Version ID
     * @param optionId - Deployment option ID
     * @returns Promise resolving to an array of system dependencies
     */
    getDeploymentOptionSystemDependencies(pluginId: number, versionId: number, optionId: number): Promise<SystemDependency[]>;
    /**
     * Retrieves verified plugins without summary information
     *
     * Returns plugins that are validated but missing summary data.
     *
     * @returns Promise resolving to array of plugins with incomplete summary data
     */
    getVerifiedPluginsWithoutSummary(): Promise<{
        identifier: string;
        manifest: PluginManifest;
        versionId: number;
    }[]>;
    /**
     * Retrieves plugins with incomplete internationalization
     *
     * Returns plugins where pluginVersionLocalizations has only 1 entry.
     *
     * @returns Promise resolving to an array of plugins with incomplete i18n
     */
    getIncompleteI18nPlugins(): Promise<IncompleteI18nPlugin[]>;
    /**
     * Retrieves unclaimed plugins
     *
     * Returns plugins where isClaimed is false, containing only ID and identifier.
     *
     * @returns Promise resolving to an array of unclaimed plugins with basic info
     */
    getUnclaimedPlugins(): Promise<UnclaimedPluginItem[]>;
}

/**
 * System Dependency Management Service
 *
 * Provides administrative functionality for managing system dependencies
 * required by plugins. This service handles creating, updating, deleting,
 * and listing system dependencies that plugins may require.
 */
declare class SystemDependencyService extends BaseSDK {
    /**
     * Retrieves all system dependencies
     *
     * Gets a list of all defined system dependencies that plugins may require.
     *
     * @returns Promise resolving to an array of system dependencies
     */
    getSystemDependencies(): Promise<SystemDependency[]>;
    /**
     * Retrieves a specific system dependency by ID
     *
     * @param id - System dependency ID
     * @returns Promise resolving to the system dependency details
     */
    getSystemDependency(id: number): Promise<SystemDependency>;
    /**
     * Creates a new system dependency
     *
     * @param data - System dependency creation data
     * @returns Promise resolving to the created system dependency
     */
    createSystemDependency(data: Omit<SystemDependency, 'id'>): Promise<SystemDependency>;
    /**
     * Updates an existing system dependency
     *
     * @param id - System dependency ID
     * @param data - System dependency update data
     * @returns Promise resolving to the updated system dependency
     */
    updateSystemDependency(id: number, data: Partial<SystemDependency>): Promise<SystemDependency>;
    /**
     * Deletes a system dependency
     *
     * @param id - System dependency ID
     * @returns Promise resolving to success response
     */
    deleteSystemDependency(id: number): Promise<{
        message: string;
        success: boolean;
    }>;
}

/**
 * Settings entity representing a system setting
 */
interface Settings {
    /** Creation timestamp (ISO 8601 format) */
    createdAt: string;
    /** Optional description of the setting's purpose */
    description?: string;
    /** Unique identifier for the setting */
    id: number;
    /** Setting key name used for retrieving the setting */
    key: string;
    /** Last update timestamp (ISO 8601 format) */
    updatedAt: string;
    /** Setting value (stored as string) */
    value: string;
}
/**
 * Configuration for enabled resource types
 */
interface EnabledResources {
    /** Whether agent resources are enabled */
    agents: boolean;
    /** Whether plugin resources are enabled */
    plugins: boolean;
}
/**
 * Authentication configuration
 */
interface AuthenticationConfig {
    /** Whether authentication is required */
    enabled: boolean;
    /** Supported authentication schemes */
    schemes: string[];
}
/**
 * Documentation URL configuration
 */
interface DocumentationConfig {
    /** URL to API documentation */
    apiUrl?: string;
    /** URL to privacy policy */
    policyUrl?: string;
    /** URL to terms of service */
    termsOfServiceUrl?: string;
}
/**
 * Map of all system settings with typed properties
 */
interface SettingsMap {
    /** Additional settings (dynamically added) */
    [key: string]: any;
    /** Authentication configuration */
    authentication: AuthenticationConfig;
    /** Base URL for the marketplace */
    baseURL: string;
    /** Documentation URL configuration */
    documentation: DocumentationConfig;
    /** Configuration for enabled resource types */
    enabledResources: EnabledResources;
    /** Supported locales */
    locales: string[];
}
/**
 * Parameters for creating a new setting
 */
interface CreateSettingsParams {
    /** Optional description of the setting's purpose */
    description?: string;
    /** Setting key name */
    key: string;
    /** Setting value (will be stored as string) */
    value: string;
}
/**
 * Parameters for updating an existing setting
 */
interface UpdateSettingsParams {
    /** Optional new description */
    description?: string;
    /** New setting value */
    value: string;
}
/**
 * Settings Management Service
 *
 * Provides administrative functionality for managing system settings.
 * This service handles getting, creating, updating, and deleting
 * configuration settings for the marketplace.
 */
declare class SettingsService extends BaseSDK {
    /**
     * Retrieves all system settings
     *
     * Returns a consolidated map of all settings with typed values
     * for known setting keys.
     *
     * @returns Promise resolving to the settings map
     */
    getSettings(): Promise<SettingsMap>;
    /**
     * Retrieves a specific setting by key
     *
     * @param key - Setting key name
     * @returns Promise resolving to the setting details
     */
    getSettingByKey(key: string): Promise<{
        data: Settings;
    }>;
    /**
     * Creates a new system setting
     *
     * @param data - Setting creation parameters
     * @returns Promise resolving to the created setting
     */
    createSetting(data: CreateSettingsParams): Promise<{
        data: Settings;
    }>;
    /**
     * Updates an existing setting
     *
     * @param key - Setting key name
     * @param data - Setting update parameters
     * @returns Promise resolving to the updated setting
     */
    updateSetting(key: string, data: UpdateSettingsParams): Promise<{
        data: Settings;
    }>;
    /**
     * Deletes a setting
     *
     * @param key - Setting key name
     * @returns Promise resolving to success message
     */
    deleteSetting(key: string): Promise<{
        message: string;
    }>;
}

/**
 * Review entity representing a plugin review
 */
interface Review {
    /** Optional comment providing feedback */
    comment?: string;
    /** Creation timestamp (ISO 8601 format) */
    createdAt: string;
    /** Unique identifier for the review */
    id: number;
    /** ID of the plugin being reviewed */
    pluginId: number;
    /** ID of the reviewer (if available) */
    reviewerId?: number;
    /** Current status of the review */
    status: ReviewStatus;
    /** Last update timestamp (ISO 8601 format) */
    updatedAt: string;
}
/**
 * Extended review information with related entities
 */
interface PluginReviewWithRelations extends Review {
    /** Related plugin information */
    plugin?: any;
    /** Related version information */
    version?: any;
}
/**
 * Parameters for updating a review
 */
interface UpdateReviewParams {
    /** Optional comment or feedback */
    comment?: string;
    /** New status to set for the review */
    status: ReviewStatus;
}
/**
 * Review Management Service
 *
 * Provides administrative functionality for managing plugin reviews.
 * This service handles listing, fetching, and updating review statuses
 * for plugins in the marketplace.
 */
declare class ReviewService extends BaseSDK {
    /**
     * Retrieves a list of reviews with filtering options
     *
     * @param params - Query parameters for filtering and pagination
     * @returns Promise resolving to the review list response
     */
    getReviews(params?: AdminListQueryParams): Promise<AdminListResponse<PluginReviewWithRelations>>;
    /**
     * Retrieves a specific review by ID
     *
     * @param id - Review ID
     * @returns Promise resolving to the review details
     */
    getReviewById(id: number): Promise<Review>;
    /**
     * Updates a review's status and comment
     *
     * @param id - Review ID
     * @param data - Update parameters containing new status and optional comment
     * @returns Promise resolving to the updated review
     */
    updateReview(id: number, data: UpdateReviewParams): Promise<Review>;
    /**
     * Retrieves the review history for a specific plugin
     *
     * @param pluginId - Plugin ID
     * @returns Promise resolving to an array of reviews for the plugin
     */
    getPluginReviews(pluginId: number): Promise<{
        data: Review[];
    }>;
}

type AdminPluginEnvListQuery = any;
type PluginEnv = any;
interface AdminPluginEnvCreateParams {
    description?: string;
    identifier: string;
    key: string;
    value: string;
}
interface AdminPluginEnvUpdateParams {
    description?: string;
    value?: string;
}
/**
 * Plugin Environment Variable Management Service
 *
 * Provides administrative functionality for managing plugin environment variables.
 */
declare class PluginEnvService extends BaseSDK {
    /**
     * Retrieves a paginated list of plugin environment variables
     *
     * @param params - Query parameters for filtering and pagination
     * @returns Promise resolving to the env list response
     */
    getPluginEnvs(params?: AdminPluginEnvListQuery): Promise<AdminListResponse<PluginEnv>>;
    /**
     * Retrieves a single plugin environment variable by ID
     *
     * @param id - Env ID
     * @returns Promise resolving to the env item
     */
    getPluginEnv(id: number): Promise<PluginEnv>;
    /**
     * Creates a new plugin environment variable
     *
     * @param data - Env creation data
     * @returns Promise resolving to the created env item
     */
    createPluginEnv(data: AdminPluginEnvCreateParams): Promise<PluginEnv>;
    /**
     * Updates a plugin environment variable
     *
     * @param id - Env ID
     * @param data - Env update data
     * @returns Promise resolving to the updated env item
     */
    updatePluginEnv(id: number, data: AdminPluginEnvUpdateParams): Promise<PluginEnv>;
    /**
     * Deletes a plugin environment variable
     *
     * @param id - Env ID
     * @returns Promise resolving to success response
     */
    deletePluginEnv(id: number): Promise<{
        success: boolean;
    }>;
    /**
     * Batch import plugin environment variables
     *
     * @param data - Batch import data, format: { [plugin: string]: { [envKey: string]: string } }
     * @returns Promise resolving to import result
     */
    importPluginEnvs(data: Record<string, Record<string, string>>): Promise<{
        success: number;
    }>;
}

/**
 * LobeHub Market Admin SDK Client
 *
 * Client for accessing administrative functionality of the LobeHub Marketplace.
 * This SDK provides privileged operations for managing plugins, reviews,
 * system settings, and dependencies. It requires admin-level authentication.
 */
declare class MarketAdmin extends BaseSDK {
    /**
     * Market analysis service
     * Provides methods for accessing market analytics and statistics
     */
    readonly analysis: AnalysisService;
    /**
     * Plugin management service
     * Provides methods for creating, updating, and managing plugins
     */
    readonly plugins: PluginService;
    readonly env: PluginEnvService;
    /**
     * Review management service
     * Provides methods for moderating and managing user reviews
     */
    readonly reviews: ReviewService;
    /**
     * System settings management service
     * Provides methods for configuring marketplace settings
     */
    readonly settings: SettingsService;
    /**
     * System dependency management service
     * Provides methods for managing system dependencies required by plugins
     */
    readonly dependencies: SystemDependencyService;
    /**
     * Creates a new MarketAdmin instance
     *
     * @param options - Configuration options for the SDK
     */
    constructor(options?: MarketSDKOptions);
}

/**
 * Plugins Service
 *
 * Provides access to plugin-related functionality in the LobeHub Marketplace.
 * This service handles listing, searching, and retrieving detailed information
 * about plugins available in the marketplace.
 */
declare class PluginsService extends BaseSDK {
    /**
     * Retrieves a list of plugins from the marketplace
     *
     * Supports filtering, pagination, and localization of results.
     *
     * @param params - Query parameters for filtering and pagination
     * @param options
     * @returns Promise resolving to the plugin list response containing items and pagination info
     */
    getPluginList(params?: PluginQueryParams, options?: globalThis.RequestInit): Promise<PluginListResponse>;
    /**
     * Retrieves all plugin categories and their counts
     *
     * Returns a list of categories along with the number of plugins in each category.
     * Useful for building category filters in a UI. Supports optional search filtering
     * via 'q' parameter and locale specification.
     *
     * @param params - Query parameters for filtering categories
     * @param options - Optional request options
     * @returns Promise resolving to an array of category items with counts
     */
    getCategories(params?: CategoryListQuery, options?: globalThis.RequestInit): Promise<CategoryItem[]>;
    /**
     * Retrieves all published plugin identifiers
     *
     * Returns a lightweight list of all published plugin identifiers without
     * full plugin metadata. This is useful for clients that need to know which
     * plugins are available without fetching complete plugin information.
     *
     * @returns Promise resolving to an array containing identifiers array and last modified time
     */
    getPublishedIdentifiers(options?: globalThis.RequestInit): Promise<{
        identifier: string;
        lastModified: string;
    }[]>;
    /**
     * Retrieves the manifest for a specific plugin
     *
     * The manifest contains detailed information about a plugin, including
     * its capabilities, tools, prompts, and resources.
     *
     * @param identifier - Unique identifier of the plugin
     * @param locale - Optional locale for localized content (defaults to SDK default locale)
     * @param version - Optional specific version to retrieve (defaults to latest)
     * @param options
     * @returns Promise resolving to the plugin manifest
     */
    getPluginManifest({ locale, version, identifier, }: {
        identifier: string;
        locale?: string;
        version?: string;
    }, options?: globalThis.RequestInit): Promise<PluginManifest>;
    /**
     * Retrieves the plugin detailed information about a plugin, including
     * its capabilities, tools, prompts, and resources.
     *
     * @param identifier - Unique identifier of the plugin
     * @param locale - Optional locale for localized content (defaults to SDK default locale)
     * @param version - Optional specific version to retrieve (defaults to latest)
     * @returns Promise resolving to the plugin manifest
     */
    getPluginDetail({ locale, version, identifier, }: {
        identifier: string;
        locale?: string;
        version?: string;
    }, options?: globalThis.RequestInit): Promise<PluginItemDetail>;
    /**
     * Report a plugin installation attempt
     *
     * Reports the outcome of a plugin installation attempt, including timing,
     * success status, manifest information, and error details if applicable.
     * This helps improve plugin validation and provides analytics about installation success rates.
     *
     * @param reportData - The installation report data
     * @returns Promise resolving to the report submission response
     *
     */
    reportInstallation(reportData: InstallReportRequest): Promise<InstallReportResponse>;
    /**
     * Report a plugin method call attempt
     *
     * Reports the outcome of a plugin method call, including timing,
     * success status, method information, and error details if applicable.
     * This helps improve plugin performance monitoring and provides usage analytics.
     *
     * @param reportData - The call report data
     * @returns Promise resolving to the report submission response
     */
    reportCall(reportData: CallReportRequest): Promise<CallReportResponse>;
}

/**
 * LobeHub Market SDK Client
 *
 * Main client for accessing the LobeHub Marketplace API.
 * This class provides access to marketplace resources like plugins, agents,
 * and service discovery information. It follows a composition pattern
 * by combining specialized domain services.
 */
declare class MarketSDK extends BaseSDK {
    /**
     * Plugins service for accessing plugin-related functionality
     * Provides methods to list, search, retrieve plugin information, and report installation attempts
     */
    readonly plugins: PluginsService;
    /**
     * Discovery service for retrieving API service information
     * Used to get information about available endpoints and services
     */
    private readonly discovery;
    /**
     * Creates a new MarketSDK instance
     *
     * @param options - Configuration options for the SDK
     */
    constructor(options?: MarketSDKOptions);
    /**
     * Retrieves the service discovery document
     *
     * The discovery document provides information about available API endpoints,
     * versions, and capabilities of the Market API.
     *
     * @returns Promise resolving to the service discovery document
     */
    getDiscoveryDocument(): Promise<DiscoveryDocument>;
    /**
     * Registers a new client for M2M authentication
     *
     * This method registers a client application with the Market API and returns
     * unique credentials (client_id and client_secret) that can be used for M2M authentication.
     * These credentials should be stored securely and used to initialize the SDK.
     *
     * @param request - Client registration request data
     * @returns Promise resolving to the client registration response with credentials
     * @throws Error if registration fails
     */
    registerClient(request: ClientRegistrationRequest): Promise<ClientRegistrationResponse>;
}

export { type AdminListQueryParams, type AdminListResponse, type AdminPluginParams, type ClientRegistrationError, type ClientRegistrationRequest, type ClientRegistrationResponse, type DiscoveryDocument, MarketAdmin, MarketSDK, type MarketSDKOptions, type PluginI18nImportParams, type PluginI18nImportResponse, type PluginItem, type PluginListResponse, type PluginLocalization, type PluginQueryParams, type PluginUpdateParams, type PluginVersionCreateParams, type PluginVersionUpdateParams, type ReviewStatus, ReviewStatusEnumSchema, type SharedTokenState, StatusEnumSchema, type UnclaimedPluginItem, VisibilityEnumSchema };
