{{>header}}

export interface ConfigurationParameters {
	apiKey?: string | ((name: string) => string | null) | undefined;
	username?: string | undefined;
	password?: string | undefined;
	authorization?: string | ((name: string, scopes?: string[]) => string | null) | undefined;
	basePath?: string | undefined;
}

export class Configuration {
	/**
	 * parameter for apiKey security
	 * @param name security name
	 * @memberof Configuration
	 */
	apiKey?: string | ((name: string) => string | null);
	/**
	 * parameter for basic security
	 * 
	 * @type {string}
	 * @memberof Configuration
	 */
	username?: string;
	/**
	 * parameter for basic security
	 * 
	 * @type {string}
	 * @memberof Configuration
	 */
	password?: string;
	/**
	 * parameter for oauth2, openIdConnect or http security
	 * @param name security name
	 * @param scopes oauth2 scopes
	 * @memberof Configuration
	 */
	authorization?: string | ((name: string, scopes?: string[]) => string | null);
	/**
	 * override base path
	 * 
	 * @type {string}
	 * @memberof Configuration
	 */
	basePath?: string;

	constructor(param: ConfigurationParameters = {}) {
		this.apiKey = param.apiKey;
		this.username = param.username;
		this.password = param.password;
		this.authorization = param.authorization;
		this.basePath = param.basePath;
	}
}
