// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.

package org_tangled

// schema: org.tangled.knot.describeKnot

import (
	"context"

	"github.com/bluesky-social/indigo/lex/util"
)

const (
	KnotDescribeKnotNSID = "org.tangled.knot.describeKnot"
)

// KnotDescribeKnot_Contact is a "contact" in the org.tangled.knot.describeKnot schema.
type KnotDescribeKnot_Contact struct {
	Email *string `json:"email,omitempty" cborgen:"email,omitempty"`
}

// KnotDescribeKnot_Links is a "links" in the org.tangled.knot.describeKnot schema.
type KnotDescribeKnot_Links struct {
	PrivacyPolicy  *string `json:"privacyPolicy,omitempty" cborgen:"privacyPolicy,omitempty"`
	TermsOfService *string `json:"termsOfService,omitempty" cborgen:"termsOfService,omitempty"`
}

// KnotDescribeKnot_Output is the output of a org.tangled.knot.describeKnot call.
type KnotDescribeKnot_Output struct {
	// capabilities: Protocol capability tokens this knot implements. Knots that omit this field are treated as legacy.
	Capabilities []string `json:"capabilities,omitempty" cborgen:"capabilities,omitempty"`
	// contact: Contact information
	Contact *KnotDescribeKnot_Contact `json:"contact,omitempty" cborgen:"contact,omitempty"`
	Did     string                    `json:"did" cborgen:"did"`
	// links: URLs of service policy documents.
	Links   *KnotDescribeKnot_Links `json:"links,omitempty" cborgen:"links,omitempty"`
	Version string                  `json:"version" cborgen:"version"`
}

// KnotDescribeKnot calls the XRPC method "org.tangled.knot.describeKnot".
func KnotDescribeKnot(ctx context.Context, c util.LexClient) (*KnotDescribeKnot_Output, error) {
	var out KnotDescribeKnot_Output
	if err := c.LexDo(ctx, util.Query, "", "org.tangled.knot.describeKnot", nil, nil, &out); err != nil {
		return nil, err
	}

	return &out, nil
}
