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

package tangled

// schema: sh.tangled.repo.create

import (
	"context"

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

const (
	RepoCreateNSID = "sh.tangled.repo.create"
)

// RepoCreate_Input is the input argument to a sh.tangled.repo.create call.
type RepoCreate_Input struct {
	// defaultBranch: Default branch to push to
	DefaultBranch *string `json:"defaultBranch,omitempty" cborgen:"defaultBranch,omitempty"`
	// name: Name of the repository
	Name string `json:"name" cborgen:"name"`
	// repoDid: Optional user-provided did:web to use as the repo identity instead of minting a did:plc.
	RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"`
	// rkey: Rkey of the repository record
	Rkey string `json:"rkey" cborgen:"rkey"`
	// source: A source URL to clone from, populate this when forking or importing a repository.
	Source *string `json:"source,omitempty" cborgen:"source,omitempty"`
}

// RepoCreate_Output is the output of a sh.tangled.repo.create call.
type RepoCreate_Output struct {
	// key: Multibase-encoded public signing key the knot holds for this repository
	Key     *string `json:"key,omitempty" cborgen:"key,omitempty"`
	RepoDid *string `json:"repoDid,omitempty" cborgen:"repoDid,omitempty"`
}

// RepoCreate calls the XRPC method "sh.tangled.repo.create".
func RepoCreate(ctx context.Context, c util.LexClient, input *RepoCreate_Input) (*RepoCreate_Output, error) {
	var out RepoCreate_Output
	if err := c.LexDo(ctx, util.Procedure, "application/json", "sh.tangled.repo.create", nil, input, &out); err != nil {
		return nil, err
	}

	return &out, nil
}
