/**
 * 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 { ChannelOwner } from './channelOwner';
import { Events } from './events';
export class Debugger extends ChannelOwner {
    _pausedDetails = null;
    static from(channel) {
        return channel._object;
    }
    constructor(parent, type, guid, initializer) {
        super(parent, type, guid, initializer);
        this._channel.on('pausedStateChanged', ({ pausedDetails }) => {
            this._pausedDetails = pausedDetails ?? null;
            this.emit(Events.Debugger.PausedStateChanged);
        });
    }
    async requestPause() {
        await this._channel.requestPause();
    }
    async resume() {
        await this._channel.resume();
    }
    async next() {
        await this._channel.next();
    }
    async runTo(location) {
        await this._channel.runTo({ location });
    }
    pausedDetails() {
        return this._pausedDetails;
    }
}
//# sourceMappingURL=debugger.js.map