Latency After State Change

I can't write a code with delayed state change,
first my Led is "On", when i push the button it has to be "Off".
I would like to push the button 4 times more and after 10 seconds Led is "On" position again

const int  buttonPin = 1;    // the pin that the pushbutton is attached to
const int ledPin = 0;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    } else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
    // Delay a little bit to avoid bouncing
    delay(50);
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;


  // turns on the LED every four button pushes by
  // checking the modulo of the button push counter.
  // the modulo function gives you the remainder of
  // the division of two numbers:
  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
delay(10000);
    digitalWrite(ledPin, LOW);
  }

}

i can't add 10 second waiting for this code. I would like to use this for delay after sensor detection.
i want to push immediately (click) to "off" my led. Then it has to wait only for "on" again; after when i click 4 times.

1: "Led is On"
2: click the button
3: Led is "Off"
4: click the button
5: click the button
6: click the button
7: Wait for 10 second
8: "led is On"
loop

:-[

Sorry For my language I am a foreigner (: i can't explain well but i'll try. i made a test bench. it is biological seperator. This bench is like a wheeling disc and under the bench there is four sets. When the sets touch the button four times my test bench knows it complete the full turn and after ten seconds of delay my wheel disc will stop with new position. The problem is when i write delay code before

digitalWrite(ledPin, LOW);

my code need holding the buttons 10 second for activation
But i want to wait to do this only after 4th clicking the button without change pushing time.

i try with millis() code but no latency before 4th push state change .

const int  buttonPin = 1;    // the pin that the pushbutton is attached to
const int ledPin = 0;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

unsigned long interval=1000;
unsigned long previousMillis=0;

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
}


void loop() {
  buttonState = digitalRead(buttonPin);
  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == LOW) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      
    } else {
 
    }
    // Delay a little bit to avoid bouncing
    delay(50);
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;

unsigned long currentMillis = millis();
  // turns on the LED every four button pushes by
  // checking the modulo of the button push counter.
  // the modulo function gives you the remainder of
  // the division of two numbers:
  if (buttonPushCounter % 4 == 0 ) {
  if((unsigned long)(currentMillis - previousMillis) >= interval) {
    digitalWrite(ledPin, LOW);}
   else 
    digitalWrite(ledPin, HIGH);
    previousMillis = millis();
  }}