/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.RequestId
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.mapping.MessageContextMapping
 *  com.l7tech.gateway.common.service.PublishedService
 *  com.l7tech.message.Message
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.MessageTargetable
 *  com.l7tech.policy.assertion.RoutingStatus
 *  com.l7tech.policy.variable.NoSuchVariableException
 *  com.l7tech.policy.variable.VariableNotSettableException
 *  com.l7tech.util.InvalidDocumentFormatException
 *  com.l7tech.util.Pair
 *  com.l7tech.xml.SoapFaultLevel
 *  javax.wsdl.Binding
 *  javax.wsdl.Operation
 *  javax.wsdl.WSDLException
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.message;

import com.l7tech.gateway.common.RequestId;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.mapping.MessageContextMapping;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.MessageTargetable;
import com.l7tech.policy.assertion.RoutingStatus;
import com.l7tech.policy.variable.NoSuchVariableException;
import com.l7tech.policy.variable.VariableNotSettableException;
import com.l7tech.server.audit.AuditContext;
import com.l7tech.server.message.AssertionOrdinalProcessor;
import com.l7tech.server.message.AssertionTraceListener;
import com.l7tech.server.message.AuthenticationContext;
import com.l7tech.server.message.PolicyContextCache;
import com.l7tech.server.message.RoutingMetricsRelated;
import com.l7tech.server.message.metrics.LatencyMetrics;
import com.l7tech.server.otel.OtelContext;
import com.l7tech.server.policy.PolicyMetadata;
import com.l7tech.server.policy.assertion.RoutingResultListener;
import com.l7tech.server.policy.assertion.ServerAssertion;
import com.l7tech.server.stepdebug.DebugContext;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.util.Pair;
import com.l7tech.xml.SoapFaultLevel;
import java.io.Closeable;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.logging.Level;
import javax.wsdl.Binding;
import javax.wsdl.Operation;
import javax.wsdl.WSDLException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.xml.sax.SAXException;

