import type { ApiKey, InjectedDependenciesParam, InjectedOptionsParam } from '..';
import type { ODataOptionsWithoutCount, OptionsToResponse } from 'pinejs-client-core';
declare const getApiKeysModel: ({ pine, request, sdkInstance, }: InjectedDependenciesParam, { apiUrl }: InjectedOptionsParam) => {
    /**
     * @summary Creates a new user API key
     * @name create
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @description This method registers a new api key for the current user with the name given.
     *
     * @param {Object} createApiKeyParams - an object containing the parameters for the creation of an API key
     * @param {String} createApiKeyParams.name - the API key name
     * @param {String} createApiKeyParams.expiryDate - the API key expiry date
     * @param {String} [createApiKeyParams.description=null] - the API key description
     *
     * @fulfil {String} - API key
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.create({name: apiKeyName, expiryDate: 2030-10-12}).then(function(apiKey) {
     * 	console.log(apiKey);
     * });
     *
     * @example
     * balena.models.apiKey.create({name: apiKeyName, expiryDate: 2030-10-12, description: apiKeyDescription}).then(function(apiKey) {
     * 	console.log(apiKey);
     * });
     */
    create({ name, expiryDate, description, }: {
        name: string;
        expiryDate: string | null;
        description?: string | null;
    }): Promise<string>;
    /**
     * @summary Get all accessible API keys
     * @name getAll
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - apiKeys
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.getAll().then(function(apiKeys) {
     * 	console.log(apiKeys);
     * });
     */
    getAll<T extends ODataOptionsWithoutCount<ApiKey["Read"]>>(options?: T): Promise<OptionsToResponse<ApiKey["Read"], T, undefined>>;
    /**
     * @summary Get all named user API keys of the current user
     * @name getAllNamedUserApiKeys
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - apiKeys
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.getAllNamedUserApiKeys().then(function(apiKeys) {
     * 	console.log(apiKeys);
     * });
     */
    getAllNamedUserApiKeys<T extends ODataOptionsWithoutCount<ApiKey["Read"]>>(options?: T): Promise<OptionsToResponse<ApiKey["Read"], T, undefined>>;
    /**
     * @summary Get all provisioning API keys for an application
     * @name getProvisioningApiKeysByApplication
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - apiKeys
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.getProvisioningApiKeysByApplication('myorganization/myapp').then(function(apiKeys) {
     * 	console.log(apiKeys);
     * });
     */
    getProvisioningApiKeysByApplication<T extends ODataOptionsWithoutCount<ApiKey["Read"]>>(slugOrUuidOrId: string | number, options?: T): Promise<OptionsToResponse<ApiKey["Read"], T, undefined>>;
    /**
     * @summary Get all API keys for a device
     * @name getDeviceApiKeysByDevice
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {String|Number} uuidOrId - device, uuid (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - apiKeys
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.getDeviceApiKeysByDevice('7cf02a69e4d34c9da573914963cf54fd').then(function(apiKeys) {
     * 	console.log(apiKeys);
     * });
     */
    getDeviceApiKeysByDevice<T extends ODataOptionsWithoutCount<ApiKey["Read"]>>(uuidOrId: string | number, options?: T): Promise<OptionsToResponse<ApiKey["Read"], T, undefined>>;
    /**
     * @summary Update the details of an API key
     * @name update
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {Number} id - API key id
     * @param {Object} apiKeyInfo - an object with the updated name|description|expiryDate
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.update(123, { name: 'updatedName' });
     *
     * @example
     * balena.models.apiKey.update(123, { description: 'updated description' });
     *
     * @example
     * balena.models.apiKey.update(123, { expiryDate: '2022-04-29' });
     *
     * @example
     * balena.models.apiKey.update(123, { name: 'updatedName', description: 'updated description' });
     */
    update(id: number, apiKeyInfo: {
        name?: string;
        description?: string | null;
        expiryDate?: string | null;
    }): Promise<void>;
    /**
     * @summary Revoke an API key
     * @name revoke
     * @public
     * @function
     * @memberof balena.models.apiKey
     *
     * @param {Number} id - API key id
     * @returns {Promise}
     *
     * @example
     * balena.models.apiKey.revoke(123);
     */
    revoke(id: number): Promise<void>;
};
export default getApiKeysModel;
