import type { Channel } from './api/channels';
import type { DecryptResult } from './bundle/decrypt';
import type { EncryptResult } from './bundle/encrypt';
import type { ZipResult } from './bundle/zip';
import type { StarAllRepositoryResult } from './github';
import type { ProbeInternalResult } from './probe';
import type { AccountIdOptions, AddAppOptions, AddChannelOptions, AddOrganizationOptions, AppInfo, BundleCompatibilityOptions, BundleInfo, CleanupOptions, CurrentBundleOptions, DecryptBundleOptions, DeleteOldKeyOptions, DeleteOrganizationOptions, DeviceStats, DoctorOptions, EncryptBundleOptions, GenerateKeyOptions, GetStatsOptions, ListOrganizationsOptions, LoginOptions, OrganizationInfo, ProbeOptions, RequestBuildOptions, SaveKeyOptions, SDKResult, SetSettingOptions, StarAllRepositoriesOptions, StarRepoOptions, UpdateAppOptions, UpdateChannelOptions, UpdateOrganizationOptions, UploadOptions, UploadResult, ZipBundleOptions } from './schemas/sdk';
import { getInfoInternal } from './app/info';
import { checkCompatibilityInternal } from './bundle/compatibility';
export type DoctorInfo = Awaited<ReturnType<typeof getInfoInternal>>;
type CompatibilityReport = Awaited<ReturnType<typeof checkCompatibilityInternal>>['finalCompatibility'];
export type BundleCompatibilityEntry = CompatibilityReport[number];
export type { UpdateProbeResult } from './app/updateProbe';
/**
 * Capgo SDK for programmatic access to all CLI functionality.
 * Use this class to integrate Capgo operations directly into your application.
 *
 * @example
 * ```typescript
 * // Initialize SDK
 * const sdk = new CapgoSDK({ apikey: 'your-api-key' })
 *
 * // Upload a bundle
 * const result = await sdk.uploadBundle({
 *   appId: 'com.example.app',
 *   path: './dist',
 *   bundle: '1.0.0',
 *   channel: 'production'
 * })
 *
 * if (result.success) {
 *   console.log('Upload successful!')
 * }
 * ```
 */
