/* tslint:disable */
/* eslint-disable */
/**
 * Stacks 2.0 Blockchain API
 * This is the documentation for the Stacks 2.0 Blockchain API.  It is comprised of two parts; the Stacks Blockchain API and the Stacks Core API.  [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/614feab5c108d292bffa#?env%5BStacks%20Blockchain%20API%5D=W3sia2V5Ijoic3R4X2FkZHJlc3MiLCJ2YWx1ZSI6IlNUMlRKUkhESE1ZQlE0MTdIRkIwQkRYNDMwVFFBNVBYUlg2NDk1RzFWIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJibG9ja19pZCIsInZhbHVlIjoiMHgiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6Im9mZnNldCIsInZhbHVlIjoiMCIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibGltaXRfdHgiLCJ2YWx1ZSI6IjIwMCIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibGltaXRfYmxvY2siLCJ2YWx1ZSI6IjMwIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJ0eF9pZCIsInZhbHVlIjoiMHg1NDA5MGMxNmE3MDJiNzUzYjQzMTE0ZTg4NGJjMTlhODBhNzk2MzhmZDQ0OWE0MGY4MDY4Y2RmMDAzY2RlNmUwIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJjb250cmFjdF9pZCIsInZhbHVlIjoiU1RKVFhFSlBKUFBWRE5BOUIwNTJOU1JSQkdRQ0ZOS1ZTMTc4VkdIMS5oZWxsb193b3JsZFxuIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJidGNfYWRkcmVzcyIsInZhbHVlIjoiYWJjIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJjb250cmFjdF9hZGRyZXNzIiwidmFsdWUiOiJTVEpUWEVKUEpQUFZETkE5QjA1Mk5TUlJCR1FDRk5LVlMxNzhWR0gxIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJjb250cmFjdF9uYW1lIiwidmFsdWUiOiJoZWxsb193b3JsZCIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiY29udHJhY3RfbWFwIiwidmFsdWUiOiJzdG9yZSIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiY29udHJhY3RfbWV0aG9kIiwidmFsdWUiOiJnZXQtdmFsdWUiLCJlbmFibGVkIjp0cnVlfV0=) 
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
import {
    RosettaPublicKey,
    RosettaPublicKeyFromJSON,
    RosettaPublicKeyFromJSONTyped,
    RosettaPublicKeyToJSON,
    SigningPayload,
    SigningPayloadFromJSON,
    SigningPayloadFromJSONTyped,
    SigningPayloadToJSON,
} from './';

/**
 * Signature contains the payload that was signed, the public keys of the keypairs used to produce the signature, the signature (encoded in hex), and the SignatureType. PublicKey is often times not known during construction of the signing payloads but may be needed to combine signatures properly.
 * @export
 * @interface RosettaSignature
 */
export interface RosettaSignature {
    /**
     * 
     * @type {SigningPayload}
     * @memberof RosettaSignature
     */
    signing_payload: SigningPayload;
    /**
     * 
     * @type {RosettaPublicKey}
     * @memberof RosettaSignature
     */
    public_key: RosettaPublicKey;
    /**
     * SignatureType is the type of a cryptographic signature.
     * @type {string}
     * @memberof RosettaSignature
     */
    signature_type: RosettaSignatureSignatureTypeEnum;
    /**
     * 
     * @type {string}
     * @memberof RosettaSignature
     */
    hex_bytes: string;
}

export function RosettaSignatureFromJSON(json: any): RosettaSignature {
    return RosettaSignatureFromJSONTyped(json, false);
}

export function RosettaSignatureFromJSONTyped(json: any, ignoreDiscriminator: boolean): RosettaSignature {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'signing_payload': SigningPayloadFromJSON(json['signing_payload']),
        'public_key': RosettaPublicKeyFromJSON(json['public_key']),
        'signature_type': json['signature_type'],
        'hex_bytes': json['hex_bytes'],
    };
}

export function RosettaSignatureToJSON(value?: RosettaSignature | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'signing_payload': SigningPayloadToJSON(value.signing_payload),
        'public_key': RosettaPublicKeyToJSON(value.public_key),
        'signature_type': value.signature_type,
        'hex_bytes': value.hex_bytes,
    };
}

/**
* @export
* @enum {string}
*/
export enum RosettaSignatureSignatureTypeEnum {
    ecdsa = 'ecdsa',
    ecdsa_recovery = 'ecdsa_recovery',
    ed25519 = 'ed25519',
    schnorr_1 = 'schnorr_1',
    schnorr_poseidon = 'schnorr_poseidon'
}


