package failsafe

import (
	

	
)

// ExecutionEvent indicates an execution was attempted.
type ExecutionEvent[ any] struct {
	ExecutionAttempt[]
}

// ExecutionScheduledEvent indicates an execution was scheduled.
type ExecutionScheduledEvent[ any] struct {
	ExecutionAttempt[]
	// The delay before the next execution attempt.
	Delay time.Duration
}

// ExecutionDoneEvent indicates an execution is done.
type ExecutionDoneEvent[ any] struct {
	ExecutionInfo
	// The execution result, else the zero value for R
	Result 
	// The execution error, else nil
	Error error
}

func newExecutionDoneEvent[ any]( ExecutionInfo,  *common.PolicyResult[]) ExecutionDoneEvent[] {
	return ExecutionDoneEvent[]{
		ExecutionInfo: ,
		Result:        .Result,
		Error:         .Error,
	}
}