package services

import (
	"context"
	"time"

	"github.com/NdoleStudio/httpsms/pkg/entities"
)

// PushQueueTask represents a push queue task
type PushQueueTask struct {
	Method  string
	URL     string
	Body    []byte
	Headers map[string]string
}

// PushQueueConfig configurations for the push queue
type PushQueueConfig struct {
	Name             string
	UserAPIKey       string
	UserID           entities.UserID
	ConsumerEndpoint string
}

// PushQueue is a push queue
type PushQueue interface {
	// Enqueue adds a message to the push queue
	Enqueue(ctx context.Context, task *PushQueueTask, timeout time.Duration) (string, error)
}
