import Container, { ContainerProps, ContainerWithChildren } from './container.js' declare namespace AtRule { export interface AtRuleRaws extends Record { /** * The space symbols after the last child of the node to the end of the node. */ after?: string /** * The space between the at-rule name and its parameters. */ afterName?: string /** * The space symbols before the node. It also stores `*` * and `_` symbols before the declaration (IE hack). */ before?: string /** * The symbols between the last parameter and `{` for rules. */ between?: string /** * The rule’s selector with comments. */ params?: { raw: string value: string } /** * Contains `true` if the last child has an (optional) semicolon. */ semicolon?: boolean } export interface AtRuleProps extends ContainerProps { /** Name of the at-rule. */ name: string /** Parameters following the name of the at-rule. */ params?: number | string /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ raws?: AtRuleRaws } // eslint-disable-next-line @typescript-eslint/no-use-before-define export { AtRule_ as default } } /** * Represents an at-rule. * * ```js * Once (root, { AtRule }) { * let media = new AtRule({ name: 'media', params: 'print' }) * media.append(…) * root.append(media) * } * ``` * * If it’s followed in the CSS by a `{}` block, this node will have * a nodes property representing its children. * * ```js * const root = postcss.parse('@charset "UTF-8"; @media print {}') * * const charset = root.first * charset.type //=> 'atrule' * charset.nodes //=> undefined * * const media = root.last * media.nodes //=> [] * ``` */ declare class AtRule_ extends Container { /** * The at-rule’s name immediately follows the `@`. * * ```js * const root = postcss.parse('@media print {}') * const media = root.first * media.name //=> 'media' * ``` */ name: string /** * An array containing the layer’s children. * * ```js * const root = postcss.parse('@layer example { a { color: black } }') * const layer = root.first * layer.nodes.length //=> 1 * layer.nodes[0].selector //=> 'a' * ``` * * Can be `undefinded` if the at-rule has no body. * * ```js * const root = postcss.parse('@layer a, b, c;') * const layer = root.first * layer.nodes //=> undefined * ``` */ nodes: Container['nodes'] /** * The at-rule’s parameters, the values that follow the at-rule’s name * but precede any `{}` block. * * ```js * const root = postcss.parse('@media print, screen {}') * const media = root.first * media.params //=> 'print, screen' * ``` */ params: string parent: ContainerWithChildren | undefined raws: AtRule.AtRuleRaws type: 'atrule' constructor(defaults?: AtRule.AtRuleProps) assign(overrides: AtRule.AtRuleProps | object): this clone(overrides?: Partial): AtRule cloneAfter(overrides?: Partial): AtRule cloneBefore(overrides?: Partial): AtRule } declare class AtRule extends AtRule_ {} export = AtRule