declare module Kubernetes { class consts { NAMESPACE_STORAGE_KEY: string; } var Constants: consts; interface ApiLocation { proto?: string; hostPort: string; prefix: string; } interface ApiLocations { openshift?: ApiLocation; k8s?: ApiLocation; } interface KubernetesConfig { master_uri?: string; api?: ApiLocations; openshift?: OpenShiftOAuthConfig; google?: GoogleOAuthConfig; keycloak?: KeyCloakAuthConfig; } interface OpenShiftOAuthConfig { oauth_authorize_uri: string; oauth_client_id: string; } interface GoogleOAuthConfig { authenticationURI: string; authorizationURI: string; clientId: string; clientSecret: string; redirectURI: string; scope: string; tokenURI?: string; } interface KeyCloakAuthConfig { oauth_authorize_uri: string; oauth_client_id: string; } interface KubernetesState { namespaces: Array; selectedNamespace: string; } class WatchTypes { static ENDPOINTS: string; static EVENTS: string; static NAMESPACES: string; static NODES: string; static PERSISTENT_VOLUMES: string; static PERSISTENT_VOLUME_CLAIMS: string; static PODS: string; static REPLICATION_CONTROLLERS: string; static RESOURCE_QUOTAS: string; static OAUTH_CLIENTS: string; static SECRETS: string; static SERVICES: string; static SERVICE_ACCOUNTS: string; static TEMPLATES: string; static ROUTES: string; static BUILD_CONFIGS: string; static BUILDS: string; static DEPLOYMENT_CONFIGS: string; static IMAGE_STREAMS: string; static POLICIES: string; static POLICY_BINDINGS: string; static PROJECTS: string; static ROLE_BINDINGS: string; static ROLES: string; } class NamespacedTypes { static k8sTypes: Array; static osTypes: Array; } class WatchActions { static ANY: string; static ADDED: string; static MODIFIED: string; static DELETED: string; } interface ObjectMap { [uid: string]: any; } interface WatcherService { hasWebSocket: boolean; addCustomizer: (type: string, customizer: (obj: any) => void) => void; getTypes: () => Array; getNamespace: () => string; setNamespace: (namespace: string) => void; getObjects: (type: string) => Array; getObjectMap: (type: string) => ObjectMap; addAction: (type: string, action: string, fn: (obj: any) => void) => void; registerListener: (fn: (objects: ObjectMap) => void) => void; registerCustomUrlFunction: (kind: string, url: (kind: string) => string) => void; } interface KubePod { id: string; namespace: string; metadata: any; $replicas: number; } }