import { SquidRegion } from '../../internal-common/src/public-types/regions.public-types';
/**
 * Options for creating a ManagementClient.
 * @category ManagementClient
 */
export interface ManagementClientOptions {
    /** The management API key (starts with 'squid_mgmt_') */
    apiKey: string;
    /** The Squid region to connect to */
    consoleRegion: SquidRegion;
}
/**
 * Request to create a new organization.
 * @category ManagementClient
 */
export interface ManagementCreateOrganizationRequest {
    /** Name of the organization (2-50 characters) */
    name: string;
}
/**
 * Response from creating a new organization.
 * @category ManagementClient
 */
export interface ManagementCreateOrganizationResponse {
    /** The ID of the created organization */
    organizationId: string;
}
/**
 * Request to create a new application.
 * @category ManagementClient
 */
export interface ManagementCreateApplicationRequest {
    /** The organization ID to create the application in */
    organizationId: string;
    /** Name of the application */
    name: string;
    /** Squid region (e.g., 'us-east-1.aws'). The cloud provider is parsed from this. */
    region: SquidRegion;
}
/**
 * Response from creating a new application.
 * @category ManagementClient
 */
export interface ManagementCreateApplicationResponse {
    /** The ID of the created application */
    appId: string;
    /** The API key for the dev environment */
    devApiKey: string;
    /** The API key for the prod environment */
    prodApiKey: string;
}
/**
 * Request to rename an organization.
 * @category ManagementClient
 */
export interface ManagementRenameOrganizationRequest {
    /** The ID of the organization to rename */
    organizationId: string;
    /** New name for the organization (2-50 characters) */
    name: string;
}
/**
 * Request to rename an application.
 * @category ManagementClient
 */
export interface ManagementRenameApplicationRequest {
    /** The ID of the application to rename */
    appId: string;
    /** New name for the application */
    name: string;
}
/**
 * Client for programmatic management of Squid organizations and applications.
 *
 * Use this client to automate organization and application management
 * using management API keys (created in the Squid Console Profile Settings).
 *
 * @example
 * ```typescript
 * const client = new ManagementClient({
 *   apiKey: 'squid_mgmt_xxx...',
 *   region: 'us-east-1.aws'
 * });
 *
 * // Create an organization
 * const { organizationId } = await client.createOrganization({ name: 'My Org' });
 *
 * // Create an application
 * const { appId } = await client.createApplication({
 *   organizationId,
 *   name: 'My App',
 *   region: 'us-east-1.aws'
 * });
 *
 * // Delete an application
 * await client.deleteApplication('my-app-id');
 * ```
 *
 * @category ManagementClient
 */
export declare class ManagementClient {
    private readonly apiKey;
    private readonly consoleRegion;
    /**
     * Creates a new ManagementClient.
     *
     * @param options - Configuration options including API key and region
     * @throws Error if the API key does not start with 'squid_mgmt_'
     */
    constructor(options: ManagementClientOptions);
    /**
     * Creates a new organization.
     * The user associated with the management API key becomes the admin of the new organization.
     *
     * @param request - The organization creation request
     * @returns The created organization's ID
     * @throws Error if organization name is invalid or key is unauthorized
     */
    createOrganization(request: ManagementCreateOrganizationRequest): Promise<ManagementCreateOrganizationResponse>;
    /**
     * Creates a new application in an organization.
     * Requires the user to be an admin in the target organization.
     *
     * @param request - The application creation request
     * @returns The created application's ID and API keys
     * @throws Error if user is not admin or organization quota reached
     */
    createApplication(request: ManagementCreateApplicationRequest): Promise<ManagementCreateApplicationResponse>;
    /**
     * Deletes an application.
     * Requires the user to be an admin in the application's organization.
     *
     * @param appId - The ID of the application to delete
     * @throws Error if user is not admin or application not found
     */
    deleteApplication(appId: string): Promise<void>;
    /**
     * Renames an organization.
     * Requires the user to be an admin in the organization.
     *
     * @param request - The rename request containing organizationId and new name
     * @throws Error if user is not admin or organization not found
     */
    renameOrganization(request: ManagementRenameOrganizationRequest): Promise<void>;
    /**
     * Renames an application.
     * Requires the user to be an admin in the application's organization.
     *
     * @param request - The rename request containing appId and new name
     * @throws Error if user is not admin or application not found
     */
    renameApplication(request: ManagementRenameApplicationRequest): Promise<void>;
}
