<?php

namespace WPDesk\PluginBuilder\Builder;

use WPDesk\PluginBuilder\Plugin\AbstractPlugin;
use WPDesk\PluginBuilder\Storage\PluginStorage;

abstract class AbstractBuilder {
	/**
	 * Create plugin class
	 */
	public function build_plugin() {
	}

	/**
	 * Store plugin class in some kind of storage
	 */
	public function store_plugin( PluginStorage $storage ) {
	}

	/**
	 * Init plugin internal structure
	 */
	public function init_plugin() {
	}

	/**
	 * Return built plugin
	 * @return AbstractPlugin
	 */
	abstract function get_plugin();

	/**
	 * Set settings class in plugin
	 *
	 * @param $settings
	 */
	public function set_settings( $settings ) {
	}

	/**
	 * Set view class in plugin
	 *
	 * @param $view
	 */
	public function set_view( $view ) {
	}

	/**
	 * Set tracker class in plugin
	 *
	 * @param $tracker
	 */
	public function set_tracker( $tracker ) {
	}

	/**
	 * Set helper class in plugin
	 *
	 * @param $helper
	 */
	public function set_helper( $helper ) {
	}
}