export declare class CapgoSDK {
    private readonly apikey?;
    private readonly supaHost?;
    private readonly supaAnon?;
    constructor(options?: {
        apikey?: string;
        supaHost?: string;
        supaAnon?: string;
    });
    /**
     * Save an API key locally or in the home directory
     */
    login(options: LoginOptions): Promise<SDKResult>;
    /**
     * Run Capgo Doctor diagnostics and return the report
     */
    doctor(options?: DoctorOptions): Promise<SDKResult<DoctorInfo>>;
    /**
     * Add a new app to Capgo Cloud
     *
     * @example
     * ```typescript
     * const result = await sdk.addApp({
     *   appId: 'com.example.app',
     *   name: 'My App',
     *   icon: './icon.png'
     * })
     * ```
     */
    addApp(options: AddAppOptions): Promise<SDKResult>;
    /**
     * Update an existing app in Capgo Cloud
     *
     * Note: This method requires CLI function refactoring to work without exit().
     * Currently it will throw an error.
     *
     * @example
     * ```typescript
     * const result = await sdk.updateApp({
     *   appId: 'com.example.app',
     *   name: 'Updated App Name',
     *   retention: 30
     * })
     * ```
     */
    updateApp(options: UpdateAppOptions): Promise<SDKResult>;
    /**
     * Delete an app from Capgo Cloud
     *
     * @param appId - The app ID to delete
     * @param skipConfirmation - Skip owner confirmation check (use with caution)
     *
     * @example
     * ```typescript
     * const result = await sdk.deleteApp('com.example.app')
     * ```
     */
    deleteApp(appId: string, skipConfirmation?: boolean): Promise<SDKResult>;
    /**
     * List all apps for the authenticated account
     *
     * @example
     * ```typescript
     * const result = await sdk.listApps()
     * if (result.success) {
     *   result.data?.forEach(app => {
     *     console.log(`${app.name} (${app.appId})`)
     *   })
     * }
     * ```
     */
    listApps(): Promise<SDKResult<AppInfo[]>>;
    /**
     * Retrieve the account ID associated with the configured API key
     */
    getAccountId(options?: AccountIdOptions): Promise<SDKResult<string>>;
    /**
     * Star the Capgo repository on GitHub
     *
     * @example
     * ```typescript
     * const result = await sdk.starRepo({ repository: 'Cap-go/capacitor-updater' })
     * if (result.success) {
     *   console.log(`${result.data?.repository} starred`)
     * }
     * ```
     */
    starRepo(options?: StarRepoOptions): Promise<SDKResult<{
        repository: string;
        alreadyStarred: boolean;
    }>>;
    /**
     * Star the Capgo-related repositories on GitHub
     *
     * @example
     * ```typescript
     * const result = await sdk.starAllRepositories()
     * if (result.success) {
     *   for (const entry of result.data ?? []) {
     *     console.log(entry.repository, entry.status)
     *   }
     * }
     * ```
     */
    starAllRepositories(options?: StarAllRepositoriesOptions): Promise<SDKResult<StarAllRepositoryResult[]>>;
    checkBundleCompatibility(options: BundleCompatibilityOptions): Promise<SDKResult<BundleCompatibilityEntry[]>>;
    encryptBundle(options: EncryptBundleOptions): Promise<SDKResult<EncryptResult>>;
    decryptBundle(options: DecryptBundleOptions): Promise<SDKResult<DecryptResult>>;
    zipBundle(options: ZipBundleOptions): Promise<SDKResult<ZipResult>>;
    /**
     * Upload a bundle to Capgo Cloud
     *
     * @example
     * ```typescript
     * const result = await sdk.uploadBundle({
     *   appId: 'com.example.app',
     *   path: './dist',
     *   bundle: '1.0.0',
     *   channel: 'production',
     *   comment: 'New features added'
     * })
     * ```
     */
    uploadBundle(options: UploadOptions): Promise<UploadResult>;
    /**
     * List bundles for an app
     *
     * @example
     * ```typescript
     * const result = await sdk.listBundles('com.example.app')
     * if (result.success) {
     *   result.data?.forEach(bundle => {
     *     console.log(`${bundle.version} - ${bundle.uploadedAt}`)
     *   })
     * }
     * ```
     */
    listBundles(appId: string): Promise<SDKResult<BundleInfo[]>>;
    /**
     * Delete a specific bundle
     *
     * Note: This method requires CLI function refactoring to work without exit().
     *
     * @example
     * ```typescript
     * const result = await sdk.deleteBundle('com.example.app', '1.0.0')
     * ```
     */
    deleteBundle(appId: string, bundleId: string): Promise<SDKResult>;
    /**
     * Cleanup old bundles, keeping only recent versions
     *
     * @example
     * ```typescript
     * const result = await sdk.cleanupBundles({
     *   appId: 'com.example.app',
     *   keep: 5,
     *   force: true
     * })
     * ```
     */
    cleanupBundles(options: CleanupOptions): Promise<SDKResult<{
        removed: number;
        kept: number;
    }>>;
    /**
     * Request a native build for your app with store publishing
     *
     * SECURITY GUARANTEE:
     * Credentials provided to this method are NEVER stored on Capgo servers.
     * They are used only during the build process and automatically deleted
     * after completion (maximum 24 hours retention). Build outputs may optionally
     * be uploaded for time-limited download links.
     *
     * @example
     * ```typescript
     * const result = await sdk.requestBuild({
     *   appId: 'com.example.app',
     *   path: './my-project',
     *   lane: 'ios', // Must be exactly "ios" or "android"
     *   credentials: {
     *     BUILD_CERTIFICATE_BASE64: 'base64-cert...',
     *     CAPGO_IOS_PROVISIONING_MAP: '{"com.example.app":{"profile":"base64...","name":"match AppStore com.example.app"}}',
     *     P12_PASSWORD: 'cert-password',
     *     APPLE_KEY_ID: 'KEY123',
     *     APPLE_ISSUER_ID: 'issuer-uuid',
     *     APPLE_KEY_CONTENT: 'base64-p8...',
     *     APP_STORE_CONNECT_TEAM_ID: 'team-id'
     *   }
     * })
     *
     * if (result.success) {
     *   console.log('Job ID:', result.data.jobId)
     * }
     * ```
     */
    requestBuild(options: RequestBuildOptions): Promise<SDKResult<{
        jobId: string;
        uploadUrl: string;
        status: string;
    }>>;
    getCurrentBundle(appId: string, channelId: string, options?: CurrentBundleOptions): Promise<SDKResult<string>>;
    /**
     * Create a new channel for app distribution
     *
     * @example
     * ```typescript
     * const result = await sdk.addChannel({
     *   channelId: 'production',
     *   appId: 'com.example.app',
     *   default: true
     * })
     * ```
     */
    addChannel(options: AddChannelOptions): Promise<SDKResult>;
    /**
     * Update channel settings
     *
     * @example
     * ```typescript
     * const result = await sdk.updateChannel({
     *   channelId: 'production',
     *   appId: 'com.example.app',
     *   bundle: '1.0.0'
     * })
     * ```
     */
    updateChannel(options: UpdateChannelOptions): Promise<SDKResult>;
    /**
     * Delete a channel
     *
     * @example
     * ```typescript
     * const result = await sdk.deleteChannel('staging', 'com.example.app')
     * ```
     */
    deleteChannel(channelId: string, appId: string, deleteBundle?: boolean): Promise<SDKResult>;
    /**
     * List all channels for an app
     *
     * @example
     * ```typescript
     * const result = await sdk.listChannels('com.example.app')
     * if (result.success) {
     *   result.data?.forEach(channel => {
     *     console.log(`${channel.name} - ${channel.isDefault ? 'default' : 'normal'}`)
     *   })
     * }
     * ```
     */
    listChannels(appId: string): Promise<SDKResult<Channel[]>>;
    /**
     * Generate Capgo encryption keys (private/public pair)
     */
    generateEncryptionKeys(options?: GenerateKeyOptions): Promise<SDKResult>;
    /**
     * Save a public encryption key into the Capacitor config
     */
    saveEncryptionKey(options?: SaveKeyOptions): Promise<SDKResult>;
    /**
     * Delete legacy (v1) encryption keys from the project
     */
    deleteLegacyEncryptionKey(options?: DeleteOldKeyOptions): Promise<SDKResult<{
        deleted: boolean;
    }>>;
    listOrganizations(options?: ListOrganizationsOptions): Promise<SDKResult<OrganizationInfo[]>>;
    addOrganization(options: AddOrganizationOptions): Promise<SDKResult<OrganizationInfo>>;
    updateOrganization(options: UpdateOrganizationOptions): Promise<SDKResult<OrganizationInfo>>;
    deleteOrganization(orgId: string, options?: DeleteOrganizationOptions): Promise<SDKResult<{
        deleted: boolean;
    }>>;
    /**
     * Get device statistics/logs from Capgo backend
     *
     * This method works similarly to waitLog, allowing you to poll for device activity.
     * Use the `after` parameter to get only new stats since a previous call.
     *
     * @example
     * ```typescript
     * // Get recent stats for an app
     * const result = await sdk.getStats({
     *   appId: 'com.example.app',
     *   rangeStart: new Date().toISOString(),
     *   limit: 100
     * })
     *
     * if (result.success && result.data) {
     *   result.data.forEach(stat => {
     *     console.log(`${stat.deviceId}: ${stat.action}`)
     *   })
     * }
     *
     * // Poll for new stats (similar to waitLog)
     * let after = new Date().toISOString()
     * const poll = async () => {
     *   const result = await sdk.getStats({
     *     appId: 'com.example.app',
     *     after
     *   })
     *
     *   if (result.success && result.data && result.data.length > 0) {
     *     // Update 'after' to newest timestamp
     *     const newest = result.data.reduce((max, d) => {
     *       const t = new Date(d.createdAt).getTime()
     *       return Math.max(max, t)
     *     }, new Date(after).getTime())
     *     after = new Date(newest).toISOString()
     *
     *     // Process new stats
     *     result.data.forEach(stat => console.log(stat))
     *   }
     * }
     * ```
     */
    getStats(options: GetStatsOptions): Promise<SDKResult<DeviceStats[]>>;
    setAppSetting(path: string, options: SetSettingOptions): Promise<SDKResult>;
    probe(options: ProbeOptions): Promise<SDKResult<ProbeInternalResult>>;
}
/**
 * Upload a bundle to Capgo Cloud (functional API)
 *
 * @example
 * ```typescript
 * const result = await uploadBundle({
 *   appId: 'com.example.app',
 *   path: './dist',
 *   bundle: '1.0.0',
 *   apikey: 'your-api-key'
 * })
 * ```
 */
