import { type Appearance } from '@atlaskit/button';
import { type CardType } from '@atlaskit/linking-common';
import { type RequestAccessMessageKey } from '../messages';
export interface WithShowControlMethodProp {
    showControls?: () => void;
}
export type AccessTypes = 'REQUEST_ACCESS' | 'PENDING_REQUEST_EXISTS' | 'FORBIDDEN' | 'DIRECT_ACCESS' | 'DENIED_REQUEST_EXISTS' | 'APPROVED_REQUEST_EXISTS' | 'ACCESS_EXISTS';
export interface AccessContext {
    accessType?: AccessTypes;
    cloudId?: string;
    smartLinksAccessMetadataExperimentCohort?: 'experiment' | 'control' | 'not-enrolled';
    url?: string;
}
export interface ActionProps {
    buttonAppearance?: Appearance;
    id: string;
    promise: () => Promise<any>;
    text: React.ReactNode;
}
export interface RequestAccessContextProps extends AccessContext {
    action?: ActionProps;
    buttonDisabled?: boolean;
    callToActionMessageKey?: RequestAccessMessageKey;
    descriptiveMessageKey?: RequestAccessMessageKey;
    hostname?: string;
    titleMessageKey?: RequestAccessMessageKey;
}
export type InlinePreloaderStyle = 'on-left-with-skeleton' | 'on-right-without-skeleton';
export type ErrorCardType = 'errored' | 'fallback' | 'forbidden' | 'not_found' | 'unauthorized';
export type OnErrorCallback = (data: {
    err?: Error;
    status: Extract<CardType, ErrorCardType>;
    url: string;
}) => void;
