# PromoHandleOptions

This type is used by an exported signature but is not directly exported from `@plandalf/sdk`'s package entrypoint. It is shown here from [core/promo-handle.ts:38](https://github.com/plandalf/numi/blob/fc6f42b5ade3d63b71623934838a6509f17203e2/packages/sdk/src/core/promo-handle.ts#L38) so the signature can be inspected fully.

```ts
export interface PromoHandleOptions {
  /** Optional element (or selector) to mount a live ticking countdown
   *  widget into. Same SVG the `<div data-plandalf-promo="…">` auto-scan
   *  produces. Omit for a headless monitor (no visible UI; just events
   *  + redirect side-effect). */
  target?: HTMLElement | string;
  /** Per-mount style overrides on top of the merchant's saved promo
   *  style. Only meaningful when `target` is set (no widget = nothing
   *  to style). Same shape as `<div data-plandalf-style='{...}'>`. */
  style?: Record<string, unknown>;
  /** Auto-redirect to active tier's `redirect_url` on URL mismatch. Default true. */
  redirect?: boolean;
  /** Poll cadence in ms. Default 1000. */
  interval?: number;
  /** Reserved for future `'modal' | 'slideout' | 'bottom' | 'fullscreen'`
   *  modes that present a promo widget inside a chrome frame instead of
   *  inline. Today only `'inline'` (the default — when `target` is set)
   *  and headless (no `target`, no `frame`) work. */
  frame?: 'inline' | 'modal' | 'slideout' | 'bottom' | 'fullscreen';
  /** Optional logger; receives any `[plandalf]`-prefixed lines. */
  log?: (...args: unknown[]) => void;
}
```

Source: https://plandalf.com/docs/packages/sdk/referenced-types/PromoHandleOptions