public interface PolicyEnforcementContext
extends AssertionOrdinalProcessor,
Closeable {
    public Message getRequest();

    public Message getResponse();

    public AuthenticationContext getDefaultAuthenticationContext();

    public AuthenticationContext getAuthenticationContext(Message var1);

    @RoutingMetricsRelated
    public RoutingStatus getRoutingStatus();

    @RoutingMetricsRelated
    public void setRoutingStatus(RoutingStatus var1);

    @RoutingMetricsRelated
    public boolean isPostRouting();

    public boolean isReplyExpected();

    public Level getAuditLevel();

    public void setAuditLevel(Level var1);

    public RequestId getRequestId();

    public void addSeenAssertionStatus(AssertionStatus var1);

    public Set<AssertionStatus> getSeenAssertionStatus();

    public boolean isAuditSaveRequest();

    public void setAuditSaveRequest(boolean var1);

    public boolean isAuditSaveResponse();

    public void setAuditSaveResponse(boolean var1);

    @Deprecated
    public Collection<ServerAssertion> getDeferredAssertions();

    @Deprecated
    public void addDeferredAssertion(ServerAssertion var1, ServerAssertion var2);

    @Deprecated
    public void removeDeferredAssertion(ServerAssertion var1);

    public RoutingResultListener getRoutingResultListener();

    public void addRoutingResultListener(RoutingResultListener var1);

    public void removeRoutingResultListener(RoutingResultListener var1);

    public void setAuthenticationMissing();

    public boolean isRequestPolicyViolated();

    public void setRequestPolicyViolated();

    public void setRequestClaimingWrongPolicyVersion();

    public boolean isRequestClaimingWrongPolicyVersion();

    @Nullable
    public PublishedService getService();

    public void setService(PublishedService var1);

    public PolicyMetadata getServicePolicyMetadata();

    public void setServicePolicyMetadata(PolicyMetadata var1);

    public PolicyMetadata getCurrentPolicyMetadata();

    public void setCurrentPolicyMetadata(PolicyMetadata var1);

    public PolicyContextCache getCache();

    public void setCache(PolicyContextCache var1);

    public List<String> getIncrementedCounters();

    public void setVariable(@Nullable String var1, @Nullable Object var2) throws VariableNotSettableException;

    public Object getVariable(String var1) throws NoSuchVariableException;

    public Map<String, Object> getAllVariables();

    public Map<String, Object> getVariableMap(String[] var1, Audit var2);

    @RoutingMetricsRelated
    public void routingStarted();

    @RoutingMetricsRelated
    public void routingFinished();

    @RoutingMetricsRelated
    public long getRoutingStartTime();

    @RoutingMetricsRelated
    public long getRoutingEndTime();

    @RoutingMetricsRelated
    public long getRoutingTotalTime();

    public Pair<Binding, Operation> getBindingAndOperation() throws IOException, SAXException, WSDLException, InvalidDocumentFormatException;

    public boolean isStealthResponseMode();

    @RoutingMetricsRelated
    public long getStartTime();

    public long getAssertionLatencyNanos();

    public void setAssertionLatencyNanos(long var1);

    @RoutingMetricsRelated
    public URL getRoutedServiceUrl();

    @RoutingMetricsRelated
    public void setRoutedServiceUrl(URL var1);

    @RoutingMetricsRelated
    public long getEndTime();

    @RoutingMetricsRelated
    public void setEndTime();

    public SoapFaultLevel getFaultlevel();

    public void setFaultlevel(SoapFaultLevel var1);

    public void assertionStarting(ServerAssertion var1);

    public void assertionFinished(ServerAssertion var1, AssertionStatus var2, @Nullable LatencyMetrics var3);

    public List<AssertionResult> getAssertionResults();

    public Collection<Integer> getAssertionNumber();

    public Message getTargetMessage(MessageTargetable var1) throws NoSuchVariableException;

    public Message getOrCreateTargetMessage(MessageTargetable var1, boolean var2) throws NoSuchVariableException, VariableNotSettableException;

    public Message getTargetMessage(MessageTargetable var1, boolean var2) throws NoSuchVariableException;

    public boolean isResponseWss11();

    public void setResponseWss11(boolean var1);

    public void setMalformedRequest();

    public boolean isMalformedRequest();

    public void setSavedRequestL7aMessageId(String var1);

    public String getSavedRequestL7aMessageId();

    @NotNull
    public List<MessageContextMapping> getMappings();

    public void setMappings(List<MessageContextMapping> var1);

    public Collection<Integer> getAssertionOrdinalPath();

    public void pushAssertionOrdinal(int var1);

    public int popAssertionOrdinal() throws NoSuchElementException;

    public void setTraceListener(AssertionTraceListener var1);

    public boolean hasTraceListener();

    public AssertionTraceListener getTraceListener();

    public boolean isRequestWasCompressed();

    public void setRequestWasCompressed(boolean var1);

    public AssertionStatus getPolicyResult();

    public void setPolicyResult(AssertionStatus var1);

    public boolean isPolicyExecutionAttempted();

    public void setPolicyExecutionAttempted(boolean var1);

    @Nullable
    public DebugContext getDebugContext();

    public void setDebugContext(@Nullable DebugContext var1);

    public OtelContext getOtelContext();

    public void setOtelContext(OtelContext var1);

    public void setAuditContext(@Nullable AuditContext var1);

    @Nullable
    public AuditContext getAuditContext();

    public void runOnClose(Runnable var1);

    public void runOnCloseFirst(Runnable var1);

    @Override
    public void close();

    public boolean isOverwriteResponseCookiePath();

    public void setOverwriteResponseCookiePath(boolean var1);

    public boolean isOverwriteResponseCookieDomain();

    public void setOverwriteResponseCookieDomain(boolean var1);

    public boolean isAuthorizedRequest();

    public boolean isCompletedRequest();

    public static final class AssertionResult {
        private final Assertion a;
        private final AssertionStatus b;
        private final Object c;

        protected AssertionResult(Assertion assertion, AssertionStatus assertionStatus, Object object) {
            this.a = assertion;
            this.b = assertionStatus;
            this.c = object;
        }

        public Assertion getAssertion() {
            return this.a;
        }

        public AssertionStatus getStatus() {
            return this.b;
        }

        public Object getDetailsKey() {
            return this.c;
        }
    }
}

