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

package io.sentry;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.ApiStatus;

public final class TransactionOptions extends SpanOptions
{
    @ApiStatus.Internal
    public static final long DEFAULT_DEADLINE_TIMEOUT_AUTO_TRANSACTION = 30000L;
    @Nullable
    private CustomSamplingContext customSamplingContext;
    private boolean isAppStartTransaction;
    private boolean waitForChildren;
    @Nullable
    private Long idleTimeout;
    @Nullable
    private Long deadlineTimeout;
    @Nullable
    private TransactionFinishedCallback transactionFinishedCallback;
    @ApiStatus.Internal
    @Nullable
    private ISpanFactory spanFactory;
    
    public TransactionOptions() {
        this.customSamplingContext = null;
        this.isAppStartTransaction = false;
        this.waitForChildren = false;
        this.idleTimeout = null;
        this.deadlineTimeout = null;
        this.transactionFinishedCallback = null;
        this.spanFactory = null;
    }
    
    @Nullable
    public CustomSamplingContext getCustomSamplingContext() {
        return this.customSamplingContext;
    }
    
    public void setCustomSamplingContext(@Nullable final CustomSamplingContext customSamplingContext) {
        this.customSamplingContext = customSamplingContext;
    }
    
    public boolean isBindToScope() {
        return ScopeBindingMode.ON == this.getScopeBindingMode();
    }
    
    public void setBindToScope(final boolean bindToScope) {
        this.setScopeBindingMode(bindToScope ? ScopeBindingMode.ON : ScopeBindingMode.OFF);
    }
    
    public boolean isWaitForChildren() {
        return this.waitForChildren;
    }
    
    public void setWaitForChildren(final boolean waitForChildren) {
        this.waitForChildren = waitForChildren;
    }
    
    @Nullable
    public Long getIdleTimeout() {
        return this.idleTimeout;
    }
    
    @ApiStatus.Internal
    public void setDeadlineTimeout(@Nullable final Long deadlineTimeoutMs) {
        this.deadlineTimeout = deadlineTimeoutMs;
    }
    
    @ApiStatus.Internal
    @Nullable
    public Long getDeadlineTimeout() {
        return this.deadlineTimeout;
    }
    
    public void setIdleTimeout(@Nullable final Long idleTimeout) {
        this.idleTimeout = idleTimeout;
    }
    
    @Nullable
    public TransactionFinishedCallback getTransactionFinishedCallback() {
        return this.transactionFinishedCallback;
    }
    
    public void setTransactionFinishedCallback(@Nullable final TransactionFinishedCallback transactionFinishedCallback) {
        this.transactionFinishedCallback = transactionFinishedCallback;
    }
    
    @ApiStatus.Internal
    public void setAppStartTransaction(final boolean appStartTransaction) {
        this.isAppStartTransaction = appStartTransaction;
    }
    
    @ApiStatus.Internal
    public boolean isAppStartTransaction() {
        return this.isAppStartTransaction;
    }
    
    @ApiStatus.Internal
    @Nullable
    public ISpanFactory getSpanFactory() {
        return this.spanFactory;
    }
    
    @ApiStatus.Internal
    public void setSpanFactory(@NotNull final ISpanFactory spanFactory) {
        this.spanFactory = spanFactory;
    }
}
