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

package io.sentry;

import io.sentry.transport.RateLimiter;
import org.jetbrains.annotations.ApiStatus;
import io.sentry.protocol.SentryTransaction;
import io.sentry.protocol.Message;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;

public interface ISentryClient
{
    boolean isEnabled();
    
    @NotNull
    SentryId captureEvent(@NotNull final SentryEvent p0, @Nullable final IScope p1, @Nullable final Hint p2);
    
    void close();
    
    void close(final boolean p0);
    
    void flush(final long p0);
    
    @NotNull
    default SentryId captureEvent(@NotNull final SentryEvent event) {
        return this.captureEvent(event, null, null);
    }
    
    @NotNull
    default SentryId captureEvent(@NotNull final SentryEvent event, @Nullable final IScope scope) {
        return this.captureEvent(event, scope, null);
    }
    
    @NotNull
    default SentryId captureEvent(@NotNull final SentryEvent event, @Nullable final Hint hint) {
        return this.captureEvent(event, null, hint);
    }
    
    @NotNull
    SentryId captureFeedback(@NotNull final Feedback p0, @Nullable final Hint p1, @NotNull final IScope p2);
    
    @NotNull
    default SentryId captureMessage(@NotNull final String message, @NotNull final SentryLevel level, @Nullable final IScope scope) {
        final SentryEvent event = new SentryEvent();
        final Message sentryMessage = new Message();
        sentryMessage.setFormatted(message);
        event.setMessage(sentryMessage);
        event.setLevel(level);
        return this.captureEvent(event, scope);
    }
    
    @NotNull
    default SentryId captureMessage(@NotNull final String message, @NotNull final SentryLevel level) {
        return this.captureMessage(message, level, null);
    }
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable) {
        return this.captureException(throwable, null, null);
    }
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable, @Nullable final IScope scope, @Nullable final Hint hint) {
        final SentryEvent event = new SentryEvent(throwable);
        return this.captureEvent(event, scope, hint);
    }
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable, @Nullable final Hint hint) {
        return this.captureException(throwable, null, hint);
    }
    
    @NotNull
    default SentryId captureException(@NotNull final Throwable throwable, @Nullable final IScope scope) {
        return this.captureException(throwable, scope, null);
    }
    
    @NotNull
    SentryId captureReplayEvent(@NotNull final SentryReplayEvent p0, @Nullable final IScope p1, @Nullable final Hint p2);
    
    void captureUserFeedback(@NotNull final UserFeedback p0);
    
    void captureSession(@NotNull final Session p0, @Nullable final Hint p1);
    
    default void captureSession(@NotNull final Session session) {
        this.captureSession(session, null);
    }
    
    @Nullable
    SentryId captureEnvelope(@NotNull final SentryEnvelope p0, @Nullable final Hint p1);
    
    @Nullable
    default SentryId captureEnvelope(@NotNull final SentryEnvelope envelope) {
        return this.captureEnvelope(envelope, null);
    }
    
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final IScope scope, @Nullable final Hint hint) {
        return this.captureTransaction(transaction, null, scope, hint);
    }
    
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final TraceContext traceContext, @Nullable final IScope scope, @Nullable final Hint hint) {
        return this.captureTransaction(transaction, traceContext, scope, hint, null);
    }
    
    @NotNull
    @ApiStatus.Internal
    SentryId captureTransaction(@NotNull final SentryTransaction p0, @Nullable final TraceContext p1, @Nullable final IScope p2, @Nullable final Hint p3, @Nullable final ProfilingTraceData p4);
    
    @ApiStatus.Internal
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction, @Nullable final TraceContext traceContext) {
        return this.captureTransaction(transaction, traceContext, null, null);
    }
    
    @NotNull
    default SentryId captureTransaction(@NotNull final SentryTransaction transaction) {
        return this.captureTransaction(transaction, null, null, null);
    }
    
    @ApiStatus.Internal
    @NotNull
    SentryId captureProfileChunk(@NotNull final ProfileChunk p0, @Nullable final IScope p1);
    
    @NotNull
    SentryId captureCheckIn(@NotNull final CheckIn p0, @Nullable final IScope p1, @Nullable final Hint p2);
    
    void captureLog(@NotNull final SentryLogEvent p0, @Nullable final IScope p1);
    
    @ApiStatus.Internal
    void captureBatchedLogEvents(@NotNull final SentryLogEvents p0);
    
    @ApiStatus.Internal
    @Nullable
    RateLimiter getRateLimiter();
    
    @ApiStatus.Internal
    default boolean isHealthy() {
        return true;
    }
}
