import type { InjectedDependenciesParam, InjectedOptionsParam, Application } from '..';
import { type MergePineOptions } from '../util';
import type { ODataOptionsWithoutCount, OptionsToResponse } from 'pinejs-client-core';
declare const getApplicationModel: (deps: InjectedDependenciesParam, opts: InjectedOptionsParam) => {
    _getId: (slugOrUuidOrId: string | number) => Promise<number>;
    /**
     * @summary Get Dashboard URL for a specific application
     * @function getDashboardUrl
     * @memberof balena.models.application
     *
     * @param {Number} id - Application id
     *
     * @returns {String} - Dashboard URL for the specific application
     * @throws Exception if the id is not a finite number
     *
     * @example
     * balena.models.application.get('myorganization/myapp').then(function(application) {
     * 	const dashboardApplicationUrl = balena.models.application.getDashboardUrl(application.id);
     * 	console.log(dashboardApplicationUrl);
     * });
     */
    getDashboardUrl(id: number): string;
    /**
     * @summary Get all applications
     * @name getAll
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Object} [options={}] - extra pine options to use
     * @param {String} [context] - extra access filters, undefined or 'directly_accessible'
     * @fulfil {Object[]} - applications
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getAll().then(function(applications) {
     * 	console.log(applications);
     * });
     */
    getAll<T extends ODataOptionsWithoutCount<Application["Read"]>>(options?: T, context?: "directly_accessible"): Promise<OptionsToResponse<Application["Read"], T, undefined>>;
    /**
     * @summary Get all applications directly accessible by the user
     * @name getAllDirectlyAccessible
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - applications
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getAllDirectlyAccessible().then(function(applications) {
     * 	console.log(applications);
     * });
     */
    getAllDirectlyAccessible<T extends ODataOptionsWithoutCount<Application["Read"]>>(options?: T): Promise<OptionsToResponse<Application["Read"], T, undefined>>;
    /**
     * @summary Get all applications of an organization
     * @name getAllByOrganization
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Number|String} orgHandleOrId - organization handle (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - applications
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getAllByOrganization('myorganization').then(function(applications) {
     * 	console.log(applications);
     * });
     *
     * @example
     * const applications = await sdk.models.application.getAllByOrganization('myorganization', {
     *		$select: ['app_name', 'slug'],
     *		$expand: {
     *			owns__device: {
     *				$select: ['uuid', 'overall_status', 'is_connected_to_vpn', 'api_heartbeat_state'],
     *			},
     *		},
     *	});
     */
    getAllByOrganization<T extends ODataOptionsWithoutCount<Application["Read"]>>(orgHandleOrId: number | string, options?: T): Promise<OptionsToResponse<Application["Read"], T, undefined>>;
    /**
     * @summary Get a single application
     * @name get
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @param {String} [context] - extra access filters, undefined or 'directly_accessible'
     * @fulfil {Object} - application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.get('myorganization/myapp').then(function(application) {
     * 	console.log(application);
     * });
     *
     * @example
     * balena.models.application.get('1bf99a68cf9e4266986e6dec7a6e8f46').then(function(application) {
     * 	console.log(application);
     * });
     *
     * @example
     * balena.models.application.get(123).then(function(application) {
     * 	console.log(application);
     * });
     */
    get<T extends ODataOptionsWithoutCount<Application["Read"]>>(slugOrUuidOrId: string | number, options?: T, context?: "directly_accessible"): Promise<OptionsToResponse<Application["Read"], T, undefined>[number]>;
    /**
     * @summary Get a single application directly accessible by the user
     * @name getDirectlyAccessible
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object} - application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getDirectlyAccessible('myorganization/myapp').then(function(application) {
     * 	console.log(application);
     * });
     *
     * @example
     * balena.models.application.getDirectlyAccessible(123).then(function(application) {
     * 	console.log(application);
     * });
     */
    getDirectlyAccessible<T extends ODataOptionsWithoutCount<Application["Read"]>>(slugOrUuidOrId: string | number, options?: T): Promise<OptionsToResponse<Application["Read"], T, undefined>[number]>;
    /**
     * @summary Get a single application and its devices, along with each device's
     * associated services' essential details
     * @name getWithDeviceServiceDetails
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @description
     * This method does not map exactly to the underlying model: it runs a
     * larger prebuilt query, and reformats it into an easy to use and
     * understand format. If you want more control, or to see the raw model
     * directly, use `application.get(uuidOrId, options)` instead.
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object} - application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getWithDeviceServiceDetails('myorganization/myapp').then(function(device) {
     * 	console.log(device);
     * })
     *
     * @example
     * balena.models.application.getWithDeviceServiceDetails(123).then(function(device) {
     * 	console.log(device);
     * })
     */
    getWithDeviceServiceDetails<T extends ODataOptionsWithoutCount<Application["Read"]>>(slugOrUuidOrId: string | number, options?: T): Promise<OptionsToResponse<{
        created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
        id: import("@balena/sbvr-types").Types["Integer"]["Read"];
        actor: {
            __id: import("..").Actor["Read"]["id"];
        } | [import("..").Actor["Read"]];
        should_track_latest_release: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_of__class: "fleet" | "block" | "app";
        organization: {
            __id: import("..").Organization["Read"]["id"];
        } | [import("..").Organization["Read"]];
        app_name: import("@balena/sbvr-types").Types["Text"]["Read"];
        slug: import("@balena/sbvr-types").Types["Short Text"]["Read"];
        is_for__device_type: {
            __id: import("..").DeviceType["Read"]["id"];
        } | [import("..").DeviceType["Read"]];
        should_be_running__release: {
            __id: import("..").Release["Read"]["id"];
        } | [import("..").Release["Read"]] | [] | null;
        application_type: {
            __id: import("..").ApplicationType["Read"]["id"];
        } | [import("..").ApplicationType["Read"]];
        is_host: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_archived: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        uuid: import("@balena/sbvr-types").Types["Text"]["Read"];
        is_public: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_accessible_by_support_until__date: import("@balena/sbvr-types").Types["Date Time"]["Read"] | null;
        is_discoverable: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_stored_at__repository_url: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
        application__has__env_var_name?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application_environment_variable?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application__has__config_var_name?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application_config_variable?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application__has__service_name?: Array<import("..").Service["Read"]>;
        service?: Array<import("..").Service["Read"]>;
        application__has__tag_key?: Array<import("..").ApplicationTag["Read"]>;
        application_tag?: Array<import("..").ApplicationTag["Read"]>;
        application__has__domain?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application_domain_mapping?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application__has__build_var_name?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        build_environment_variable?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        owns__device?: Array<import("..").Device["Read"]>;
        owns__release?: Array<import("..").Release["Read"]>;
        owns__public_device?: Array<import("..").PublicDevice["Read"]>;
        team__grants_access_to__application?: Array<import("..").TeamApplicationAccess["Read"]>;
        team_application_access?: Array<import("..").TeamApplicationAccess["Read"]>;
        is_accessible_by__team?: Array<import("..").TeamApplicationAccess["Read"]>;
        user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        invitee__is_invited_to__application?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        application_invite?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        invitee?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        is_directly_accessible_by__user?: Array<import("..").UserHasDirectAccessToApplication["Read"]>;
        can_use__application_as_host?: Array<import("..").ApplicationCanUseApplicationAsHost["Read"]>;
    }, MergePineOptions<{
        created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
        id: import("@balena/sbvr-types").Types["Integer"]["Read"];
        actor: {
            __id: import("..").Actor["Read"]["id"];
        } | [import("..").Actor["Read"]];
        should_track_latest_release: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_of__class: "fleet" | "block" | "app";
        organization: {
            __id: import("..").Organization["Read"]["id"];
        } | [import("..").Organization["Read"]];
        app_name: import("@balena/sbvr-types").Types["Text"]["Read"];
        slug: import("@balena/sbvr-types").Types["Short Text"]["Read"];
        is_for__device_type: {
            __id: import("..").DeviceType["Read"]["id"];
        } | [import("..").DeviceType["Read"]];
        should_be_running__release: {
            __id: import("..").Release["Read"]["id"];
        } | [import("..").Release["Read"]] | [] | null;
        application_type: {
            __id: import("..").ApplicationType["Read"]["id"];
        } | [import("..").ApplicationType["Read"]];
        is_host: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_archived: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        uuid: import("@balena/sbvr-types").Types["Text"]["Read"];
        is_public: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_accessible_by_support_until__date: import("@balena/sbvr-types").Types["Date Time"]["Read"] | null;
        is_discoverable: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_stored_at__repository_url: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
        application__has__env_var_name?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application_environment_variable?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application__has__config_var_name?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application_config_variable?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application__has__service_name?: Array<import("..").Service["Read"]>;
        service?: Array<import("..").Service["Read"]>;
        application__has__tag_key?: Array<import("..").ApplicationTag["Read"]>;
        application_tag?: Array<import("..").ApplicationTag["Read"]>;
        application__has__domain?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application_domain_mapping?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application__has__build_var_name?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        build_environment_variable?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        owns__device?: Array<import("..").Device["Read"]>;
        owns__release?: Array<import("..").Release["Read"]>;
        owns__public_device?: Array<import("..").PublicDevice["Read"]>;
        team__grants_access_to__application?: Array<import("..").TeamApplicationAccess["Read"]>;
        team_application_access?: Array<import("..").TeamApplicationAccess["Read"]>;
        is_accessible_by__team?: Array<import("..").TeamApplicationAccess["Read"]>;
        user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        invitee__is_invited_to__application?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        application_invite?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        invitee?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        is_directly_accessible_by__user?: Array<import("..").UserHasDirectAccessToApplication["Read"]>;
        can_use__application_as_host?: Array<import("..").ApplicationCanUseApplicationAsHost["Read"]>;
    }, {
        readonly $expand: {
            readonly owns__device: {
                readonly $expand: {
                    readonly image_install: {
                        readonly $select: readonly ["id", "download_progress", "status", "install_date"];
                        readonly $filter: {
                            readonly status: {
                                readonly $ne: "deleted";
                            };
                        };
                        readonly $expand: {
                            readonly installs__image: {
                                readonly $select: readonly ["id"];
                                readonly $expand: {
                                    readonly is_a_build_of__service: {
                                        readonly $select: readonly ["id", "service_name"];
                                    };
                                };
                            };
                            readonly is_provided_by__release: {
                                readonly $select: readonly ["id", "commit", "raw_version"];
                                readonly $expand: {
                                    readonly belongs_to__application: {
                                        readonly $select: readonly ["slug"];
                                    };
                                };
                            };
                        };
                    };
                };
            };
        };
    }, T>, string | number> & {
        owns__device: import("..").DeviceWithServiceDetails[];
    }>;
    /**
     * @summary Get a single application using the appname and the handle of the owning organization
     * @name getAppByName
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String} appName - application name
     * @param {Object} [options={}] - extra pine options to use
     * @param {String} [context] - extra access filters, undefined or 'directly_accessible'
     * @fulfil {Object} - application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getAppByName('MyApp').then(function(application) {
     * 	console.log(application);
     * });
     */
    getAppByName<T extends ODataOptionsWithoutCount<Application["Read"]>>(appName: string, options?: T, context?: "directly_accessible"): Promise<OptionsToResponse<Application["Read"], T, undefined>[number]>;
    /**
     * @summary Check if an application exists
     * @name has
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @fulfil {Boolean} - has application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.has('myorganization/myapp').then(function(hasApp) {
     * 	console.log(hasApp);
     * });
     *
     * @example
     * balena.models.application.has(123).then(function(hasApp) {
     * 	console.log(hasApp);
     * });
     */
    has: (slugOrUuidOrId: string | number) => Promise<boolean>;
    /**
     * @summary Check if the user has access to any applications
     * @name hasAny
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @fulfil {Boolean} - has any applications
     * @returns {Promise}
     *
     * @example
     * balena.models.application.hasAny().then(function(hasAny) {
     * 	console.log('Has any?', hasAny);
     * });
     */
    hasAny: () => Promise<boolean>;
    /**
     * @summary Create an application
     * @name create
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Object} options - application creation parameters
     * @param {String} options.name - application name
     * @param {(String|Number)} options.organization - handle (string) or id (number) of the organization that the application will belong to or null
     * @param {String} [options.uuid] - application uuid
     * @param {String} [options.applicationClass] - application class: 'app' | 'fleet' | 'block'
     * @param {String} options.deviceType - device type slug
     *
     * @fulfil {Object} - application
     * @returns {Promise}
     *
     * @example
     * balena.models.application.create({ name: 'My App', organization: 'myorganization', deviceType: 'raspberry-pi' }).then(function(application) {
     * 	console.log(application);
     * });
     *
     * @example
     * balena.models.application.create({ name: 'My Block', organization: 'myorganization', applicationClass: 'block', deviceType: 'raspberry-pi' }).then(function(application) {
     * 	console.log(application);
     * });
     */
    create({ name, uuid, applicationClass, deviceType, organization, }: {
        name: string;
        uuid?: string;
        applicationClass?: "app" | "fleet" | "block";
        deviceType: string;
        organization: number | string;
    }): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
        created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
        id: import("@balena/sbvr-types").Types["Integer"]["Read"];
        actor: {
            __id: import("..").Actor["Read"]["id"];
        } | [import("..").Actor["Read"]];
        should_track_latest_release: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_of__class: "fleet" | "block" | "app";
        organization: {
            __id: import("..").Organization["Read"]["id"];
        } | [import("..").Organization["Read"]];
        app_name: import("@balena/sbvr-types").Types["Text"]["Read"];
        slug: import("@balena/sbvr-types").Types["Short Text"]["Read"];
        is_for__device_type: {
            __id: import("..").DeviceType["Read"]["id"];
        } | [import("..").DeviceType["Read"]];
        should_be_running__release: {
            __id: import("..").Release["Read"]["id"];
        } | [import("..").Release["Read"]] | [] | null;
        application_type: {
            __id: import("..").ApplicationType["Read"]["id"];
        } | [import("..").ApplicationType["Read"]];
        is_host: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_archived: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        uuid: import("@balena/sbvr-types").Types["Text"]["Read"];
        is_public: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_accessible_by_support_until__date: import("@balena/sbvr-types").Types["Date Time"]["Read"] | null;
        is_discoverable: import("@balena/sbvr-types").Types["Boolean"]["Read"];
        is_stored_at__repository_url: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
        application__has__env_var_name?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application_environment_variable?: Array<import("..").ApplicationEnvironmentVariable["Read"]>;
        application__has__config_var_name?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application_config_variable?: Array<import("..").ApplicationConfigVariable["Read"]>;
        application__has__service_name?: Array<import("..").Service["Read"]>;
        service?: Array<import("..").Service["Read"]>;
        application__has__tag_key?: Array<import("..").ApplicationTag["Read"]>;
        application_tag?: Array<import("..").ApplicationTag["Read"]>;
        application__has__domain?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application_domain_mapping?: Array<import("..").ApplicationDomainMapping["Read"]>;
        application__has__build_var_name?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        build_environment_variable?: Array<import("..").BuildEnvironmentVariable["Read"]>;
        owns__device?: Array<import("..").Device["Read"]>;
        owns__release?: Array<import("..").Release["Read"]>;
        owns__public_device?: Array<import("..").PublicDevice["Read"]>;
        team__grants_access_to__application?: Array<import("..").TeamApplicationAccess["Read"]>;
        team_application_access?: Array<import("..").TeamApplicationAccess["Read"]>;
        is_accessible_by__team?: Array<import("..").TeamApplicationAccess["Read"]>;
        user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user__is_member_of__application?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        includes__user_application_membership?: Array<import("..").UserIsMemberOfApplication["Read"]>;
        invitee__is_invited_to__application?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        application_invite?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        invitee?: Array<import("..").InviteeIsInvitedToApplication["Read"]>;
        is_directly_accessible_by__user?: Array<import("..").UserHasDirectAccessToApplication["Read"]>;
        can_use__application_as_host?: Array<import("..").ApplicationCanUseApplicationAsHost["Read"]>;
    }>>;
    /**
     * @summary Remove application
     * @name remove
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number|Number[]} slugOrUuidOrIdOrIds - application slug (string), uuid (string) or id (number) or array of ids
     * @returns {Promise}
     *
     * @example
     * balena.models.application.remove('myorganization/myapp');
     *
     * @example
     * balena.models.application.remove(123);
     */
    remove: (slugOrUuidOrIdOrIds: string | number | number[]) => Promise<void>;
    /**
     * @summary Rename application
     * @name rename
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {String} newName - new application name (string)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.rename('myorganization/myapp', 'MyRenamedApp');
     *
     * @example
     * balena.models.application.rename(123, 'MyRenamedApp');
     */
    rename: (slugOrUuidOrId: string | number, newAppName: string) => Promise<void>;
    /**
     * @summary Restart application
     * @name restart
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.restart('myorganization/myapp');
     *
     * @example
     * balena.models.application.restart(123);
     */
    restart: (slugOrUuidOrId: string | number) => Promise<void>;
    /**
     * @summary Generate a device provisioning key for a specific application
     * @name generateProvisioningKey
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Object} generateProvisioningKeyParams - an object containing the parameters for the provisioning key generation
     * @param {String|Number} generateProvisioningKeyParams.slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {String} generateProvisioningKeyParams.keyExpiryDate - Expiry Date for provisioning key
     * @param {String} [generateProvisioningKeyParams.keyName] - Provisioning key name
     * @param {String} [generateProvisioningKeyParams.keyDescription] - Description for provisioning key
     * @fulfil {String} - device provisioning key
     * @returns {Promise}
     *
     * @example
     * balena.models.application.generateProvisioningKey({slugOrUuidOrId: 'myorganization/myapp', keyExpiryDate: '2030-10-12'}).then(function(key) {
     * 	console.log(key);
     * });
     *
     * @example
     * balena.models.application.generateProvisioningKey({slugOrUuidOrId: 123, keyExpiryDate: '2030-10-12'}).then(function(key) {
     * 	console.log(key);
     * });
     *
     * @example
     * balena.models.application.generateProvisioningKey({slugOrUuidOrId: 123, keyExpiryDate: '2030-10-12', keyName: 'api key name', keyDescription: 'api key long description'}).then(function(key) {
     * 	console.log(key);
     * });
     */
    generateProvisioningKey: ({ slugOrUuidOrId, keyExpiryDate, keyName, keyDescription, }: {
        slugOrUuidOrId: string | number;
        keyExpiryDate: string | null;
        keyName?: string;
        keyDescription?: string;
    }) => Promise<string>;
    /**
     * @summary Purge devices by application id
     * @name purge
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Number} appId - application id
     * @returns {Promise}
     *
     * @example
     * balena.models.application.purge(123);
     */
    purge: (appId: number) => Promise<void>;
    /**
     * @summary Shutdown devices by application id
     * @name shutdown
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Number} appId - application id
     * @param {Object} [options] - options
     * @param {Boolean} [options.force=false] - override update lock
     * @returns {Promise}
     *
     * @example
     * balena.models.application.shutdown(123);
     */
    shutdown: (appId: number, options?: {
        force?: boolean;
    }) => Promise<void>;
    /**
     * @summary Reboot devices by application id
     * @name reboot
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {Number} appId - application id
     * @param {Object} [options] - options
     * @param {Boolean} [options.force=false] - override update lock
     * @returns {Promise}
     *
     * @example
     * balena.models.application.reboot(123);
     */
    reboot: (appId: number, options?: {
        force?: boolean;
    }) => Promise<void>;
    /**
     * @summary Get whether the application is configured to receive updates whenever a new release is available
     * @name willTrackNewReleases
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @fulfil {Boolean} - is tracking the latest release
     * @returns {Promise}
     *
     * @example
     * balena.models.application.willTrackNewReleases('myorganization/myapp').then(function(isEnabled) {
     * 	console.log(isEnabled);
     * });
     *
     * @example
     * balena.models.application.willTrackNewReleases(123).then(function(isEnabled) {
     * 	console.log(isEnabled);
     * });
     */
    willTrackNewReleases: (slugOrUuidOrId: string | number) => Promise<boolean>;
    /**
     * @summary Get whether the application is up to date and is tracking the latest finalized release for updates
     * @name isTrackingLatestRelease
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @fulfil {Boolean} - is tracking the latest release
     * @returns {Promise}
     *
     * @example
     * balena.models.application.isTrackingLatestRelease('myorganization/myapp').then(function(isEnabled) {
     * 	console.log(isEnabled);
     * });
     *
     * @example
     * balena.models.application.isTrackingLatestRelease(123).then(function(isEnabled) {
     * 	console.log(isEnabled);
     * });
     */
    isTrackingLatestRelease: (slugOrUuidOrId: string | number) => Promise<boolean>;
    /**
     * @summary Set a specific application to run a particular release
     * @name pinToRelease
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @description Configures the application to run a particular release
     * and not get updated when the latest release changes.
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {String} fullReleaseHash - the hash of a successful release (string)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.pinToRelease('myorganization/myapp', 'f7caf4ff80114deeaefb7ab4447ad9c661c50847').then(function() {
     * 	...
     * });
     *
     * @example
     * balena.models.application.pinToRelease(123, 'f7caf4ff80114deeaefb7ab4447ad9c661c50847').then(function() {
     * 	...
     * });
     */
    pinToRelease: (slugOrUuidOrId: string | number, fullReleaseHash: string) => Promise<void>;
    /**
     * @summary Get the hash of the current release for a specific application
     * @name getTargetReleaseHash
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @fulfil {String|undefined} - The release hash of the current release
     * @returns {Promise}
     *
     * @example
     * balena.models.application.getTargetReleaseHash('myorganization/myapp').then(function(release) {
     * 	console.log(release);
     * });
     *
     * @example
     * balena.models.application.getTargetReleaseHash(123).then(function(release) {
     * 	console.log(release);
     * });
     *
     * @example
     * balena.models.application.getTargetReleaseHash('myorganization/myapp', function(release) {
     * 	console.log(release);
     * });
     */
    getTargetReleaseHash: (slugOrUuidOrId: string | number) => Promise<string | undefined>;
    /**
     * @summary Configure a specific application to track the latest finalized available release
     * @name trackLatestRelease
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @description The application's current release will be updated with each new successfully built release.
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.trackLatestRelease('myorganization/myapp').then(function() {
     * 	...
     * });
     *
     * @example
     * balena.models.application.trackLatestRelease(123).then(function() {
     * 	...
     * });
     */
    trackLatestRelease: (slugOrUuidOrId: string | number) => Promise<void>;
    /**
     * @summary Enable device urls for all devices that belong to an application
     * @name enableDeviceUrls
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.enableDeviceUrls('myorganization/myapp');
     *
     * @example
     * balena.models.application.enableDeviceUrls(123);
     */
    enableDeviceUrls: (slugOrUuidOrId: string | number) => Promise<void>;
    /**
     * @summary Disable device urls for all devices that belong to an application
     * @name disableDeviceUrls
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.disableDeviceUrls('myorganization/myapp');
     *
     * @example
     * balena.models.application.disableDeviceUrls(123);
     */
    disableDeviceUrls: (slugOrUuidOrId: string | number) => Promise<void>;
    /**
     * @summary Grant support access to an application until a specified time
     * @name grantSupportAccess
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @param {Number} expiryTimestamp - a timestamp in ms for when the support access will expire
     * @returns {Promise}
     *
     * @example
     * balena.models.application.grantSupportAccess('myorganization/myapp', Date.now() + 3600 * 1000);
     *
     * @example
     * balena.models.application.grantSupportAccess(123, Date.now() + 3600 * 1000);
     */
    grantSupportAccess(slugOrUuidOrId: string | number, expiryTimestamp: number): Promise<void>;
    /**
     * @summary Revoke support access to an application
     * @name revokeSupportAccess
     * @public
     * @function
     * @memberof balena.models.application
     *
     * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
     * @returns {Promise}
     *
     * @example
     * balena.models.application.revokeSupportAccess('myorganization/myapp');
     *
     * @example
     * balena.models.application.revokeSupportAccess(123);
     */
    revokeSupportAccess: (slugOrUuidOrId: string | number) => Promise<void>;
    /**
     * @namespace balena.models.application.tags
     * @memberof balena.models.application
     */
    tags: {
        /**
         * @summary Get all application tags for an application
         * @name getAllByApplication
         * @public
         * @function
         * @memberof balena.models.application.tags
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - application tags
         * @returns {Promise}
         *
         * @example
         * balena.models.application.tags.getAllByApplication('myorganization/myapp').then(function(tags) {
         * 	console.log(tags);
         * });
         *
         * @example
         * balena.models.application.tags.getAllByApplication(999999).then(function(tags) {
         * 	console.log(tags);
         * });
         */
        getAllByApplication: <O extends ODataOptionsWithoutCount<{
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            tag_key: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }>>(parentParam: string | number | Record<string, unknown>, options?: O | undefined) => Promise<OptionsToResponse<{
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            tag_key: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }, O, undefined>>;
        /**
         * @summary Set an application tag
         * @name set
         * @public
         * @function
         * @memberof balena.models.application.tags
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} tagKey - tag key
         * @param {String|undefined} value - tag value
         *
         * @returns {Promise}
         *
         * @example
         * balena.models.application.tags.set('myorganization/myapp', 'EDITOR', 'vim');
         *
         * @example
         * balena.models.application.tags.set(123, 'EDITOR', 'vim');
         */
        set: (parentParam: string | number | Record<string, unknown>, key: string, value: string) => Promise<void>;
        /**
         * @summary Remove an application tag
         * @name remove
         * @public
         * @function
         * @memberof balena.models.application.tags
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} tagKey - tag key
         * @returns {Promise}
         *
         * @example
         * balena.models.application.tags.remove('myorganization/myapp', 'EDITOR');
         */
        remove: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<void>;
    };
    /**
     * @namespace balena.models.application.configVar
     * @memberof balena.models.application
     */
    configVar: {
        /**
         * @summary Get all config variables for an application
         * @name getAllByApplication
         * @public
         * @function
         * @memberof balena.models.application.configVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - application config variables
         * @returns {Promise}
         *
         * @example
         * balena.models.application.configVar.getAllByApplication('myorganization/myapp').then(function(vars) {
         * 	console.log(vars);
         * });
         *
         * @example
         * balena.models.application.configVar.getAllByApplication(999999).then(function(vars) {
         * 	console.log(vars);
         * });
         */
        getAllByApplication: <O extends ODataOptionsWithoutCount<{
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }>>(parentParam: string | number | Record<string, unknown>, options?: O | undefined) => Promise<OptionsToResponse<{
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }, O, undefined>>;
        /**
         * @summary Get the value of a specific config variable
         * @name get
         * @public
         * @function
         * @memberof balena.models.application.configVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - config variable name
         * @fulfil {String|undefined} - the config variable value (or undefined)
         * @returns {Promise}
         *
         * @example
         * balena.models.application.configVar.get('myorganization/myapp', 'BALENA_VAR').then(function(value) {
         * 	console.log(value);
         * });
         *
         * @example
         * balena.models.application.configVar.get(999999, 'BALENA_VAR').then(function(value) {
         * 	console.log(value);
         * });
         */
        get: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<string | undefined>;
        /**
         * @summary Set the value of a specific config variable
         * @name set
         * @public
         * @function
         * @memberof balena.models.application.configVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - config variable name
         * @param {String} value - config variable value
         * @returns {Promise}
         *
         * @example
         * balena.models.application.configVar.set('myorganization/myapp', 'BALENA_VAR', 'newvalue').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.configVar.set(999999, 'BALENA_VAR', 'newvalue').then(function() {
         * 	...
         * });
         */
        set: (parentParam: string | number | Record<string, unknown>, key: string, value: string) => Promise<void>;
        /**
         * @summary Clear the value of a specific config variable
         * @name remove
         * @public
         * @function
         * @memberof balena.models.application.configVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - config variable name
         * @returns {Promise}
         *
         * @example
         * balena.models.application.configVar.remove('myorganization/myapp', 'BALENA_VAR').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.configVar.remove(999999, 'BALENA_VAR').then(function() {
         * 	...
         * });
         */
        remove: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<void>;
    };
    /**
     * @namespace balena.models.application.envVar
     * @memberof balena.models.application
     */
    envVar: {
        /**
         * @summary Get all environment variables for an application
         * @name getAllByApplication
         * @public
         * @function
         * @memberof balena.models.application.envVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - application environment variables
         * @returns {Promise}
         *
         * @example
         * balena.models.application.envVar.getAllByApplication('myorganization/myapp').then(function(vars) {
         * 	console.log(vars);
         * });
         *
         * @example
         * balena.models.application.envVar.getAllByApplication(999999).then(function(vars) {
         * 	console.log(vars);
         * });
         */
        getAllByApplication: <O extends ODataOptionsWithoutCount<{
            created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }>>(parentParam: string | number | Record<string, unknown>, options?: O | undefined) => Promise<OptionsToResponse<{
            created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }, O, undefined>>;
        /**
         * @summary Get the value of a specific environment variable
         * @name get
         * @public
         * @function
         * @memberof balena.models.application.envVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - environment variable name
         * @fulfil {String|undefined} - the environment variable value (or undefined)
         * @returns {Promise}
         *
         * @example
         * balena.models.application.envVar.get('myorganization/myapp', 'VAR').then(function(value) {
         * 	console.log(value);
         * });
         *
         * @example
         * balena.models.application.envVar.get(999999, 'VAR').then(function(value) {
         * 	console.log(value);
         * });
         */
        get: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<string | undefined>;
        /**
         * @summary Set the value of a specific environment variable
         * @name set
         * @public
         * @function
         * @memberof balena.models.application.envVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - environment variable name
         * @param {String} value - environment variable value
         * @returns {Promise}
         *
         * @example
         * balena.models.application.envVar.set('myorganization/myapp', 'VAR', 'newvalue').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.envVar.set(999999, 'VAR', 'newvalue').then(function() {
         * 	...
         * });
         */
        set: (parentParam: string | number | Record<string, unknown>, key: string, value: string) => Promise<void>;
        /**
         * @summary Clear the value of a specific environment variable
         * @name remove
         * @public
         * @function
         * @memberof balena.models.application.envVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - environment variable name
         * @returns {Promise}
         *
         * @example
         * balena.models.application.envVar.remove('myorganization/myapp', 'VAR').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.envVar.remove(999999, 'VAR').then(function() {
         * 	...
         * });
         */
        remove: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<void>;
    };
    /**
     * @namespace balena.models.application.buildVar
     * @memberof balena.models.application
     */
    buildVar: {
        /**
         * @summary Get all build environment variables for an application
         * @name getAllByApplication
         * @public
         * @function
         * @memberof balena.models.application.buildVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - application build environment variables
         * @returns {Promise}
         *
         * @example
         * balena.models.application.buildVar.getAllByApplication('myorganization/myapp').then(function(vars) {
         * 	console.log(vars);
         * });
         *
         * @example
         * balena.models.application.buildVar.getAllByApplication(999999).then(function(vars) {
         * 	console.log(vars);
         * });
         */
        getAllByApplication: <O extends ODataOptionsWithoutCount<{
            created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }>>(parentParam: string | number | Record<string, unknown>, options?: O | undefined) => Promise<OptionsToResponse<{
            created_at: import("@balena/sbvr-types").Types["Date Time"]["Read"];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            name: import("@balena/sbvr-types").Types["Short Text"]["Read"];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            value: import("@balena/sbvr-types").Types["Text"]["Read"];
        }, O, undefined>>;
        /**
         * @summary Get the value of a specific build environment variable
         * @name get
         * @public
         * @function
         * @memberof balena.models.application.buildVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - build environment variable name
         * @fulfil {String|undefined} - the build environment variable value (or undefined)
         * @returns {Promise}
         *
         * @example
         * balena.models.application.buildVar.get('myorganization/myapp', 'VAR').then(function(value) {
         * 	console.log(value);
         * });
         *
         * @example
         * balena.models.application.buildVar.get(999999, 'VAR').then(function(value) {
         * 	console.log(value);
         * });
         */
        get: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<string | undefined>;
        /**
         * @summary Set the value of a specific build environment variable
         * @name set
         * @public
         * @function
         * @memberof balena.models.application.buildVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - build environment variable name
         * @param {String} value - build environment variable value
         * @returns {Promise}
         *
         * @example
         * balena.models.application.buildVar.set('myorganization/myapp', 'VAR', 'newvalue').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.buildVar.set(999999, 'VAR', 'newvalue').then(function() {
         * 	...
         * });
         */
        set: (parentParam: string | number | Record<string, unknown>, key: string, value: string) => Promise<void>;
        /**
         * @summary Clear the value of a specific build environment variable
         * @name remove
         * @public
         * @function
         * @memberof balena.models.application.buildVar
         *
         * @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
         * @param {String} key - build environment variable name
         * @returns {Promise}
         *
         * @example
         * balena.models.application.buildVar.remove('myorganization/myapp', 'VAR').then(function() {
         * 	...
         * });
         *
         * @example
         * balena.models.application.buildVar.remove(999999, 'VAR').then(function() {
         * 	...
         * });
         */
        remove: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<void>;
    };
    /**
     * @namespace balena.models.application.membership
     * @memberof balena.models.application
     */
    membership: {
        get<T extends ODataOptionsWithoutCount<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }>>(membershipId: number | import("pinejs-client-core").ResourceAlternateKey<Pick<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, "user" | "is_member_of__application">>, options?: T): Promise<OptionsToResponse<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, T, undefined>[number]>;
        getAllByApplication<T extends ODataOptionsWithoutCount<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }>>(slugOrUuidOrId: number | string, options?: T): Promise<OptionsToResponse<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, T, undefined>>;
        getAllByUser<T extends ODataOptionsWithoutCount<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }>>(usernameOrId: number | string, options?: T): Promise<OptionsToResponse<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, T, undefined>>;
        create({ application, username, roleName, }: import("./application-membership").ApplicationMembershipCreationOptions): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }>>;
        changeRole(idOrUniqueKey: number | import("pinejs-client-core").ResourceAlternateKey<Pick<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, "user" | "is_member_of__application">>, roleName: import("..").ApplicationMembershipRole["Read"]["name"]): Promise<void>;
        remove(idOrUniqueKey: number | import("pinejs-client-core").ResourceAlternateKey<Pick<{
            user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
            is_member_of__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            includes__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]];
        }, "user" | "is_member_of__application">>): Promise<void>;
    };
    /**
     * @namespace balena.models.application.invite
     * @memberof balena.models.application
     */
    invite: {
        getAll<T extends ODataOptionsWithoutCount<{
            invitee: {
                __id: import("..").Invitee["Read"]["id"];
            } | [import("..").Invitee["Read"]];
            is_invited_to__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
            is_created_by__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]] | [] | null;
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
        }>>(options?: T): Promise<OptionsToResponse<{
            invitee: {
                __id: import("..").Invitee["Read"]["id"];
            } | [import("..").Invitee["Read"]];
            is_invited_to__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
            is_created_by__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]] | [] | null;
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
        }, T, undefined>>;
        getAllByApplication<T extends ODataOptionsWithoutCount<{
            invitee: {
                __id: import("..").Invitee["Read"]["id"];
            } | [import("..").Invitee["Read"]];
            is_invited_to__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
            is_created_by__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]] | [] | null;
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
        }>>(slugOrUuidOrId: number | string, options?: T): Promise<OptionsToResponse<{
            invitee: {
                __id: import("..").Invitee["Read"]["id"];
            } | [import("..").Invitee["Read"]];
            is_invited_to__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
            is_created_by__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]] | [] | null;
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
        }, T, undefined>>;
        create(slugOrUuidOrId: string | number, { invitee, roleName, message }: import("./application-invite").ApplicationInviteOptions): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
            invitee: {
                __id: import("..").Invitee["Read"]["id"];
            } | [import("..").Invitee["Read"]];
            is_invited_to__application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
            id: import("@balena/sbvr-types").Types["Integer"]["Read"];
            application_membership_role: {
                __id: import("..").ApplicationMembershipRole["Read"]["id"];
            } | [import("..").ApplicationMembershipRole["Read"]];
            message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
            is_created_by__user: {
                __id: import("..").User["Read"]["id"];
            } | [import("..").User["Read"]] | [] | null;
            application: {
                __id: Application["Read"]["id"];
            } | [Application["Read"]];
        }>>;
        revoke(id: number): Promise<void>;
        accept(invitationToken: string): Promise<void>;
    };
};
export { getApplicationModel as default };
