func FromRawPresentation(raw json.RawMessage) PresentProofOptions {
	return func(opts *presentProofOpts) {
		opts.rawPresentation = raw
	}
}
FromRawPresentation for sending raw JSON as presentation.
package wallet
import (
	"encoding/json"
	"time"
	"github.com/hyperledger/aries-framework-go/component/storage/edv"
	"github.com/hyperledger/aries-framework-go/pkg/client/outofband"
	"github.com/hyperledger/aries-framework-go/pkg/doc/verifiable"
	"github.com/hyperledger/aries-framework-go/pkg/kms/webkms"
	"github.com/hyperledger/aries-framework-go/pkg/secretlock"
)
type profileOpts struct {
	secretLockSvc secretlock.Service
	passphrase    string
	keyServerURL string
	edvConf *edvConf
}
type ProfileOptions func(opts *profileOpts)
func WithSecretLockService(svc secretlock.Service) ProfileOptions {
	return func(opts *profileOpts) {
		opts.secretLockSvc = svc
	}
}
func WithPassphrase(passphrase string) ProfileOptions {
	return func(opts *profileOpts) {
		opts.passphrase = passphrase
	}
}
func WithKeyServerURL(url string) ProfileOptions {
	return func(opts *profileOpts) {
		opts.keyServerURL = url
	}
}
func WithEDVStorage(url, vaultID, encryptionKID, macKID string) ProfileOptions {
	return func(opts *profileOpts) {
		opts.edvConf = &edvConf{
			ServerURL:       url,
			VaultID:         vaultID,
			EncryptionKeyID: encryptionKID,
			MACKeyID:        macKID,
		}
	}
}
type unlockOpts struct {
	passphrase    string
	secretLockSvc secretlock.Service
	authToken  string
	webkmsOpts []webkms.Opt
	tokenExpiry time.Duration
	edvOpts []edv.RESTProviderOption
}
type UnlockOptions func(opts *unlockOpts)
func WithUnlockByPassphrase(passphrase string) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.passphrase = passphrase
	}
}
func WithUnlockBySecretLockService(svc secretlock.Service) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.secretLockSvc = svc
	}
}
func WithUnlockByAuthorizationToken(url string) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.authToken = url
	}
}
func WithUnlockExpiry(tokenExpiry time.Duration) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.tokenExpiry = tokenExpiry
	}
}
func WithUnlockWebKMSOptions(webkmsOpts ...webkms.Opt) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.webkmsOpts = webkmsOpts
	}
}
func WithUnlockEDVOptions(edvOpts ...edv.RESTProviderOption) UnlockOptions {
	return func(opts *unlockOpts) {
		opts.edvOpts = edvOpts
	}
}
type proveOpts struct {
	storedCredentials []string
	rawCredentials []json.RawMessage
	credentials []*verifiable.Credential
	presentation *verifiable.Presentation
	rawPresentation json.RawMessage
}
type ProveOptions func(opts *proveOpts)
func WithStoredCredentialsToProve(ids ...string) ProveOptions {
	return func(opts *proveOpts) {
		opts.storedCredentials = ids
	}
}
func WithRawCredentialsToProve(raw ...json.RawMessage) ProveOptions {
	return func(opts *proveOpts) {
		opts.rawCredentials = raw
	}
}
func WithCredentialsToProve(credentials ...*verifiable.Credential) ProveOptions {
	return func(opts *proveOpts) {
		opts.credentials = credentials
	}
}
func WithPresentationToProve(presentation *verifiable.Presentation) ProveOptions {
	return func(opts *proveOpts) {
		opts.presentation = presentation
	}
}
func WithRawPresentationToProve(presentation json.RawMessage) ProveOptions {
	return func(opts *proveOpts) {
		opts.rawPresentation = presentation
	}
}
type verifyOpts struct {
	credentialID string
	rawCredential json.RawMessage
	rawPresentation json.RawMessage
}
type VerificationOption func(opts *verifyOpts)
func WithStoredCredentialToVerify(id string) VerificationOption {
	return func(opts *verifyOpts) {
		opts.credentialID = id
	}
}
func WithRawCredentialToVerify(raw json.RawMessage) VerificationOption {
	return func(opts *verifyOpts) {
		opts.rawCredential = raw
	}
}
func WithRawPresentationToVerify(raw json.RawMessage) VerificationOption {
	return func(opts *verifyOpts) {
		opts.rawPresentation = raw
	}
}
type deriveOpts struct {
	credentialID string
	rawCredential json.RawMessage
	credential *verifiable.Credential
}
type CredentialToDerive func(opts *deriveOpts)
func FromStoredCredential(id string) CredentialToDerive {
	return func(opts *deriveOpts) {
		opts.credentialID = id
	}
}
func FromRawCredential(raw json.RawMessage) CredentialToDerive {
	return func(opts *deriveOpts) {
		opts.rawCredential = raw
	}
}
func FromCredential(cred *verifiable.Credential) CredentialToDerive {
	return func(opts *deriveOpts) {
		opts.credential = cred
	}
}
type AddContentOptions func(opts *addContentOpts)
type addContentOpts struct {
	collectionID string
}
func AddByCollection(collectionID string) AddContentOptions {
	return func(opts *addContentOpts) {
		opts.collectionID = collectionID
	}
}
type GetAllContentsOptions func(opts *getAllContentsOpts)
type getAllContentsOpts struct {
	collectionID string
}
func FilterByCollection(collectionID string) GetAllContentsOptions {
	return func(opts *getAllContentsOpts) {
		opts.collectionID = collectionID
	}
}
type connectOpts struct {
	outofband.EventOptions
	timeout time.Duration
}
type ConnectOptions func(opts *connectOpts)
func WithMyLabel(label string) ConnectOptions {
	return func(opts *connectOpts) {
		opts.Label = label
	}
}
func WithReuseAnyConnection(reuse bool) ConnectOptions {
	return func(opts *connectOpts) {
		opts.ReuseAny = reuse
	}
}
func WithReuseDID(did string) ConnectOptions {
	return func(opts *connectOpts) {
		opts.ReuseDID = did
	}
}
func WithRouterConnections(conns ...string) ConnectOptions {
	return func(opts *connectOpts) {
		opts.Connections = conns
	}
}
func WithConnectTimeout(timeout time.Duration) ConnectOptions {
	return func(opts *connectOpts) {
		opts.timeout = timeout
	}
}
func getOobMessageOptions(opts *connectOpts) []outofband.MessageOption {
	var result []outofband.MessageOption
	if len(opts.Connections) > 0 {
		result = append(result, outofband.WithRouterConnections(opts.Connections...))
	}
	if opts.ReuseAny {
		result = append(result, outofband.ReuseAnyConnection())
	}
	return append(result, outofband.ReuseConnection(opts.ReuseDID))
}
type proposePresOpts struct {
	from string
	connectOpts []ConnectOptions
	timeout time.Duration
}
type ProposePresentationOption func(opts *proposePresOpts)
func WithFromDID(from string) ProposePresentationOption {
	return func(opts *proposePresOpts) {
		opts.from = from
	}
}
func WithConnectOptions(options ...ConnectOptions) ProposePresentationOption {
	return func(opts *proposePresOpts) {
		opts.connectOpts = options
	}
}
func WithPresentProofTimeout(timeout time.Duration) ProposePresentationOption {
	return func(opts *proposePresOpts) {
		opts.timeout = timeout
	}
}
type presentProofOpts struct {
	rawPresentation json.RawMessage
	presentation *verifiable.Presentation
	waitForDone bool
	timeout time.Duration
}
type PresentProofOptions func(opts *presentProofOpts)
func FromPresentation(presentation *verifiable.Presentation) PresentProofOptions {
	return func(opts *presentProofOpts) {
		opts.presentation = presentation
	}
}