import { SAMLProfile } from '@boxyhq/saml20/dist/typings';
import SSOTraces from '.';
import { OIDCIdPInitiatedReq } from '../typings';
export interface Trace {
    traceId: string;
    timestamp: number;
    error: string;
    context: {
        [key: string]: unknown;
    };
}
export interface SSOTrace extends Omit<Trace, 'traceId' | 'timestamp'> {
    timestamp?: number /** Can be passed in from outside else will be set to Date.now() */;
    context: {
        tenant: string;
        product: string;
        clientID: string;
        redirectUri?: string;
        requestedOIDCFlow?: boolean;
        isSAMLFederated?: boolean;
        isOIDCFederated?: boolean;
        isIdPFlow?: boolean;
        relayState?: string;
        providerName?: string;
        acsUrl?: string;
        entityId?: string;
        samlRequest?: string;
        samlResponse?: string;
        issuer?: string;
        profile?: SAMLProfile;
        error?: string;
        error_description?: string;
        error_uri?: string;
        session_state_from_op_error?: string;
        scope_from_op_error?: string;
        stack?: string;
        oidcTokenSet?: {
            id_token?: string;
            access_token?: string;
        };
        oidcIdPRequest?: OIDCIdPInitiatedReq;
        oAuthStage?: 'token_fetch' | 'userinfo_fetch';
    };
}
export type SSOTracesInstance = InstanceType<typeof SSOTraces>;