export declare function uploadBundle(options: UploadOptions): Promise<UploadResult>;
export declare function login(options: LoginOptions): Promise<SDKResult>;
export declare function doctor(options?: DoctorOptions): Promise<SDKResult<DoctorInfo>>;
export declare function checkBundleCompatibility(options: BundleCompatibilityOptions): Promise<SDKResult<BundleCompatibilityEntry[]>>;
export declare function encryptBundle(options: EncryptBundleOptions): Promise<SDKResult<EncryptResult>>;
export declare function decryptBundle(options: DecryptBundleOptions): Promise<SDKResult<DecryptResult>>;
export declare function zipBundle(options: ZipBundleOptions): Promise<SDKResult<ZipResult>>;
export declare function starRepo(options?: StarRepoOptions): Promise<SDKResult<{
    repository: string;
    alreadyStarred: boolean;
}>>;
export declare function starAllRepositories(options?: StarAllRepositoriesOptions): Promise<SDKResult<StarAllRepositoryResult[]>>;
export declare function generateEncryptionKeys(options?: GenerateKeyOptions): Promise<SDKResult>;
export declare function saveEncryptionKey(options?: SaveKeyOptions): Promise<SDKResult>;
export declare function deleteLegacyEncryptionKey(options?: DeleteOldKeyOptions): Promise<SDKResult<{
    deleted: boolean;
}>>;
export declare function getCurrentBundle(appId: string, channelId: string, options?: CurrentBundleOptions): Promise<SDKResult<string>>;
export declare function updateAppSetting(path: string, options: SetSettingOptions): Promise<SDKResult>;
export declare function getAccountId(options?: AccountIdOptions): Promise<SDKResult<string>>;
export declare function listOrganizations(options?: ListOrganizationsOptions): Promise<SDKResult<OrganizationInfo[]>>;
export declare function addOrganization(options: AddOrganizationOptions): Promise<SDKResult<OrganizationInfo>>;
export declare function updateOrganization(options: UpdateOrganizationOptions): Promise<SDKResult<OrganizationInfo>>;
export declare function deleteOrganization(orgId: string, options?: DeleteOrganizationOptions): Promise<SDKResult<{
    deleted: boolean;
}>>;
/**
 * Add a new app to Capgo Cloud (functional API)
 *
 * @example
 * ```typescript
 * const result = await addApp({
 *   appId: 'com.example.app',
 *   name: 'My App',
 *   apikey: 'your-api-key'
 * })
 * ```
 */
