import type { Organization, OrganizationMembership, OrganizationMembershipTag, InjectedDependenciesParam, OrganizationMembershipRole } from '..';
import type { ODataOptionsWithoutCount, OptionsToResponse, ResourceAlternateKey } from 'pinejs-client-core';
type ResourceKey = number | ResourceAlternateKey<Pick<OrganizationMembership['Read'], 'user' | 'is_member_of__organization'>>;
declare const getOrganizationMembershipModel: (deps: InjectedDependenciesParam, getOrganization: (handleOrId: string | number, options?: ODataOptionsWithoutCount<Organization["Read"]>) => Promise<Organization["Read"]>) => {
    /**
     * @summary Get a single organization membership
     * @name get
     * @public
     * @function
     * @memberof balena.models.organization.membership
     *
     * @description
     * This method returns a single organization membership.
     *
     * @param {number|Object} membershipId - the id or an object with the unique `user` & `is_member_of__organization` numeric pair of the membership
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object} - organization membership
     * @returns {Promise}
     *
     * @example
     * balena.models.organization.membership.get(5).then(function(memberships) {
     * 	console.log(memberships);
     * });
     */
    get<T extends ODataOptionsWithoutCount<OrganizationMembership["Read"]>>(membershipId: ResourceKey, options?: T): Promise<OptionsToResponse<OrganizationMembership["Read"], T, undefined>[number]>;
    /**
     * @summary Get all memberships by organization
     * @name getAllByOrganization
     * @public
     * @function
     * @memberof balena.models.organization.membership
     *
     * @description
     * This method returns all organization memberships for a specific organization.
     *
     * @param {String|Number} handleOrId - organization handle (string) or id (number).
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - organization memberships
     * @returns {Promise}
     *
     * @example
     * balena.models.organization.membership.getAllByOrganization('MyOrg').then(function(memberships) {
     * 	console.log(memberships);
     * });
     *
     * @example
     * balena.models.organization.membership.getAllByOrganization(123).then(function(memberships) {
     * 	console.log(memberships);
     * });
     */
    getAllByOrganization<T extends ODataOptionsWithoutCount<OrganizationMembership["Read"]>>(handleOrId: number | string, options?: T): Promise<OptionsToResponse<OrganizationMembership["Read"], T, undefined>>;
    /**
     * @summary Get all memberships by user
     * @name getAllByUser
     * @public
     * @function
     * @memberof balena.models.organization.membership
     *
     * @description
     * This method returns all organization memberships for a specific user.
     *
     * @param {String|Number} usernameOrId - the user's username (string) or id (number)
     * @param {Object} [options={}] - extra pine options to use
     * @fulfil {Object[]} - organization memberships
     * @returns {Promise}
     *
     * @example
     * balena.models.organization.membership.getAllByUser('balena_os').then(function(memberships) {
     * 	console.log(memberships);
     * });
     *
     * @example
     * balena.models.organization.membership.getAllByUser(123).then(function(memberships) {
     * 	console.log(memberships);
     * });
     */
    getAllByUser<T extends ODataOptionsWithoutCount<OrganizationMembership["Read"]>>(usernameOrId: number | string, options?: T): Promise<OptionsToResponse<OrganizationMembership["Read"], T, undefined>>;
    /**
     * @summary Changes the role of an organization member
     * @name changeRole
     * @public
     * @function
     * @memberof balena.models.organization.membership
     *
     * @description This method changes the role of an organization member.
     *
     * @param {Number|Object} idOrUniqueKey - the id or an object with the unique `user` & `is_member_of__organization` numeric pair of the membership that will be changed
     * @param {String} roleName - the role name to be granted to the membership
     *
     * @returns {Promise}
     *
     * @example
     * balena.models.organization.membership.changeRole(123, "member").then(function() {
     * 	console.log('OK');
     * });
     *
     * @example
     * balena.models.organization.membership.changeRole({
     * 	user: 123,
     * 	is_member_of__organization: 125,
     * }, "member").then(function() {
     * 	console.log('OK');
     * });
     */
    changeRole(idOrUniqueKey: ResourceKey, roleName: OrganizationMembershipRole["Read"]["name"]): Promise<void>;
    /**
     * @summary Remove a membership
     * @name remove
     * @public
     * @function
     * @memberof balena.models.organization.membership
     *
     * @param {Number} id - organization membership id
     * @returns {Promise}
     *
     * @example
     * balena.models.organization.membership.remove(123);
     *
     * @example
     * balena.models.organization.membership.remove({
     * 	user: 123,
     * 	is_member_of__application: 125,
     * });
     */
    remove(idOrUniqueKey: ResourceKey): Promise<void>;
    /**
     * @namespace balena.models.organization.memberships.tags
     * @memberof balena.models.organization.memberships
     */
    tags: {
        /**
         * @summary Get all organization membership tags for an organization
         * @name getAllByOrganization
         * @public
         * @function
         * @memberof balena.models.organization.memberships.tags
         *
         * @param {String|Number} handleOrId - organization handle (string) or id (number).
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - organization membership tags
         * @returns {Promise}
         *
         * @example
         * balena.models.organization.memberships.tags.getAllByOrganization('MyOrg').then(function(tags) {
         * 	console.log(tags);
         * });
         *
         * @example
         * balena.models.organization.memberships.tags.getAllByOrganization(999999).then(function(tags) {
         * 	console.log(tags);
         * });
         */
        getAllByOrganization<T extends ODataOptionsWithoutCount<OrganizationMembershipTag["Read"]>>(handleOrId: string | number, options?: T): Promise<OptionsToResponse<OrganizationMembershipTag["Read"], T, undefined>>;
        /**
         * @summary Get all organization membership tags for all memberships of an organization
         * @name getAllByOrganizationMembership
         * @public
         * @function
         * @memberof balena.models.organization.memberships.tags
         *
         * @param {Number} membershipId - organization membership id (number).
         * @param {Object} [options={}] - extra pine options to use
         * @fulfil {Object[]} - organization membership tags
         * @returns {Promise}
         *
         * @example
         * balena.models.organization.memberships.tags.getAllByOrganizationMembership(5).then(function(tags) {
         * 	console.log(tags);
         * });
         */
        getAllByOrganizationMembership: <O extends ODataOptionsWithoutCount<{
            organization_membership: {
                __id: OrganizationMembership["Read"]["id"];
            } | [OrganizationMembership["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"];
            user__is_member_of__organization: {
                __id: OrganizationMembership["Read"]["id"];
            } | [OrganizationMembership["Read"]];
        }>>(parentParam: string | number | Record<string, unknown>, options?: O | undefined) => Promise<OptionsToResponse<{
            organization_membership: {
                __id: OrganizationMembership["Read"]["id"];
            } | [OrganizationMembership["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"];
            user__is_member_of__organization: {
                __id: OrganizationMembership["Read"]["id"];
            } | [OrganizationMembership["Read"]];
        }, O, undefined>>;
        /**
         * @summary Set an organization membership tag
         * @name set
         * @public
         * @function
         * @memberof balena.models.organization.memberships.tags
         *
         * @param {Number} handleOrId - organization handle (string) or id (number).
         * @param {String} tagKey - tag key
         * @param {String|undefined} value - tag value
         *
         * @returns {Promise}
         *
         * @example
         * balena.models.organization.memberships.tags.set(5, 'EDITOR', 'vim');
         */
        set: (parentParam: string | number | Record<string, unknown>, key: string, value: string) => Promise<void>;
        /**
         * @summary Remove an organization membership tag
         * @name remove
         * @public
         * @function
         * @memberof balena.models.organization.memberships.tags
         *
         * @param {Number} handleOrId - organization handle (string) or id (number).
         * @param {String} tagKey - tag key
         * @returns {Promise}
         *
         * @example
         * balena.models.organization.memberships.tags.remove(5, 'EDITOR');
         */
        remove: (parentParam: string | number | Record<string, unknown>, key: string) => Promise<void>;
    };
};
export default getOrganizationMembershipModel;
