///
import { inspect, InspectOptions } from "util";
import V2 from "../../../V2";
/**
* The Status of this Factor. One of `unverified` or `verified`.
*/
export type NewFactorFactorStatuses = "unverified" | "verified";
/**
* The Type of this Factor. Currently `push` and `totp` are supported.
*/
export type NewFactorFactorTypes = "push" | "totp";
export type NewFactorNotificationPlatforms = "apn" | "fcm" | "none";
export type NewFactorTotpAlgorithms = "sha1" | "sha256" | "sha512";
/**
* Options to pass to create a NewFactorInstance
*/
export interface NewFactorListInstanceCreateOptions {
/** The friendly name of this Factor. This can be any string up to 64 characters, meant for humans to distinguish between Factors. For `factor_type` `push`, this could be a device name. For `factor_type` `totp`, this value is used as the “account name” in constructing the `binding.uri` property. At the same time, we recommend avoiding providing PII. */
friendlyName: string;
/** */
factorType: NewFactorFactorTypes;
/** The algorithm used when `factor_type` is `push`. Algorithm supported: `ES256` */
"binding.alg"?: string;
/** The Ecdsa public key in PKIX, ASN.1 DER format encoded in Base64. Required when `factor_type` is `push` */
"binding.publicKey"?: string;
/** The ID that uniquely identifies your app in the Google or Apple store, such as `com.example.myapp`. It can be up to 100 characters long. Required when `factor_type` is `push`. */
"config.appId"?: string;
/** */
"config.notificationPlatform"?: NewFactorNotificationPlatforms;
/** For APN, the device token. For FCM, the registration token. It is used to send the push notifications. Must be between 32 and 255 characters long. Required when `factor_type` is `push`. */
"config.notificationToken"?: string;
/** The Verify Push SDK version used to configure the factor Required when `factor_type` is `push` */
"config.sdkVersion"?: string;
/** The shared secret for TOTP factors encoded in Base32. This can be provided when creating the Factor, otherwise it will be generated. Used when `factor_type` is `totp` */
"binding.secret"?: string;
/** Defines how often, in seconds, are TOTP codes generated. i.e, a new TOTP code is generated every time_step seconds. Must be between 20 and 60 seconds, inclusive. The default value is defined at the service level in the property `totp.time_step`. Defaults to 30 seconds if not configured. Used when `factor_type` is `totp` */
"config.timeStep"?: number;
/** The number of time-steps, past and future, that are valid for validation of TOTP codes. Must be between 0 and 2, inclusive. The default value is defined at the service level in the property `totp.skew`. If not configured defaults to 1. Used when `factor_type` is `totp` */
"config.skew"?: number;
/** Number of digits for generated TOTP codes. Must be between 3 and 8, inclusive. The default value is defined at the service level in the property `totp.code_length`. If not configured defaults to 6. Used when `factor_type` is `totp` */
"config.codeLength"?: number;
/** */
"config.alg"?: NewFactorTotpAlgorithms;
/** Custom metadata associated with the factor. This is added by the Device/SDK directly to allow for the inclusion of device information. It must be a stringified JSON with only strings values eg. `{\\\"os\\\": \\\"Android\\\"}`. Can be up to 1024 characters in length. */
metadata?: any;
}
export interface NewFactorSolution {
serviceSid: string;
identity: string;
}
export interface NewFactorListInstance {
_version: V2;
_solution: NewFactorSolution;
_uri: string;
/**
* Create a NewFactorInstance
*
* @param params - Parameter for request
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed NewFactorInstance
*/
create(params: NewFactorListInstanceCreateOptions, callback?: (error: Error | null, item?: NewFactorInstance) => any): Promise;
/**
* Provide a user-friendly representation
*/
toJSON(): any;
[inspect.custom](_depth: any, options: InspectOptions): any;
}
export declare function NewFactorListInstance(version: V2, serviceSid: string, identity: string): NewFactorListInstance;
interface NewFactorResource {
sid: string;
account_sid: string;
service_sid: string;
entity_sid: string;
identity: string;
binding: any;
date_created: Date;
date_updated: Date;
friendly_name: string;
status: NewFactorFactorStatuses;
factor_type: NewFactorFactorTypes;
config: any;
metadata: any;
url: string;
}
export declare class NewFactorInstance {
protected _version: V2;
constructor(_version: V2, payload: NewFactorResource, serviceSid: string, identity: string);
/**
* A 34 character string that uniquely identifies this Factor.
*/
sid: string;
/**
* The unique SID identifier of the Account.
*/
accountSid: string;
/**
* The unique SID identifier of the Service.
*/
serviceSid: string;
/**
* The unique SID identifier of the Entity.
*/
entitySid: string;
/**
* Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user\'s UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.
*/
identity: string;
/**
* Contains the `factor_type` specific secret and metadata. For push, this is `binding.public_key` and `binding.alg`. For totp, this is `binding.secret` and `binding.uri`. The `binding.uri` property is generated following the [google authenticator key URI format](https://github.com/google/google-authenticator/wiki/Key-Uri-Format), and `Factor.friendly_name` is used for the “accountname” value and `Service.friendly_name` or `Service.totp.issuer` is used for the `issuer` value. The Binding property is ONLY returned upon Factor creation.
*/
binding: any;
/**
* The date that this Factor was created, given in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
*/
dateCreated: Date;
/**
* The date that this Factor was updated, given in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
*/
dateUpdated: Date;
/**
* The friendly name of this Factor. This can be any string up to 64 characters, meant for humans to distinguish between Factors. For `factor_type` `push`, this could be a device name. For `factor_type` `totp`, this value is used as the “account name” in constructing the `binding.uri` property. At the same time, we recommend avoiding providing PII.
*/
friendlyName: string;
status: NewFactorFactorStatuses;
factorType: NewFactorFactorTypes;
/**
* An object that contains configurations specific to a `factor_type`.
*/
config: any;
/**
* Custom metadata associated with the factor. This is added by the Device/SDK directly to allow for the inclusion of device information. It must be a stringified JSON with only strings values eg. `{\"os\": \"Android\"}`. Can be up to 1024 characters in length.
*/
metadata: any;
/**
* The URL of this resource.
*/
url: string;
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON(): {
sid: string;
accountSid: string;
serviceSid: string;
entitySid: string;
identity: string;
binding: any;
dateCreated: Date;
dateUpdated: Date;
friendlyName: string;
status: NewFactorFactorStatuses;
factorType: NewFactorFactorTypes;
config: any;
metadata: any;
url: string;
};
[inspect.custom](_depth: any, options: InspectOptions): string;
}
export {};