/**
 * Copyright (c) Microsoft Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import type * as fs from 'fs';
import type * as path from 'path';
import type { Readable, Writable } from 'stream';
import type { Colors } from '@isomorphic/colors';
import type * as channels from '@protocol/channels';
export type Zone = {
    push(data: unknown): Zone;
    pop(): Zone;
    run<R>(func: () => R): R;
    data<T>(): T | undefined;
};
export type Platform = {
    name: 'node' | 'web' | 'empty';
    boxedStackPrefixes: () => string[];
    calculateSha1: (text: string) => Promise<string>;
    colors: Colors;
    coreDir?: string;
    createGuid: () => string;
    defaultMaxListeners: () => number;
    env: Record<string, string | undefined>;
    fs: () => typeof fs;
    inspectCustom: symbol | undefined;
    isDebugMode: () => boolean;
    isJSDebuggerAttached: () => boolean;
    isLogEnabled: (name: 'api' | 'channel') => boolean;
    isUnderTest: () => boolean;
    log: (name: 'api' | 'channel', message: string | Error | object) => void;
    path: () => typeof path;
    pathSeparator: string;
    showInternalStackFrames: () => boolean;
    streamFile: (path: string, writable: Writable) => Promise<void>;
    streamReadable: (channel: channels.StreamChannel) => Readable;
    streamWritable: (channel: channels.WritableStreamChannel) => Writable;
    zones: {
        empty: Zone;
        current: () => Zone;
    };
};
export declare const emptyPlatform: Platform;
//# sourceMappingURL=platform.d.ts.map