func (c *CSS) ForcePseudoStateWithParams(ctx context.Context, v *CSSForcePseudoStateParams) (*gcdmessage.ChromeResponse, error) {
	return c.target.SendDefaultRequest(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.forcePseudoState", Params: v})
}
ForcePseudoStateWithParams - Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser.
package gcdapi
import (
	"context"
	"github.com/wirepair/gcd/v2/gcdmessage"
)
type CSSPseudoElementMatches struct {
	PseudoType string          `json:"pseudoType"`  
	Matches    []*CSSRuleMatch `json:"matches"`     
}
type CSSInheritedStyleEntry struct {
	InlineStyle     *CSSCSSStyle    `json:"inlineStyle,omitempty"`  
	MatchedCSSRules []*CSSRuleMatch `json:"matchedCSSRules"`        
}
type CSSRuleMatch struct {
	Rule              *CSSCSSRule `json:"rule"`               
	MatchingSelectors []int       `json:"matchingSelectors"`  
}
type CSSValue struct {
	Text  string          `json:"text"`             
	Range *CSSSourceRange `json:"range,omitempty"`  
}
type CSSSelectorList struct {
	Selectors []*CSSValue `json:"selectors"`  
	Text      string      `json:"text"`       
}
type CSSCSSStyleSheetHeader struct {
	StyleSheetId  string  `json:"styleSheetId"`            
	FrameId       string  `json:"frameId"`                 
	SourceURL     string  `json:"sourceURL"`               
	SourceMapURL  string  `json:"sourceMapURL,omitempty"`  
	Origin        string  `json:"origin"`                  
	Title         string  `json:"title"`                   
	OwnerNode     int     `json:"ownerNode,omitempty"`     
	Disabled      bool    `json:"disabled"`                
	HasSourceURL  bool    `json:"hasSourceURL,omitempty"`  
	IsInline      bool    `json:"isInline"`                
	IsMutable     bool    `json:"isMutable"`               
	IsConstructed bool    `json:"isConstructed"`           
	StartLine     float64 `json:"startLine"`               
	StartColumn   float64 `json:"startColumn"`             
	Length        float64 `json:"length"`                  
	EndLine       float64 `json:"endLine"`                 
	EndColumn     float64 `json:"endColumn"`               
}
type CSSCSSRule struct {
	StyleSheetId string           `json:"styleSheetId,omitempty"`  
	SelectorList *CSSSelectorList `json:"selectorList"`            
	Origin       string           `json:"origin"`                  
	Style        *CSSCSSStyle     `json:"style"`                   
	Media        []*CSSCSSMedia   `json:"media,omitempty"`         
}
type CSSRuleUsage struct {
	StyleSheetId string  `json:"styleSheetId"`  
	StartOffset  float64 `json:"startOffset"`   
	EndOffset    float64 `json:"endOffset"`     
	Used         bool    `json:"used"`          
}
type CSSSourceRange struct {
	StartLine   int `json:"startLine"`    
	StartColumn int `json:"startColumn"`  
	EndLine     int `json:"endLine"`      
	EndColumn   int `json:"endColumn"`    
}
type CSSShorthandEntry struct {
	Name      string `json:"name"`                 
	Value     string `json:"value"`                
	Important bool   `json:"important,omitempty"`  
}
type CSSCSSComputedStyleProperty struct {
	Name  string `json:"name"`   
	Value string `json:"value"`  
}
type CSSCSSStyle struct {
	StyleSheetId     string               `json:"styleSheetId,omitempty"`  
	CssProperties    []*CSSCSSProperty    `json:"cssProperties"`           
	ShorthandEntries []*CSSShorthandEntry `json:"shorthandEntries"`        
	CssText          string               `json:"cssText,omitempty"`       
	Range            *CSSSourceRange      `json:"range,omitempty"`         
}
type CSSCSSProperty struct {
	Name      string          `json:"name"`                 
	Value     string          `json:"value"`                
	Important bool            `json:"important,omitempty"`  
	Implicit  bool            `json:"implicit,omitempty"`   
	Text      string          `json:"text,omitempty"`       
	ParsedOk  bool            `json:"parsedOk,omitempty"`   
	Disabled  bool            `json:"disabled,omitempty"`   
	Range     *CSSSourceRange `json:"range,omitempty"`      
}
type CSSCSSMedia struct {
	Text         string           `json:"text"`                    
	Source       string           `json:"source"`                  
	SourceURL    string           `json:"sourceURL,omitempty"`     
	Range        *CSSSourceRange  `json:"range,omitempty"`         
	StyleSheetId string           `json:"styleSheetId,omitempty"`  
	MediaList    []*CSSMediaQuery `json:"mediaList,omitempty"`     
}
type CSSMediaQuery struct {
	Expressions []*CSSMediaQueryExpression `json:"expressions"`  
	Active      bool                       `json:"active"`       
}
type CSSMediaQueryExpression struct {
	Value          float64         `json:"value"`                     
	Unit           string          `json:"unit"`                      
	Feature        string          `json:"feature"`                   
	ValueRange     *CSSSourceRange `json:"valueRange,omitempty"`      
	ComputedLength float64         `json:"computedLength,omitempty"`  
}
type CSSPlatformFontUsage struct {
	FamilyName   string  `json:"familyName"`    
	IsCustomFont bool    `json:"isCustomFont"`  
	GlyphCount   float64 `json:"glyphCount"`    
}
type CSSFontVariationAxis struct {
	Tag          string  `json:"tag"`           
	Name         string  `json:"name"`          
	MinValue     float64 `json:"minValue"`      
	MaxValue     float64 `json:"maxValue"`      
	DefaultValue float64 `json:"defaultValue"`  
}
type CSSFontFace struct {
	FontFamily         string                  `json:"fontFamily"`                   
	FontStyle          string                  `json:"fontStyle"`                    
	FontVariant        string                  `json:"fontVariant"`                  
	FontWeight         string                  `json:"fontWeight"`                   
	FontStretch        string                  `json:"fontStretch"`                  
	UnicodeRange       string                  `json:"unicodeRange"`                 
	Src                string                  `json:"src"`                          
	PlatformFontFamily string                  `json:"platformFontFamily"`           
	FontVariationAxes  []*CSSFontVariationAxis `json:"fontVariationAxes,omitempty"`  
}
type CSSCSSKeyframesRule struct {
	AnimationName *CSSValue             `json:"animationName"`  
	Keyframes     []*CSSCSSKeyframeRule `json:"keyframes"`      
}
type CSSCSSKeyframeRule struct {
	StyleSheetId string       `json:"styleSheetId,omitempty"`  
	Origin       string       `json:"origin"`                  
	KeyText      *CSSValue    `json:"keyText"`                 
	Style        *CSSCSSStyle `json:"style"`                   
}
type CSSStyleDeclarationEdit struct {
	StyleSheetId string          `json:"styleSheetId"`  
	Range        *CSSSourceRange `json:"range"`         
	Text         string          `json:"text"`          
}
type CSSFontsUpdatedEvent struct {
	Method string `json:"method"`
	Params struct {
		Font *CSSFontFace `json:"font,omitempty"`  
	} `json:"Params,omitempty"`
}
type CSSStyleSheetAddedEvent struct {
	Method string `json:"method"`
	Params struct {
		Header *CSSCSSStyleSheetHeader `json:"header"`  
	} `json:"Params,omitempty"`
}
type CSSStyleSheetChangedEvent struct {
	Method string `json:"method"`
	Params struct {
		StyleSheetId string `json:"styleSheetId"`  
	} `json:"Params,omitempty"`
}
type CSSStyleSheetRemovedEvent struct {
	Method string `json:"method"`
	Params struct {
		StyleSheetId string `json:"styleSheetId"`  
	} `json:"Params,omitempty"`
}
type CSS struct {
	target gcdmessage.ChromeTargeter
}
func NewCSS(target gcdmessage.ChromeTargeter) *CSS {
	c := &CSS{target: target}
	return c
}
type CSSAddRuleParams struct {
	StyleSheetId string `json:"styleSheetId"`
	RuleText string `json:"ruleText"`
	Location *CSSSourceRange `json:"location"`
}
func (c *CSS) AddRuleWithParams(ctx context.Context, v *CSSAddRuleParams) (*CSSCSSRule, error) {
	resp, err := c.target.SendCustomReturn(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.addRule", Params: v})
	if err != nil {
		return nil, err
	}
	var chromeData struct {
		Result struct {
			Rule *CSSCSSRule
		}
	}
	if resp == nil {
		return nil, &gcdmessage.ChromeEmptyResponseErr{}
	}
	cerr := &gcdmessage.ChromeErrorResponse{}
	json.Unmarshal(resp.Data, cerr)
	if cerr != nil && cerr.Error != nil {
		return nil, &gcdmessage.ChromeRequestErr{Resp: cerr}
	}
	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
		return nil, err
	}
	return chromeData.Result.Rule, nil
}
func (c *CSS) AddRule(ctx context.Context, styleSheetId string, ruleText string, location *CSSSourceRange) (*CSSCSSRule, error) {
	var v CSSAddRuleParams
	v.StyleSheetId = styleSheetId
	v.RuleText = ruleText
	v.Location = location
	return c.AddRuleWithParams(ctx, &v)
}
type CSSCollectClassNamesParams struct {
	StyleSheetId string `json:"styleSheetId"`
}
func (c *CSS) CollectClassNamesWithParams(ctx context.Context, v *CSSCollectClassNamesParams) ([]string, error) {
	resp, err := c.target.SendCustomReturn(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.collectClassNames", Params: v})
	if err != nil {
		return nil, err
	}
	var chromeData struct {
		Result struct {
			ClassNames []string
		}
	}
	if resp == nil {
		return nil, &gcdmessage.ChromeEmptyResponseErr{}
	}
	cerr := &gcdmessage.ChromeErrorResponse{}
	json.Unmarshal(resp.Data, cerr)
	if cerr != nil && cerr.Error != nil {
		return nil, &gcdmessage.ChromeRequestErr{Resp: cerr}
	}
	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
		return nil, err
	}
	return chromeData.Result.ClassNames, nil
}
func (c *CSS) CollectClassNames(ctx context.Context, styleSheetId string) ([]string, error) {
	var v CSSCollectClassNamesParams
	v.StyleSheetId = styleSheetId
	return c.CollectClassNamesWithParams(ctx, &v)
}
type CSSCreateStyleSheetParams struct {
	FrameId string `json:"frameId"`
}
func (c *CSS) CreateStyleSheetWithParams(ctx context.Context, v *CSSCreateStyleSheetParams) (string, error) {
	resp, err := c.target.SendCustomReturn(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.createStyleSheet", Params: v})
	if err != nil {
		return "", err
	}
	var chromeData struct {
		Result struct {
			StyleSheetId string
		}
	}
	if resp == nil {
		return "", &gcdmessage.ChromeEmptyResponseErr{}
	}
	cerr := &gcdmessage.ChromeErrorResponse{}
	json.Unmarshal(resp.Data, cerr)
	if cerr != nil && cerr.Error != nil {
		return "", &gcdmessage.ChromeRequestErr{Resp: cerr}
	}
	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
		return "", err
	}
	return chromeData.Result.StyleSheetId, nil
}
func (c *CSS) CreateStyleSheet(ctx context.Context, frameId string) (string, error) {
	var v CSSCreateStyleSheetParams
	v.FrameId = frameId
	return c.CreateStyleSheetWithParams(ctx, &v)
}
func (c *CSS) Disable(ctx context.Context) (*gcdmessage.ChromeResponse, error) {
	return c.target.SendDefaultRequest(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.disable"})
}
func (c *CSS) Enable(ctx context.Context) (*gcdmessage.ChromeResponse, error) {
	return c.target.SendDefaultRequest(ctx, &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "CSS.enable"})
}
type CSSForcePseudoStateParams struct {
	NodeId int `json:"nodeId"`
	ForcedPseudoClasses []string `json:"forcedPseudoClasses"`
}