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

package atproto

// schema: com.atproto.repo.deleteRecord

import (
	"context"

	"github.com/bluesky-social/indigo/xrpc"
)

// RepoDeleteRecord_Input is the input argument to a com.atproto.repo.deleteRecord call.
type RepoDeleteRecord_Input struct {
	// collection: The NSID of the record collection.
	Collection string `json:"collection" cborgen:"collection"`
	// repo: The handle or DID of the repo (aka, current account).
	Repo string `json:"repo" cborgen:"repo"`
	// rkey: The Record Key.
	Rkey string `json:"rkey" cborgen:"rkey"`
	// swapCommit: Compare and swap with the previous commit by CID.
	SwapCommit *string `json:"swapCommit,omitempty" cborgen:"swapCommit,omitempty"`
	// swapRecord: Compare and swap with the previous record by CID.
	SwapRecord *string `json:"swapRecord,omitempty" cborgen:"swapRecord,omitempty"`
}

// RepoDeleteRecord_Output is the output of a com.atproto.repo.deleteRecord call.
type RepoDeleteRecord_Output struct {
	Commit *RepoDefs_CommitMeta `json:"commit,omitempty" cborgen:"commit,omitempty"`
}

// RepoDeleteRecord calls the XRPC method "com.atproto.repo.deleteRecord".
func RepoDeleteRecord(ctx context.Context, c *xrpc.Client, input *RepoDeleteRecord_Input) (*RepoDeleteRecord_Output, error) {
	var out RepoDeleteRecord_Output
	if err := c.Do(ctx, xrpc.Procedure, "application/json", "com.atproto.repo.deleteRecord", nil, input, &out); err != nil {
		return nil, err
	}

	return &out, nil
}
