// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.transport.RateLimiter;
import io.sentry.protocol.SentryTransaction;
import org.jetbrains.annotations.ApiStatus;
import java.util.List;
import io.sentry.protocol.User;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;

public interface IScopes
{
    boolean isEnabled();
    
    @NotNull
    SentryId captureEvent(@NotNull final SentryEvent p0, @Nullable final Hint p1);
    
    @NotNull
    default SentryId captureEvent(@NotNull final SentryEvent event) {
        return this.captureEvent(event, new Hint());
    }
    
    @NotNull
    default SentryId captureEvent(@NotNull final SentryEvent event, @NotNull final ScopeCallback callback) {
        return this.captureEvent(event, new Hint(), callback);
    }
    
    @NotNull
    SentryId captureEvent(@NotNull final SentryEvent p0, @Nullable final Hint p1, @NotNull final ScopeCallback p2);
    
    @NotNull
    default SentryId captureMessage(@NotNull final String message) {
        return this.captureMessage(message, SentryLevel.INFO);
    }
    
    @NotNull
    SentryId captureMessage(@NotNull final String p0, @NotNull final SentryLevel p1);
    
    @NotNull
    SentryId captureMessage(@NotNull final String p0, @NotNull final SentryLevel p1, @NotNull final ScopeCallback p2);
    
    @NotNull
    default SentryId captureMessage(@NotNull final String message, @NotNull final ScopeCallback callback) {
        return this.captureMessage(message, SentryLevel.INFO, callback);
    }
    
    @NotNull
    default SentryId captureFeedback(@NotNull final Feedback feedback) {
        return this.captureFeedback(feedback, null);
    }
    
    @NotNull
    default SentryId captureFeedback(@NotNull final Feedback feedback, @Nullable final Hint hint) {
        return this.captureFeedback(feedback, hint, null);
    }
    
    @NotNull
    SentryId captureFeedback(@NotNull final Feedback p0, @Nullable final Hint p1, @Nullable final ScopeCallback p2);
    
    @NotNull
    SentryId captureEnvelope(@NotNull final SentryEnvelope p0, @Nullable final Hint p1);
    
    @NotNull
    default SentryId captureEnvelope(@NotNull final SentryEnvelope envelope) {
        return this.captureEnvelope(envelope, new Hint());
    }
    
