public function generateKeyURI($type, $secret, $account, $issuer = '', $counter = 0, $algorithm = '', $digits = '', $period = '')
	{
		// Check if type is supported
		$this->validateType($type);
		$this->validateAlgorithm($algorithm);

		// Format label string
		$this->formatLabel($issuer, 'issuer');
		$this->formatLabel($account, 'account');

		// Set additional parameters
		$this->setCounter($type, $counter);
		$this->setParameter($algorithm, 'algorithm');
		$this->setParameter($digits, 'digits');
		$this->setParameter($period, 'period');

		return 'otpauth://' . $type . '/' . $this->label . '?secret=' . $secret . $this->issuer . $this->parameters;
	}