/**
 * Authentication related types and interfaces
 */
/**
 * Access token information
 */
export interface AccessToken {
    /**
     * Access token string
     */
    access_token: string;
    /**
     * Token expiration time in seconds
     */
    expires_in: number;
    /**
     * Refresh token (if available)
     */
    refresh_token?: string;
}
/**
 * Refresh token response
 */
export interface RefreshTokenResponse {
    /**
     * New access token
     */
    access_token: string;
    /**
     * Token expiration time in seconds
     */
    expires_in: number;
    /**
     * New refresh token (if available)
     */
    refresh_token?: string;
}
/**
 * OAuth authorization parameters
 */
export interface OAuthParams {
    /**
     * Application ID
     */
    app_id: string;
    /**
     * Redirect URI
     */
    redirect_uri: string;
    /**
     * OAuth state parameter
     */
    state?: string;
    /**
     * Code verifier for PKCE (Social API)
     */
    code_verifier?: string;
    /**
     * Code challenge for PKCE (Social API)
     */
    code_challenge?: string;
    /**
     * Code challenge method for PKCE (Social API)
     */
    code_challenge_method?: 'S256' | 'plain';
}
/**
 * Authorization code exchange parameters
 */
export interface AuthCodeParams {
    /**
     * Application ID
     */
    app_id: string;
    /**
     * Application secret
     */
    app_secret: string;
    /**
     * Authorization code
     */
    code: string;
    /**
     * Redirect URI (must match the one used in authorization)
     */
    redirect_uri: string;
    /**
     * Code verifier for PKCE (supports both Social API and Official Account API)
     */
    code_verifier?: string;
}
/**
 * Refresh token parameters
 */
export interface RefreshTokenParams {
    /**
     * Application ID
     */
    app_id: string;
    /**
     * Application secret
     */
    app_secret: string;
    /**
     * Refresh token
     */
    refresh_token: string;
}
/**
 * Social user information from Zalo
 */
export interface SocialUserInfo {
    /**
     * User ID
     */
    id: string;
    /**
     * Display name
     */
    name: string;
    /**
     * Profile picture
     */
    picture?: {
        data: {
            url: string;
        };
    };
    /**
     * Gender
     */
    gender?: string;
    /**
     * Birthday
     */
    birthday?: string;
    /**
     * Location
     */
    location?: {
        name: string;
    };
    /**
     * Whether the account is sensitive (under 18)
     */
    is_sensitive?: boolean;
}
/**
 * Token validation result
 */
export interface TokenValidation {
    /**
     * Whether the token is valid
     */
    valid: boolean;
    /**
     * Token expiration timestamp
     */
    expires_at?: number;
    /**
     * Associated user information (if available)
     */
    user_info?: SocialUserInfo;
}
/**
 * Authentication scope for different APIs
 */
export declare enum AuthScope {
    /**
     * Official Account API scope
     */
    OA = "oa",
    /**
     * Social API scope
     */
    SOCIAL = "social",
    /**
     * ZNS (Zalo Notification Service) scope
     */
    ZNS = "zns"
}
/**
 * Authentication method
 */
export declare enum AuthMethod {
    /**
     * OAuth 2.0 Authorization Code flow
     */
    AUTHORIZATION_CODE = "authorization_code",
    /**
     * Refresh token flow
     */
    REFRESH_TOKEN = "refresh_token"
}
/**
 * PKCE (Proof Key for Code Exchange) configuration
 */
export interface PKCEConfig {
    /**
     * Code verifier
     */
    code_verifier: string;
    /**
     * Code challenge
     */
    code_challenge: string;
    /**
     * Code challenge method
     */
    code_challenge_method: 'S256' | 'plain';
}
/**
 * Authentication URLs
 */
export interface AuthUrls {
    /**
     * Official Account authorization URL
     */
    oa_auth_url: string;
    /**
     * Social API authorization URL
     */
    social_auth_url: string;
    /**
     * Token exchange URL
     */
    token_url: string;
    /**
     * Token refresh URL
     */
    refresh_url: string;
}
/**
 * Official Account authorization result
 */
export interface OAAuthResult {
    /**
     * Authorization URL
     */
    url: string;
    /**
     * State parameter used (auto-generated if not provided)
     */
    state: string;
    /**
     * PKCE configuration used (if PKCE was enabled)
     */
    pkce?: PKCEConfig;
}
//# sourceMappingURL=auth.d.ts.map