/* 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 {
    RosettaAccount,
    RosettaAccountFromJSON,
    RosettaAccountFromJSONTyped,
    RosettaAccountToJSON,
} from './';

/**
 * SigningPayload is signed by the client with the keypair associated with an address using the specified SignatureType. SignatureType can be optionally populated if there is a restriction on the signature scheme that can be used to sign the payload.
 * @export
 * @interface SigningPayload
 */
export interface SigningPayload {
    /**
     * The network-specific address of the account that should sign the payload.
     * @type {string}
     * @memberof SigningPayload
     */
    address?: string;
    /**
     * 
     * @type {RosettaAccount}
     * @memberof SigningPayload
     */
    account_identifier?: RosettaAccount;
    /**
     * 
     * @type {string}
     * @memberof SigningPayload
     */
    hex_bytes: string;
    /**
     * SignatureType is the type of a cryptographic signature.
     * @type {string}
     * @memberof SigningPayload
     */
    signature_type?: SigningPayloadSignatureTypeEnum;
}

export function SigningPayloadFromJSON(json: any): SigningPayload {
    return SigningPayloadFromJSONTyped(json, false);
}

export function SigningPayloadFromJSONTyped(json: any, ignoreDiscriminator: boolean): SigningPayload {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'address': !exists(json, 'address') ? undefined : json['address'],
        'account_identifier': !exists(json, 'account_identifier') ? undefined : RosettaAccountFromJSON(json['account_identifier']),
        'hex_bytes': json['hex_bytes'],
        'signature_type': !exists(json, 'signature_type') ? undefined : json['signature_type'],
    };
}

export function SigningPayloadToJSON(value?: SigningPayload | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'address': value.address,
        'account_identifier': RosettaAccountToJSON(value.account_identifier),
        'hex_bytes': value.hex_bytes,
        'signature_type': value.signature_type,
    };
}

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


