import type { DeviceOverallStatus } from './device-overall-status';
export type { DeviceOverallStatus } from './device-overall-status';
import type { Contract } from './contract';
import type { NavigationResource, OptionalNavigationResource, ReverseNavigationResource, ConceptTypeNavigationResource, WebResource } from '../../typings/pinejs-client-core';
import type { AnyObject } from '../../typings/utils';
type JsonType = AnyObject;
export interface ResourceTypeMap {
    actor: Actor;
    api_key: ApiKey;
    application: Application;
    application__can_use__application_as_host: ApplicationHostedOnApplication;
    application_config_variable: ApplicationVariable;
    application_environment_variable: ApplicationVariable;
    application_membership_role: ApplicationMembershipRole;
    application_tag: ApplicationTag;
    application_type: ApplicationType;
    build_environment_variable: BuildVariable;
    cpu_architecture: CpuArchitecture;
    credit_bundle: CreditBundle;
    device: Device;
    device_config_variable: DeviceVariable;
    device_environment_variable: DeviceVariable;
    device_history: DeviceHistory;
    device_service_environment_variable: DeviceServiceEnvironmentVariable;
    device_tag: DeviceTag;
    device_type: DeviceType;
    device_type_alias: DeviceTypeAlias;
    feature: Feature;
    image: Image;
    image_install: ImageInstall;
    identity_provider: IdentityProvider;
    identity_provider_membership: IdentityProviderMembership;
    invitee: Invitee;
    invitee__is_invited_to__application: ApplicationInvite;
    invitee__is_invited_to__organization: OrganizationInvite;
    organization: Organization;
    organization__has_private_access_to__device_type: OrganizationPrivateDeviceTypeAccess;
    organization_credit_notification: OrganizationCreditNotification;
    organization_membership: OrganizationMembership;
    organization_membership_role: OrganizationMembershipRole;
    organization_membership_tag: OrganizationMembershipTag;
    plan: Plan;
    plan__has__discount_code: PlanDiscountCode;
    plan_addon: PlanAddon;
    plan_feature: PlanFeature;
    public_organization: PublicOrganization;
    public_device: PublicDevice;
    recovery_two_factor: RecoveryTwoFactor;
    release: Release;
    release_tag: ReleaseTag;
    saml_account: SamlAccount;
    service: Service;
    service_environment_variable: ServiceEnvironmentVariable;
    service_install: ServiceInstall;
    service_instance: ServiceInstance;
    social_service_account: SocialServiceAccount;
    subscription: Subscription;
    subscription_addon_discount: SubscriptionAddonDiscount;
    subscription_prepaid_addon: SubscriptionPrepaidAddon;
    support_feature: SupportFeature;
    support_tier: SupportTier;
    team: Team;
    team_application_access: TeamApplicationAccess;
    team_membership: TeamMembership;
    user: User;
    user_profile: UserProfile;
    user__has__public_key: SSHKey;
    user__has_direct_access_to__application: UserHasDirectAccessToApplication;
    user_application_membership: ApplicationMembership;
}
export interface Organization {
    id: number;
    created_at: string;
    name: string;
    handle: string;
    has_past_due_invoice_since__date: string | null;
    is_frozen: boolean;
    is_using__billing_version: 'v1' | 'v2';
    logo_image: WebResource;
    application?: ReverseNavigationResource<Application>;
    /** includes__organization_membership */
    organization_membership?: ReverseNavigationResource<OrganizationMembership>;
    owns__credit_bundle?: ReverseNavigationResource<CreditBundle>;
    owns__team?: ReverseNavigationResource<Team>;
    organization__has_private_access_to__device_type?: ReverseNavigationResource<OrganizationPrivateDeviceTypeAccess>;
    organization_credit_notification?: ReverseNavigationResource<OrganizationCreditNotification>;
    identity_provider_membership?: ReverseNavigationResource<IdentityProviderMembership>;
}
export interface OrganizationCreditNotification {
    id: number;
    created_at: string;
    is_sent_when_below__threshold: number;
    organization: NavigationResource<Organization>;
    owns_credit_notification_for__feature: NavigationResource<Feature>;
}
export interface Team {
    id: number;
    created_at: string;
    name: string;
    belongs_to__organization: NavigationResource<Organization>;
    /** includes__user */
    team_membership?: ReverseNavigationResource<TeamMembership>;
    /** grants_access_to__application */
    team_application_access?: ReverseNavigationResource<TeamApplicationAccess>;
}
export interface RecoveryTwoFactor {
    id: number;
    used_timestamp: string | null;
    belongs_to__user: NavigationResource<User>;
}
export interface Actor {
    id: number;
    is_of__user?: OptionalNavigationResource<User>;
    is_of__application?: OptionalNavigationResource<Application>;
    is_of__device?: OptionalNavigationResource<Device>;
    is_of__public_device?: OptionalNavigationResource<PublicDevice>;
    api_key?: OptionalNavigationResource<ApiKey>;
}
export interface User {
    id: number;
    actor: ConceptTypeNavigationResource<Actor>;
    created_at: string;
    username: string;
    organization_membership?: ReverseNavigationResource<OrganizationMembership>;
    user_application_membership?: ReverseNavigationResource<ApplicationMembership>;
    team_membership?: ReverseNavigationResource<TeamMembership>;
    has_direct_access_to__application?: ReverseNavigationResource<Application>;
    user_profile?: ReverseNavigationResource<UserProfile>;
    owns__social_service_account?: ReverseNavigationResource<SocialServiceAccount>;
    owns__saml_account?: ReverseNavigationResource<SamlAccount>;
}
export interface UserProfile {
    id: number;
    email: string | null;
    first_name: string | null;
    last_name: string | null;
    company: string;
    account_type: string | null;
    has_disabled_newsletter: boolean;
    has_password_set: boolean;
    must_be_verified: boolean;
    is_verified: boolean;
    is_of__user: NavigationResource<User>;
}
export type OrganizationMembershipRoles = 'administrator' | 'member';
export interface OrganizationMembershipRole {
    id: number;
    name: OrganizationMembershipRoles;
}
export interface OrganizationMembership {
    id: number;
    created_at: string;
    user: NavigationResource<User>;
    /** organization */
    is_member_of__organization: NavigationResource<Organization>;
    organization_membership_role: NavigationResource<OrganizationMembershipRole>;
    effective_seat_role: string;
    organization_membership_tag?: ReverseNavigationResource<OrganizationMembershipTag>;
}
export interface TeamMembership {
    id: number;
    created_at: string;
    user: NavigationResource<User>;
    /** team */
    is_member_of__team: NavigationResource<Team>;
}
export interface ApiKey {
    id: number;
    created_at: string;
    name: string;
    description: string | null;
    expiry_date: string | null;
    is_of__actor: NavigationResource<Actor>;
}
export interface Application {
    id: number;
    created_at: string;
    app_name: string;
    actor: ConceptTypeNavigationResource<Actor>;
    slug: string;
    uuid: string;
    is_accessible_by_support_until__date: string;
    is_host: boolean;
    should_track_latest_release: boolean;
    is_public: boolean;
    is_of__class: 'fleet' | 'block' | 'app';
    is_archived: boolean;
    is_discoverable: boolean;
    is_stored_at__repository_url: string | null;
    public_organization: OptionalNavigationResource<PublicOrganization>;
    application_type: NavigationResource<ApplicationType>;
    is_for__device_type: NavigationResource<DeviceType>;
    depends_on__application: OptionalNavigationResource<Application>;
    organization: NavigationResource<Organization>;
    should_be_running__release: OptionalNavigationResource<Release>;
    application_config_variable?: ReverseNavigationResource<ApplicationVariable>;
    application_environment_variable?: ReverseNavigationResource<ApplicationVariable>;
    build_environment_variable?: ReverseNavigationResource<BuildVariable>;
    application_tag?: ReverseNavigationResource<ApplicationTag>;
    owns__device?: ReverseNavigationResource<Device>;
    owns__public_device?: ReverseNavigationResource<PublicDevice>;
    owns__release?: ReverseNavigationResource<Release>;
    service?: ReverseNavigationResource<Service>;
    is_depended_on_by__application?: ReverseNavigationResource<Application>;
    is_directly_accessible_by__user?: ReverseNavigationResource<User>;
    user_application_membership?: ReverseNavigationResource<ApplicationMembership>;
    team_application_access?: ReverseNavigationResource<TeamApplicationAccess>;
    can_use__application_as_host?: ReverseNavigationResource<ApplicationHostedOnApplication>;
}
export interface UserHasDirectAccessToApplication {
    user: NavigationResource<User>;
    has_direct_access_to__application: NavigationResource<Application>;
}
export interface PublicOrganization {
    name: string;
    handle: string;
}
export interface PublicDevice {
    latitude: string;
    longitude: string;
    belongs_to__application: NavigationResource<Application>;
    is_of__device_type: NavigationResource<DeviceType>;
    was_recently_online: boolean;
}
export interface Invitee {
    id: number;
    email: string;
}
export interface ApplicationInvite {
    id: number;
    message: string | null;
    application_membership_role: NavigationResource<ApplicationMembershipRole>;
    invitee: NavigationResource<Invitee>;
    is_invited_to__application: NavigationResource<Application>;
}
export interface OrganizationInvite {
    id: number;
    message: string | null;
    organization_membership_role: NavigationResource<OrganizationMembershipRole>;
    invitee: NavigationResource<Invitee>;
    is_invited_to__organization: NavigationResource<Organization>;
}
export interface ApplicationType {
    id: number;
    name: string;
    slug: string;
    description: string | null;
    supports_multicontainer: boolean;
    supports_web_url: boolean;
    is_legacy: boolean;
    requires_payment: boolean;
    needs__os_version_range: string | null;
    maximum_device_count: number | null;
}
export interface ApplicationHostedOnApplication {
    application: NavigationResource<Application>;
    can_use__application_as_host: NavigationResource<Application>;
}
export type ApplicationMembershipRoles = 'developer' | 'safe-developer' | 'operator' | 'safe-operator' | 'observer';
export interface ApplicationMembershipRole {
    id: number;
    name: ApplicationMembershipRoles;
}
export interface ApplicationMembership {
    id: number;
    user: NavigationResource<User>;
    /** application */
    is_member_of__application: NavigationResource<Application>;
    application_membership_role: NavigationResource<ApplicationMembershipRole>;
}
export interface TeamApplicationAccess {
    id: number;
    team: NavigationResource<Team>;
    /** application */
    grants_access_to__application: NavigationResource<Application>;
    application_membership_role: NavigationResource<ApplicationMembershipRole>;
}
export type ReleaseStatus = 'cancelled' | 'error' | 'failed' | 'interrupted' | 'local' | 'running' | 'success' | 'timeout';
export interface ReleaseVersion {
    raw: string;
    major: number;
    minor: number;
    patch: number;
    version: string;
    build: readonly string[];
    prerelease: ReadonlyArray<string | number>;
}
export interface Release {
    id: number;
    created_at: string;
    commit: string;
    composition: JsonType | null;
    contract: JsonType | null;
    status: ReleaseStatus;
    source: string;
    build_log: string | null;
    is_invalidated: boolean;
    start_timestamp: string;
    update_timestamp: string;
    end_timestamp: string | null;
    phase: 'next' | 'current' | 'sunset' | 'end-of-life' | null;
    semver: string;
    semver_major: number;
    semver_minor: number;
    semver_patch: number;
    semver_prerelease: string;
    semver_build: string;
    variant: string;
    revision: number | null;
    known_issue_list: string | null;
    /** This is a computed term */
    raw_version: string;
    /** This is a computed term */
    version: ReleaseVersion;
    is_final: boolean;
    is_finalized_at__date: string | null;
    note: string | null;
    invalidation_reason: string | null;
    is_created_by__user: OptionalNavigationResource<User>;
    belongs_to__application: NavigationResource<Application>;
    release_image?: ReverseNavigationResource<ReleaseImage>;
    should_be_running_on__application?: ReverseNavigationResource<Application>;
    is_running_on__device?: ReverseNavigationResource<Device>;
    is_pinned_to__device?: ReverseNavigationResource<Device>;
    should_operate__device?: ReverseNavigationResource<Device>;
    should_manage__device?: ReverseNavigationResource<Device>;
    release_tag?: ReverseNavigationResource<ReleaseTag>;
}
export interface Device {
    id: number;
    actor: ConceptTypeNavigationResource<Actor>;
    created_at: string;
    modified_at: string;
    custom_latitude: string | null;
    custom_longitude: string | null;
    device_name: string;
    download_progress: number | null;
    ip_address: string | null;
    public_address: string | null;
    mac_address: string | null;
    is_accessible_by_support_until__date: string | null;
    is_connected_to_vpn: boolean;
    is_locked_until__date: string;
    update_status: 'rejected' | 'downloading' | 'downloaded' | 'applying changes' | 'aborted' | 'done' | null;
    last_update_status_event: string | null;
    is_web_accessible: boolean;
    is_active: boolean;
    /** This is a computed term */
    is_frozen: boolean;
    is_online: boolean;
    last_connectivity_event: string | null;
    last_vpn_event: string;
    latitude: string | null;
    local_id: string | null;
    location: string | null;
    longitude: string | null;
    note: string;
    os_variant: string | null;
    os_version: string | null;
    provisioning_progress: number | null;
    provisioning_state: string;
    status: string;
    supervisor_version: string;
    uuid: string;
    api_heartbeat_state: 'online' | 'offline' | 'timeout' | 'unknown';
    changed_api_heartbeat_state_on__date: string | null;
    memory_usage: number | null;
    memory_total: number | null;
    storage_block_device: string | null;
    storage_usage: number | null;
    storage_total: number | null;
    cpu_usage: number | null;
    cpu_temp: number | null;
    cpu_id: string | null;
    is_undervolted: boolean;
    /** This is a computed term */
    overall_status: DeviceOverallStatus;
    /** This is a computed term */
    overall_progress: number | null;
    is_of__device_type: NavigationResource<DeviceType>;
    belongs_to__application: NavigationResource<Application>;
    belongs_to__user: OptionalNavigationResource<User>;
    is_running__release: OptionalNavigationResource<Release>;
    is_pinned_on__release: OptionalNavigationResource<Release>;
    is_managed_by__service_instance: OptionalNavigationResource<ServiceInstance>;
    should_be_operated_by__release: OptionalNavigationResource<Release>;
    should_be_managed_by__release: OptionalNavigationResource<Release>;
    /** This is a computed term that works like: `device.is_pinned_on__release ?? device.belongs_to__application[0].should_be_running__release` */
    should_be_running__release: OptionalNavigationResource<Release>;
    device_config_variable?: ReverseNavigationResource<DeviceVariable>;
    device_environment_variable?: ReverseNavigationResource<DeviceVariable>;
    device_tag?: ReverseNavigationResource<DeviceTag>;
    service_install?: ReverseNavigationResource<ServiceInstall>;
    image_install?: ReverseNavigationResource<ImageInstall>;
}
export interface CpuArchitecture {
    id: number;
    slug: string;
    is_supported_by__device_type?: ReverseNavigationResource<CpuArchitecture>;
}
export interface DeviceType {
    id: number;
    slug: string;
    name: string;
    is_private: boolean;
    logo: string | null;
    contract: Contract | null;
    belongs_to__device_family: OptionalNavigationResource<DeviceFamily>;
    is_default_for__application?: ReverseNavigationResource<Application>;
    is_of__cpu_architecture: NavigationResource<CpuArchitecture>;
    is_accessible_privately_by__organization?: ReverseNavigationResource<Organization>;
    describes__device?: ReverseNavigationResource<Device>;
    device_type_alias?: ReverseNavigationResource<DeviceTypeAlias>;
}
export interface DeviceTypeAlias {
    id: number;
    is_referenced_by__alias: string;
    references__device_type: NavigationResource<DeviceType>;
}
export interface DeviceFamily {
    id: number;
    slug: string;
    name: string;
    is_manufactured_by__device_manufacturer: OptionalNavigationResource<DeviceManufacturer>;
}
export interface DeviceManufacturer {
    id: number;
    slug: string;
    name: string;
}
export interface OrganizationPrivateDeviceTypeAccess {
    id: number;
    organization: NavigationResource<Organization>;
    has_private_access_to__device_type: NavigationResource<DeviceType>;
}
export interface ServiceInstance {
    id: number;
    ip_address: string;
}
export interface Service {
    id: number;
    created_at: string;
    service_name: string;
    application: NavigationResource<Application>;
    is_built_by__image?: ReverseNavigationResource<Image>;
    service_environment_variable?: ReverseNavigationResource<ServiceEnvironmentVariable>;
    device_service_environment_variable?: ReverseNavigationResource<DeviceServiceEnvironmentVariable>;
}
export interface IdentityProvider {
    id: number;
    sso_identifier: string;
    entry_point: string;
    issuer: string;
    certificate: string;
    requires_signed_authn_response: boolean;
    manages__saml_account?: ReverseNavigationResource<SamlAccount>;
    identity_provider_membership?: ReverseNavigationResource<IdentityProviderMembership>;
}
export interface SamlAccount {
    id: number;
    belongs_to__user: NavigationResource<User>;
    was_generated_by__identity_provider: NavigationResource<IdentityProvider>;
    remote_id: string;
    display_name: string | null;
}
export interface IdentityProviderMembership {
    is_authorized_by__identity_provider: NavigationResource<IdentityProvider>;
    id: number;
    grants_access_to__team: OptionalNavigationResource<Team>;
    authorizes__organization: NavigationResource<Organization>;
}
export interface Image {
    id: number;
    created_at: string;
    build_log: string | null;
    contract: Contract | null;
    content_hash: string | null;
    project_type: string | null;
    status: string;
    is_stored_at__image_location: string;
    start_timestamp: string;
    end_timestamp: string | null;
    push_timestamp: string | null;
    image_size: string | null;
    dockerfile: string;
    error_message: string | null;
    is_a_build_of__service: NavigationResource<Service>;
    release_image?: ReverseNavigationResource<ReleaseImage>;
}
export interface ReleaseImage {
    id: number;
    created_at: string;
    image: NavigationResource<Image>;
    is_part_of__release: NavigationResource<Release>;
}
export interface SSHKey {
    title: string;
    public_key: string;
    id: number;
    created_at: string;
    user: NavigationResource<User>;
}
export interface SocialServiceAccount {
    belongs_to__user: NavigationResource<User>;
    display_name: string | null;
    provider: string;
}
export interface ImageInstall {
    id: number;
    download_progress: number | null;
    status: string;
    install_date: string;
    installs__image: NavigationResource<Image>;
    device: NavigationResource<Device>;
    is_provided_by__release: NavigationResource<Release>;
}
export interface ServiceInstall {
    id: number;
    device: NavigationResource<Device>;
    /** service */
    installs__service: NavigationResource<Service>;
    application: NavigationResource<Application>;
    device_service_environment_variable?: ReverseNavigationResource<DeviceServiceEnvironmentVariable>;
}
export interface EnvironmentVariableBase {
    id: number;
    name: string;
    value: string;
}
export interface DeviceServiceEnvironmentVariable extends EnvironmentVariableBase {
    service_install: NavigationResource<ServiceInstall>;
}
export interface ServiceEnvironmentVariable extends EnvironmentVariableBase {
    service: NavigationResource<Service>;
}
export interface DeviceVariable extends EnvironmentVariableBase {
    device: NavigationResource<Device>;
}
export interface ApplicationVariable extends EnvironmentVariableBase {
    application: NavigationResource<Application>;
}
export interface BuildVariable extends EnvironmentVariableBase {
    application: NavigationResource<Application>;
}
export interface ResourceTagBase {
    id: number;
    tag_key: string;
    value: string;
}
export interface ApplicationTag extends ResourceTagBase {
    application: NavigationResource<Application>;
}
export interface DeviceTag extends ResourceTagBase {
    device: NavigationResource<Device>;
}
export interface OrganizationMembershipTag extends ResourceTagBase {
    organization_membership: NavigationResource<OrganizationMembership>;
}
export interface ReleaseTag extends ResourceTagBase {
    release: NavigationResource<Release>;
}
export interface CreditBundle {
    id: number;
    created_at: string;
    is_created_by__user: OptionalNavigationResource<User>;
    original_quantity: number;
    total_balance: number;
    total_cost: number;
    payment_status: 'processing' | 'paid' | 'failed' | 'complimentary' | 'cancelled' | 'refunded';
    belongs_to__organization: NavigationResource<Organization>;
    is_for__feature: NavigationResource<Feature>;
    is_associated_with__invoice_id: string | null;
    error_message: string | null;
}
export interface Feature {
    id: number;
    title: string;
    slug: string;
    billing_code: string | null;
    organization_credit_notification?: ReverseNavigationResource<OrganizationCreditNotification>;
}
export interface SupportFeature {
    id: number;
    feature: ConceptTypeNavigationResource<Feature>;
    support_tier: NavigationResource<SupportTier>;
}
export interface SupportTier {
    id: number;
    title: string;
    slug: string;
    includes_private_support: boolean;
    includes__SLA: string | null;
}
export interface Plan {
    id: number;
    title: string;
    billing_code: string | null;
    monthly_price: number;
    annual_price: number;
    can_self_serve: boolean;
    is_legacy: boolean;
    is_valid_from__date: string | null;
    is_valid_until__date: string | null;
    plan_feature?: ReverseNavigationResource<PlanFeature>;
    offers__plan_addon?: ReverseNavigationResource<PlanAddon>;
    plan__has__discount_code?: ReverseNavigationResource<PlanDiscountCode>;
}
export interface PlanAddon {
    id: number;
    base_price: number;
    can_self_serve: boolean;
    bills_dynamically: boolean;
    offers__feature: NavigationResource<Feature>;
}
export interface PlanDiscountCode {
    id: number;
    discount_code: string;
    plan: NavigationResource<Plan>;
}
export interface PlanFeature {
    id: number;
    quantity: number;
    provides__feature: NavigationResource<Feature>;
}
export type SubscriptionBillingCycle = 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'biennial' | 'triennial' | 'quadrennial' | 'quinquennial';
export interface Subscription {
    id: number;
    starts_on__date: string;
    ends_on__date: string | null;
    discount_percentage: number;
    billing_cycle: SubscriptionBillingCycle;
    origin: string;
    is_active: boolean;
    is_for__organization: NavigationResource<Organization>;
    is_for__plan: NavigationResource<Plan>;
    subscription_addon_discount?: ReverseNavigationResource<SubscriptionAddonDiscount>;
    subscription_prepaid_addon?: ReverseNavigationResource<SubscriptionPrepaidAddon>;
}
export interface SubscriptionPrepaidAddon {
    id: number;
    discount_percentage: number;
    quantity: number;
    starts_on__date: string;
    expires_on__date: string | null;
    is_for__plan_addon: NavigationResource<PlanAddon>;
    is_for__subscription: NavigationResource<Subscription>;
}
export interface SubscriptionAddonDiscount {
    id: number;
    discount_percentage: number;
    discounts__plan_addon: NavigationResource<PlanAddon>;
}
export interface DeviceHistory {
    created_at: string;
    id: number;
    end_timestamp: string | null;
    is_created_by__actor: OptionalNavigationResource<Actor>;
    is_ended_by__actor: OptionalNavigationResource<Actor>;
    tracks__device: NavigationResource<Device>;
    tracks__actor: OptionalNavigationResource<Actor>;
    uuid: string | null;
    belongs_to__application: NavigationResource<Application>;
    is_active: boolean;
    is_running__release: OptionalNavigationResource<Release>;
    should_be_running__release: OptionalNavigationResource<Release>;
    os_version: string | null;
    os_variant: string | null;
    supervisor_version: string | null;
    is_of__device_type: OptionalNavigationResource<DeviceType>;
    should_be_managed_by__release: OptionalNavigationResource<Release>;
}
