import { ButtonOneTapAuthEventsSDK, DataPolicyEventsSDK, FloatingOneTapAuthEventsSDK, OneTapAuthEventsSDK, PolicyAgreementsEventsSDK, BindAccountErrorEventsSDK } from "./events"; import { URLParams } from "../common/utils"; import { ButtonOneTapSkin, ButtonOneTapStyle, FloatingOneTapStyle } from "./utils"; import { CommonSDKEvents } from "../common/events"; import { AuthCaptchaEventsSDK } from "../captcha/events"; /** * Объект, хранящий данные авторизованного на стороне сервиса пользователя */ export declare interface ExternalUser { /** * ID пользователя */ id?: string; /** * Ссылка на аватар пользователя */ avatar?: string; /** * Имя пользователя */ first_name: string; /** * Фамилия пользователя */ last_name: string; /** * Телефон пользователя */ phone: string; /** * Цвет обводки выбранного пользователя (0, если нужно использовать тот, что в SDK) */ borderColor?: string; /** * Объект с дополнительными данными, которые могут быть использованы после авторизации */ payload?: Record; } /** * Объект, хранящий объект пользователя, если реализована схема * отображения сервисных данных вместо данных VK ID. */ export interface VKSilentUser { /** * ID пользователя */ id: number; /** * Имя пользователя */ first_name: string; /** * Фамилия пользователя */ last_name: string; /** * Ссылка на аватар пользователя */ avatar: string; /** * Номер телефона пользователя */ phone: string; /** * Электронная почта пользователя */ email?: string; } /** * Объект с дополнительными данными, которые могут быть использованы после авторизации */ export interface VKSilentAuthPayload { /** * Наличие авторизации (0 или 1) */ auth: number; /** * Значение silent token */ token: string; /** * Время жизни токена, за которое необходимо обменять Silent Token на Access Token */ ttl: number; /** * Тип авторизации (например - silent_token) */ type: string; /** * Объект пользователя */ user: VKSilentUser; /** * Уникальный параметр, генерируемый на стороне SDK, который далее передается в запросах. */ uuid: string; /** * Текстовый код oauth сервиса, через который авторизовался пользователь. */ oauthProvider?: string; /** * Объект пользователя, если реализована схема * отображения сервисных данных вместо данных VK ID. */ external_user?: ExternalUser; /** * Параметр, в который передается `true`, * если пользователь во время авторизации прошел через экраны регистрации/авторизации. */ is_registration?: boolean; /** * Дополнительные данные. */ additional_data?: { /** * Параметр, в который передается `true`, * если пользователю во время авторизации была предложена валидация телефона без возможности пропуска, * пользователь не подтвердил номер телефона, и номер телефона был отвязан. */ was_phone_unbind?: boolean; }; /** * Автоматически сгенерированный параметр, который был использован для создания токена. * Нужен для подтверждения того, что токен создан во время одной сессии. */ code_verifier?: string; } /** * Объект, хранящий в себе данные после успешной авторизации */ export interface VKAuthSuccessResult { /** * Название провайдера, через которого была совершена авторизация */ provider: 'vk'; /** * Объект с дополнительными данными, которые могут быть использованы после авторизации */ payload: VKSilentAuthPayload; } /** * Объект, хранящий в себе данные после успешной oauth авторизации через другие сервисы */ export interface VKOAuthCallback { /** * Название провайдера, через которого была совершена авторизация */ provider: 'fb' | 'google'; } /** * Объект, хранящий в себе данные после успешной авторизации */ export declare type VKUserVisibleAuthResult = VKAuthSuccessResult | VKOAuthCallback; /** * Возможные события для общения через бридж */ export declare type BridgeEvents = OneTapAuthEventsSDK | FloatingOneTapAuthEventsSDK | ButtonOneTapAuthEventsSDK | DataPolicyEventsSDK | AuthCaptchaEventsSDK | PolicyAgreementsEventsSDK | BindAccountErrorEventsSDK | CommonSDKEvents; /** * Интерфейс объекта содержащего данные о действиях пользователя, которые можно использовать при формировании статистики. * Объект передается в URL единовременно — в момент, когда пользователь совершает некоторое действие. * Например, переходит на страницу авторизации или регистрации VK ID. */ export interface InitStatsInfo { /** * Параметр содержит данные о том, с какой страницы пользователь перешел на страницу авторизации или регистрации VK ID. */ source?: string; screen?: string; } /** * Параметры, которые могут быть использованы после авторизации */ export interface AuthParams { /** * Тип события из callback функции `Connect.floatingOneTapAuth` или `Connect.buttonOneTapAuth`. * Необходим для корректного сбора аналитики. */ source?: string; /** * Отображение экрана с вводом номера телефона. */ screen?: 'phone'; /** * Объект для изменения поведения авторизации через VK ID. */ action?: AuthAction; /** * Содержит данные о действиях пользователя, которые можно использовать при формировании статистики. * Объект передается в URL единовременно — в момент, когда пользователь совершает некоторое действие. * Например, переходит на страницу авторизации или регистрации VK ID. */ entry?: InitStatsInfo; /** * Тема, в которой будет отображена страница авторизации */ scheme?: 'bright_light' | 'space_gray'; } /** * Объект, передаваемый в Connect.redirectAuth */ export interface RedirectAuthParams extends AuthParams { /** * Ссылка для перехода после авторизации. * Урл должен иметь https схему. */ url: string; /** * Параметры, используемые в строке запроса ссылки после успешной авторизации. */ state?: string; /** * Автоматически сгенерированный параметр, который был использован для создания токена. * Нужен для подтверждения того, что токен создан во время одной сессии. */ code_verifier?: string; } /** * Объект, возвращаемый методом Connect.oneTapAuth */ export interface VKOneTapAuthResult { /** * Функция удаления фрейма со страницы */ destroy: () => void; /** * Функция получения фрейма */ getFrame: () => HTMLIFrameElement | null; /** * Промис, обрабатывающий сообщения для фрейма, приходящие с бриджа */ authReadyPromise: Promise; /** * Функция для обновления параметров **/ update: (params: Partial>) => void; } /** * Объект, возвращаемый методом Connect.buttonOneTapAuth */ export interface VKOneTapAuthButtonResult { /** * Функция удаления фрейма со страницы */ destroy: () => void; /** * Функция получения фрейма */ getFrame: () => HTMLIFrameElement | null; /** * Промис, обрабатывающий сообщения для фрейма, приходящие с бриджа */ authReadyPromise: Promise; /** * Функция для обновления параметров */ update: (newOptions: Partial) => void; } /** * @ignore */ export interface VKDataPolicyResult { show: () => Promise; hide: () => void; destroy: () => void; } /** * @ignore */ export interface VKDataPolicyAgreementsResult { show: () => Promise; hide: () => void; destroy: () => void; } /** * Дополнительными данные, которые могут быть использованы после ознакомления с пользовательским соглашением */ export interface VKDataPolicyPayload { /** * Уникальная строка, генерируемая на стороне SDK, который далее передается во всех запросах. */ uuid: string; /** * Результат соглашения пользователя с пользовательским соглашением */ policyAccepted: boolean; } /** * Объект, хранящий в себе данные при ошибочной авторизации */ export interface VKAuthButtonErrorPayload { /** * Уникальная строка, генерируемая на стороне SDK, который далее передается во всех запросах. */ uuid: string; /** * Описание ошибки */ error: string; } /** * Объект, хранящий в себе данные при успешной авторизации через oauth2 */ export interface VKOauth2Payload { code: string; state: string; code_verifier: string; } /** * Объект, хранящий в себе результат авторизации */ export interface VKAuthButtonResult { /** * События типа совершенной авторизации */ type: OneTapAuthEventsSDK | FloatingOneTapAuthEventsSDK | ButtonOneTapAuthEventsSDK | DataPolicyEventsSDK; /** * Название провайдера, через которого была совершена авторизация */ provider?: 'vk'; /** * Объект с дополнительными данными, которые могут быть использованы после авторизации */ payload?: VKSilentAuthPayload | VKDataPolicyPayload | { uuid: string; is_online?: boolean; } | VKOauth2Payload; } /** * Объект, хранящий в себе результат ошибки авторизации */ export interface VKAuthButtonError { /** * События типа совершенной авторизации */ type: OneTapAuthEventsSDK | CommonSDKEvents.ERROR; /** * Дополнительные данные, которые могут быть использованы после авторизации */ payload: VKAuthButtonErrorPayload; } /** * Объект, хранящий в себе результат авторизации - ошибочный или успешный */ export declare type VKAuthButtonCallbackResult = VKAuthButtonResult | VKAuthButtonError; /** * Объект, содержащий параметры необходимые для Connect.floatingOneTapAuth */ export interface FloatingOneTapAuthParams { /** * Функция-обработчик событий ConnectEvents, приходящих из SDK */ callback: (result: VKAuthButtonCallbackResult) => void; /** * Объект, который управляет показом элементов внутри окна */ options?: FloatingOneTapAuthOptions; } /** * Объект, содержащий параметры отображения при использовании Connect.floatingOneTapAuth */ export interface FloatingOneTapAuthOptions { /** * Объект, который содержит стили для окна */ styles?: FloatingOneTapStyle; /** * Пропуск экрана удачной авторизации в методе FloatingOnaTap, заменяя его лоадером */ skipSuccess?: boolean | number; /** * Тема модуля авторизации */ scheme?: 'bright_light' | 'space_gray'; } /** * Объект, содержащий параметры необходимые для Connect.buttonOneTapAuth */ export interface ButtonOneTapAuthParams extends Omit { /** * Html элемент, в который будет вставлено окно с кнопкой */ container?: HTMLElement | null; /** * Объект, который управляет показом элементов внутри окна с кнопкой */ options?: ButtonOneTapAuthOptions; } /** * Один из трех типов дает возможность определить вид отображения информации о пользователе. * Default - стандартное отображение с текстом "продолжить как...". * Name_phone - сверху отображается "продолжить как...", снизу - замаскированный номер телефона. * Phone_name - сверху - замаскированный номер телефона, снизу - "продолжить как...". */ export declare type ButtonOneTapAuthDisplayModes = 'default' | 'name_phone' | 'phone_name'; /** * Объект, который хранит в себе элементы управления, влияющие на показ элементов внутри окна с кнопкой */ export interface ButtonOneTapAuthOptions { /** * Показ ссылок на политики под кнопкой */ showAgreements?: boolean | number; /** * Показ нопки с альтернативной авторизацией */ showAlternativeLogin?: boolean | number; /** * @deprecated since version 1.56.0 * Показ диалогового окна, отображающееся при попытке авторизации, если выключено showAgreements */ showAgreementsDialog?: boolean | number; /** * Вид отображения информации о пользователе */ displayMode?: ButtonOneTapAuthDisplayModes; /** * Цветовой стиль кнопки. */ buttonSkin?: ButtonOneTapSkin; /** * Размеры кнопки. */ buttonStyles?: ButtonOneTapStyle; /** * ID языка, на который будет переведен весь текст. */ langId?: number; /** * Тема модуля авторизации */ scheme?: 'bright_light' | 'space_gray'; /** * Флаг о том, что кнопка используется для определения наличия сессии */ isForSessionDetectingOnly?: boolean; } /** * Тип, определяющий виды отображения авторизации. * Floating - отображение окна быстрой авторизации в правом верхнем угла экрана в виде фиксированного элемента. * Button - отображения окна с кнопкой быстрой авторизации, которое можно вставить в любое место разметки. */ export declare type AuthButtonType = 'floating' | 'button'; /** * Обобщенный тип для параметров авторизации */ export declare type AuthButtonParams = FloatingOneTapAuthParams | ButtonOneTapAuthParams; /** * @ignore */ export interface VKOneTapAuthOptions { pageUrl: string; pageUrlParams: URLParams; frameStyles: string; scheme?: string; } /** * Объект события, который позволяет расширить partial токен. */ export interface ExtendToken { /** * Название события */ name: 'extend_token'; /** * SuperAppToken v2 */ token: string; /** * Хэш из ошибки extend_hash */ params: { extend_token_hash: string; }; } /** * Событие, позволяющее авторизовать пользователя по SuperAppToken для сервисов, в которых доступна генерация таких токенов. */ export interface AuthWithUser { /** * Название события */ name: 'login_with_user'; /** * SuperAppToken v2 */ token: string; } /** * Событие, позволяющее подтвердить действие пользователя. */ export interface ConfirmServiceAction { /** * Название события */ name: 'confirm_service_action'; /** * SuperAppToken v2 */ token: string; } /** * @ignore */ export interface SferumInviteLink { name: '__sferum_invite_link'; params: { link: string; }; } /** * @ignore */ export interface RegistrationWithPhone { name: 'registration_with_phone'; token: string; params: { csrf_hash: string; }; } /** * @ignore */ export interface RegistrationWithEmail { name: 'registration_with_email'; } /** * @ignore */ export interface ValidatePhone { name: 'validate_phone'; token: string; } /** * @ignore */ export interface LoginSilentUser { name: 'login_silent_user'; } /** * @ignore */ export interface BindOKAccount { name: 'bind_ok_account'; token: string; params: { id: string; firstName: string; lastName: string; avatarUrl: string; }; } /** * @ignore */ export interface NoPasswordFlow { name: 'no_password_flow'; token?: string; params: { type: 'sign_in' | 'sign_up'; csrf_hash?: string; }; } /** * @ignore */ export interface QRAuth { name: 'qr_auth'; token?: string; params?: { flow_name: 'qr_only'; }; } /** * @ignore */ export interface AuthValidationPhone { name: 'auth_validation_phone'; params: { status: '1' | '0'; sid?: string; }; } /** * @ignore */ export interface LoginWithEljour { name: 'login_with_eljour'; token: string; } /** * @ignore */ export interface LoginWithEduProfile extends Omit { name: 'login_with_edu_profile'; } /** * @ignore */ export interface LoginWithMultiUser { name: 'login_with_multi_user'; params: { flow_name: 'edu'; }; } export interface MultiAccountFlow { name: 'multi_account_flow'; params: { flow_name: 'add_to_switcher'; user_id: number; from_deeplink?: boolean; }; } export interface AuthInitFlow { name: 'auth_init'; token: string; } /** * Список поддерживаемых событий */ export declare type AuthAction = ExtendToken | AuthWithUser | SferumInviteLink | LoginSilentUser | RegistrationWithPhone | RegistrationWithEmail | ValidatePhone | BindOKAccount | ConfirmServiceAction | NoPasswordFlow | LoginWithEljour | QRAuth | AuthValidationPhone | LoginWithMultiUser | MultiAccountFlow | LoginWithEduProfile | AuthInitFlow; /** * Объект, содержащий методы, которые используются для обнаружения изменения размеров окна */ export interface AdaptivitySwitchObserver { /** * Функция, удаляющая фрейм и задействованные eventListeners */ destroy: () => void; /** * Функция, возвращающая результат сравнения размера страницы с наименьшим возможным размером */ isAdaptive: () => boolean; /** * Функция, принимающая callback, который срабатывает при изменении размера страницы */ observe: (switchCallback: (isAdaptive: boolean) => void) => void; }