    @NotNull
    SentryId captureException(@NotNull final Throwable p0, @Nullable final Hint p1);
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable) {
        return this.captureException(throwable, new Hint());
    }
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable, @NotNull final ScopeCallback callback) {
        return this.captureException(throwable, new Hint(), callback);
    }
    
    @NotNull
    SentryId captureException(@NotNull final Throwable p0, @Nullable final Hint p1, @NotNull final ScopeCallback p2);
    
    void captureUserFeedback(@NotNull final UserFeedback p0);
    
    void startSession();
    
    void endSession();
    
    void close();
    
    void close(final boolean p0);
    
    void addBreadcrumb(@NotNull final Breadcrumb p0, @Nullable final Hint p1);
    
    void addBreadcrumb(@NotNull final Breadcrumb p0);
    
    default void addBreadcrumb(@NotNull final String message) {
        this.addBreadcrumb(new Breadcrumb(message));
    }
    
    default void addBreadcrumb(@NotNull final String message, @NotNull final String category) {
        final Breadcrumb breadcrumb = new Breadcrumb(message);
        breadcrumb.setCategory(category);
        this.addBreadcrumb(breadcrumb);
    }
    
    void setLevel(@Nullable final SentryLevel p0);
    
    void setTransaction(@Nullable final String p0);
    
    void setUser(@Nullable final User p0);
    
    void setFingerprint(@NotNull final List<String> p0);
    
    void clearBreadcrumbs();
    
    void setTag(@Nullable final String p0, @Nullable final String p1);
    
    void removeTag(@Nullable final String p0);
    
    void setExtra(@Nullable final String p0, @Nullable final String p1);
    
    void removeExtra(@Nullable final String p0);
    
    @NotNull
    SentryId getLastEventId();
    
    @NotNull
    ISentryLifecycleToken pushScope();
    
    @NotNull
    ISentryLifecycleToken pushIsolationScope();
    
    @Deprecated
    void popScope();
    
    void withScope(@NotNull final ScopeCallback p0);
    
    void withIsolationScope(@NotNull final ScopeCallback p0);
    
    default void configureScope(@NotNull final ScopeCallback callback) {
        this.configureScope(null, callback);
    }
    
    void configureScope(@Nullable final ScopeType p0, @NotNull final ScopeCallback p1);
    
    void bindClient(@NotNull final ISentryClient p0);
    
    boolean isHealthy();
    
    void flush(final long p0);
    
    @Deprecated
    @NotNull
    IHub clone();
    
    @NotNull
    IScopes forkedScopes(@NotNull final String p0);
    
    @NotNull
    IScopes forkedCurrentScope(@NotNull final String p0);
    
    @NotNull
    IScopes forkedRootScopes(@NotNull final String p0);
    
    @NotNull
    ISentryLifecycleToken makeCurrent();
    
    @ApiStatus.Internal
    @NotNull
    IScope getScope();
    
    @ApiStatus.Internal
    @NotNull
    IScope getIsolationScope();
    
    @ApiStatus.Internal
    @NotNull
    IScope getGlobalScope();
    
    @ApiStatus.Internal
    @Nullable
    IScopes getParentScopes();
    
    @ApiStatus.Internal
    boolean isAncestorOf(@Nullable final IScopes p0);
    
    @ApiStatus.Internal
    @NotNull
    SentryId captureTransaction(@NotNull final SentryTransaction p0, @Nullable final TraceContext p1, @Nullable final Hint p2, @Nullable final ProfilingTraceData p3);
    
    @ApiStatus.Internal
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final TraceContext traceContext, @Nullable final Hint hint) {
        return this.captureTransaction(transaction, traceContext, hint, null);
    }
    
    @ApiStatus.Internal
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final Hint hint) {
        return this.captureTransaction(transaction, null, hint);
    }
    
    @ApiStatus.Internal
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final TraceContext traceContext) {
        return this.captureTransaction(transaction, traceContext, null);
    }
    
    @ApiStatus.Internal
    @NotNull
    SentryId captureProfileChunk(@NotNull final ProfileChunk p0);
    
    @NotNull
    default ITransaction startTransaction(@NotNull final TransactionContext transactionContexts) {
        return this.startTransaction(transactionContexts, new TransactionOptions());
    }
    
    @NotNull
    default ITransaction startTransaction(@NotNull final String name, @NotNull final String operation) {
        return this.startTransaction(name, operation, new TransactionOptions());
    }
    
    @NotNull
    default ITransaction startTransaction(@NotNull final String name, @NotNull final String operation, @NotNull final TransactionOptions transactionOptions) {
        return this.startTransaction(new TransactionContext(name, operation), transactionOptions);
    }
    
    @NotNull
    ITransaction startTransaction(@NotNull final TransactionContext p0, @NotNull final TransactionOptions p1);
    
    void startProfiler();
    
    void stopProfiler();
    
    @ApiStatus.Internal
    void setSpanContext(@NotNull final Throwable p0, @NotNull final ISpan p1, @NotNull final String p2);
    
    @Nullable
    ISpan getSpan();
    
    @ApiStatus.Internal
    void setActiveSpan(@Nullable final ISpan p0);
    
    @ApiStatus.Internal
    @Nullable
    ITransaction getTransaction();
    
    @NotNull
    SentryOptions getOptions();
    
    @Nullable
    Boolean isCrashedLastRun();
    
    void reportFullyDisplayed();
    
    @Nullable
    TransactionContext continueTrace(@Nullable final String p0, @Nullable final List<String> p1);
    
    @Nullable
    SentryTraceHeader getTraceparent();
    
    @Nullable
    BaggageHeader getBaggage();
    
    @NotNull
    SentryId captureCheckIn(@NotNull final CheckIn p0);
    
    @ApiStatus.Internal
    @Nullable
    RateLimiter getRateLimiter();
    
    default boolean isNoOp() {
        return false;
    }
    
    @NotNull
    SentryId captureReplay(@NotNull final SentryReplayEvent p0, @Nullable final Hint p1);
    
    @NotNull
    ILoggerApi logger();
    
    void addFeatureFlag(@Nullable final String p0, @Nullable final Boolean p1);
}
