import type { Except } from 'type-fest';
import type { BasicMetaSysProps, DefaultElements, MakeRequest, SysLink } from '../common-types';
type AppKeySys = Except<BasicMetaSysProps, 'version'> & {
    appDefinition: SysLink;
    organization: SysLink;
};
export interface JWK {
    alg: 'RS256';
    kty: 'RSA';
    use: 'sig';
    x5c: [string];
    kid: string;
    x5t: string;
}
export type AppKeyProps = {
    /**
     * System metadata
     */
    sys: AppKeySys;
    /**
     * JSON Web Key
     */
    jwk: JWK;
    /**
     * If generated, private key is returned
     */
    generated?: {
        /**
         * Base64 PEM
         */
        privateKey: string;
    };
};
export type CreateAppKeyProps = {
    /**
     * Toggle for automatic private key generation
     */
    generate?: boolean;
    /**
     * JSON Web Key, required if generate is falsy
     */
    jwk?: JWK;
};
export interface AppKey extends AppKeyProps, DefaultElements<AppKeyProps> {
    /**
     * Deletes this object on the server.
     * @returns Promise for the deletion. It contains no data, but the Promise error case should be handled.
     * @example ```javascript
     * const contentful = require('contentful-management')
     *
     * const client = contentful.createClient({
     *   accessToken: '<content_management_api_key>'
     * })
     * client.getOrganization('<organization_id>')
     * .then((organization) => organization.getAppKey(<api-key-id>))
     * .then((signingSecret) => signingSecret.delete())
     * .then(() => console.log('signingSecret deleted'))
     * .catch(console.error)
     * ```
     */
    delete(): Promise<void>;
}
/**
 * @internal
 * @param http - HTTP client instance
 * @param data - Raw AppKey data
 * @returns Wrapped AppKey data
 */
export declare function wrapAppKey(makeRequest: MakeRequest, data: AppKeyProps): AppKey;
/**
 * @internal
 * @param makeRequest - function to make requests via an adapter
 * @param data - Raw App Key collection data
 * @returns Wrapped App Key collection data
 */
export declare const wrapAppKeyCollection: (makeRequest: MakeRequest, data: import("..").CollectionProp<AppKeyProps>) => import("..").Collection<AppKey, AppKeyProps>;
export {};