export declare function addApp(options: AddAppOptions): Promise<SDKResult>;
/**
 * List bundles for an app (functional API)
 *
 * @example
 * ```typescript
 * const result = await listBundles('com.example.app', { apikey: 'your-api-key' })
 * ```
 */
export declare function listBundles(appId: string, options?: {
    apikey?: string;
    supaHost?: string;
    supaAnon?: string;
}): Promise<SDKResult<BundleInfo[]>>;
/**
 * Add a new channel (functional API)
 *
 * @example
 * ```typescript
 * const result = await addChannel({
 *   channelId: 'production',
 *   appId: 'com.example.app',
 *   apikey: 'your-api-key'
 * })
 * ```
 */
export declare function addChannel(options: AddChannelOptions): Promise<SDKResult>;
/**
 * Request a native build for your app (functional API)
 *
 * SECURITY GUARANTEE:
 * Credentials are NEVER stored on Capgo servers. They are used only during
 * the build process and automatically deleted after completion.
 * Build outputs may optionally be uploaded for time-limited download links.
 *
 * @example
 * ```typescript
 * const result = await requestBuild({
 *   appId: 'com.example.app',
 *   path: './my-project',
 *   lane: 'ios', // Must be exactly "ios" or "android"
 *   credentials: {
 *     // iOS credentials (use standard environment variable names)
 *     BUILD_CERTIFICATE_BASE64: 'base64-encoded-cert',
 *     BUILD_PROVISION_PROFILE_BASE64: 'base64-encoded-profile',
 *     P12_PASSWORD: 'cert-password',
 *     APPLE_KEY_ID: 'KEY123',
 *     APPLE_ISSUER_ID: 'issuer-uuid',
 *     APPLE_KEY_CONTENT: 'base64-encoded-p8',
 *     APP_STORE_CONNECT_TEAM_ID: 'team-id',
 *     // Android credentials (use standard environment variable names)
 *     ANDROID_KEYSTORE_FILE: 'base64-encoded-keystore',
 *     KEYSTORE_KEY_ALIAS: 'my-key-alias',
 *     KEYSTORE_KEY_PASSWORD: 'key-password',
 *     KEYSTORE_STORE_PASSWORD: 'store-password',
 *     PLAY_CONFIG_JSON: 'base64-encoded-service-account-json'
 *   },
 *   apikey: 'your-api-key'
 * })
 *
 * if (result.success) {
 *   console.log('Job ID:', result.data.jobId)
 *   console.log('Status:', result.data.status)
 * }
 * ```
 */
