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

package org_tangled

// schema: org.tangled.spindle.describeSpindle

import (
	"context"

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

const (
	SpindleDescribeSpindleNSID = "org.tangled.spindle.describeSpindle"
)

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

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

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

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

	return &out, nil
}
