/**
 * AWS SSO service types
 * Defines the interfaces used for AWS SSO authentication and credential management
 */
/**
 * AWS SSO Credentials
 * Contains the temporary AWS credentials retrieved after SSO authentication
 */
export interface AwsSsoCredentials {
    accessKeyId: string;
    secretAccessKey: string;
    sessionToken: string;
    expiration: number;
    region?: string;
}
/**
 * AWS SSO Auth Result
 * Result of a successful AWS SSO authentication
 */
export interface AwsSsoAuthResult {
    accessToken: string;
    expiresAt: number;
    region?: string;
    startUrl?: string;
}
/**
 * AWS SSO Configuration
 * Settings used to configure AWS SSO login
 */
export interface AwsSsoConfig {
    region: string;
    startUrl?: string;
    profileName?: string;
}
/**
 * AWS SSO Account
 * Represents an AWS account accessible via SSO
 */
export interface AwsSsoAccount {
    accountId: string;
    accountName: string;
    emailAddress?: string;
}
/**
 * AWS SSO Account Role
 * Role within an AWS account that can be assumed via SSO
 */
export interface AwsSsoAccountRole {
    accountId: string;
    roleName: string;
    roleArn?: string;
}
/**
 * AWS SSO Account with Roles
 * Account with its assigned roles
 */
export interface AwsSsoAccountWithRoles {
    account: AwsSsoAccount;
    roles: AwsSsoAccountRole[];
    timestamp: number;
}
/**
 * AWS SSO Device Authorization Details
 * Details returned from the SSO OIDC device authorization flow
 */
export interface AwsSsoDeviceAuth {
    deviceCode: string;
    userCode: string;
    verificationUri: string;
    verificationUriComplete?: string;
    expiresIn: number;
    interval: number;
    clientId: string;
    clientSecret: string;
}
/**
 * AWS SSO Cache Entry
 * Structure for storing SSO data in cache file
 */
export interface AwsSsoCache {
    ssoToken?: AwsSsoAuthResult;
    credentials?: Record<string, AwsSsoCredentialsCacheEntry>;
    lastAuth?: number;
    accountRoles?: AwsSsoAccountWithRoles[];
    accountsTimestamp?: number;
}
/**
 * AWS SSO Credentials Cache Entry
 * Structure for storing credentials in cache file
 */
export interface AwsSsoCredentialsCacheEntry extends AwsSsoCredentials {
    timestamp: number;
    accountId: string;
    roleName: string;
}