export declare function requestBuild(options: RequestBuildOptions): Promise<SDKResult<{
    jobId: string;
    uploadUrl: string;
    status: string;
}>>;
/**
 * Get device statistics/logs from Capgo backend (functional API)
 *
 * This function works similarly to waitLog, allowing you to poll for device activity.
 *
 * @example
 * ```typescript
 * // Get recent stats for an app
 * const result = await getStats({
 *   appId: 'com.example.app',
 *   apikey: 'your-api-key',
 *   rangeStart: new Date().toISOString(),
 *   limit: 100
 * })
 *
 * if (result.success && result.data) {
 *   result.data.forEach(stat => {
 *     console.log(`${stat.deviceId}: ${stat.action}`)
 *   })
 * }
 * ```
 */
export declare function getStats(options: GetStatsOptions): Promise<SDKResult<DeviceStats[]>>;
export declare function probeUpdates(options: ProbeOptions): Promise<SDKResult<ProbeInternalResult>>;
/**
 * Get Capacitor configuration
 *
 * @example
 * ```typescript
 * const config = await getCapacitorConfig()
 * if (config) {
 *   console.log(config.appId)
 * }
 * ```
 */
export declare function getCapacitorConfig(): Promise<{
    config: {
        [x: string]: unknown;
        appId: string;
        appName: string;
        webDir: string;
        plugins?: Record<string, any> | undefined;
        android?: Record<string, any> | undefined;
    };
    path: string;
} | null>;
export type { BuildCredentials } from './build/request';
export type { CapacitorConfig } from './config';
export type { ProbeInternalResult } from './probe';
export type { AccountIdOptions, AddAppOptions, AddChannelOptions, AddOrganizationOptions, AppInfo, BundleCompatibilityOptions, BundleInfo, CleanupOptions, CurrentBundleOptions, DecryptBundleOptions, DeleteOldKeyOptions, DeleteOrganizationOptions, DeviceStats, DoctorOptions, EncryptBundleOptions, GenerateKeyOptions, GetStatsOptions, ListOrganizationsOptions, LoginOptions, OrganizationInfo, ProbeOptions, RequestBuildOptions, SaveKeyOptions, SDKResult, SetSettingOptions, StarAllRepositoriesOptions, StarRepoOptions, StatsOrder, UpdateAppOptions, UpdateChannelOptions, UpdateOrganizationOptions, UploadOptions, UploadResult, ZipBundleOptions, } from './schemas/sdk';
export type { Database } from './types/supabase.types';
export { createSupabaseClient } from './utils';
export { formatApiErrorForCli, getSecurityPolicyMessage, isSecurityPolicyError, parseSecurityPolicyError, SECURITY_POLICY_ERRORS, SECURITY_POLICY_MESSAGES, } from './utils/security_policy_errors';
export type { ParsedSecurityError, SecurityPolicyErrorCode } from './utils/security_policy_errors';
