Skip to content

Commit

Permalink
Plutus Datum JSON implementation for BasicConversions
Browse files Browse the repository at this point in the history
  • Loading branch information
rooooooooob committed Feb 3, 2022
1 parent b0ad5b7 commit be8542a
Show file tree
Hide file tree
Showing 3 changed files with 278 additions and 110 deletions.
186 changes: 114 additions & 72 deletions rust/pkg/cardano_serialization_lib.js.flow
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,6 @@
* @flow
*/

/**
* @param {Uint8Array} bytes
* @returns {TransactionMetadatum}
*/
declare export function encode_arbitrary_bytes_as_metadatum(
bytes: Uint8Array
): TransactionMetadatum;

/**
* @param {TransactionMetadatum} metadata
* @returns {Uint8Array}
*/
declare export function decode_arbitrary_bytes_from_metadatum(
metadata: TransactionMetadatum
): Uint8Array;

/**
* @param {string} json
* @param {number} schema
* @returns {TransactionMetadatum}
*/
declare export function encode_json_str_to_metadatum(
json: string,
schema: number
): TransactionMetadatum;

/**
* @param {TransactionMetadatum} metadatum
* @param {number} schema
* @returns {string}
*/
declare export function decode_metadatum_to_json_str(
metadatum: TransactionMetadatum,
schema: number
): string;

/**
* @param {TransactionHash} tx_body_hash
* @param {ByronAddress} addr
Expand Down Expand Up @@ -165,6 +129,49 @@ declare export function encode_json_str_to_native_script(
schema: number
): NativeScript;

/**
* @param {Uint8Array} bytes
* @returns {TransactionMetadatum}
*/
declare export function encode_arbitrary_bytes_as_metadatum(
bytes: Uint8Array
): TransactionMetadatum;

/**
* @param {TransactionMetadatum} metadata
* @returns {Uint8Array}
*/
declare export function decode_arbitrary_bytes_from_metadatum(
metadata: TransactionMetadatum
): Uint8Array;

/**
* @param {string} json
* @param {number} schema
* @returns {TransactionMetadatum}
*/
declare export function encode_json_str_to_metadatum(
json: string,
schema: number
): TransactionMetadatum;

/**
* @param {TransactionMetadatum} metadatum
* @param {number} schema
* @returns {string}
*/
declare export function decode_metadatum_to_json_str(
metadatum: TransactionMetadatum,
schema: number
): string;

/**
* @param {Transaction} tx
* @param {LinearFee} linear_fee
* @returns {BigNum}
*/
declare export function min_fee(tx: Transaction, linear_fee: LinearFee): BigNum;

/**
* @param {string} password
* @param {string} salt
Expand All @@ -190,11 +197,24 @@ declare export function decrypt_with_password(
): string;

/**
* @param {Transaction} tx
* @param {LinearFee} linear_fee
* @returns {BigNum}
* @param {string} json
* @param {number} schema
* @returns {PlutusData}
*/
declare export function min_fee(tx: Transaction, linear_fee: LinearFee): BigNum;
declare export function encode_json_str_to_plutus_datum(
json: string,
schema: number
): PlutusData;

/**
* @param {PlutusData} datum
* @param {number} schema
* @returns {string}
*/
declare export function decode_plutus_datum_to_json_str(
datum: PlutusData,
schema: number
): string;

/**
*/
Expand Down Expand Up @@ -274,31 +294,12 @@ declare export var StakeCredKind: {|
|};

/**
* Used to choosed the schema for a script JSON string
*/

declare export var LanguageKind: {|
+PlutusV1: 0, // 0
|};

/**
*/

declare export var PlutusDataKind: {|
+ConstrPlutusData: 0, // 0
+Map: 1, // 1
+List: 2, // 2
+Integer: 3, // 3
+Bytes: 4, // 4
|};

/**
*/

declare export var RedeemerTagKind: {|
+Spend: 0, // 0
+Mint: 1, // 1
+Cert: 2, // 2
+Reward: 3, // 3
declare export var ScriptSchema: {|
+Wallet: 0, // 0
+Node: 1, // 1
|};

/**
Expand All @@ -321,15 +322,6 @@ declare export var MetadataJsonSchema: {|
+DetailedSchema: 2, // 2
|};

/**
* Used to choosed the schema for a script JSON string
*/

declare export var ScriptSchema: {|
+Wallet: 0, // 0
+Node: 1, // 1
|};

/**
*/

Expand All @@ -340,6 +332,51 @@ declare export var CoinSelectionStrategyCIP2: {|
+RandomImproveMultiAsset: 3, // 3
|};

/**
*/

declare export var LanguageKind: {|
+PlutusV1: 0, // 0
|};

/**
*/

declare export var PlutusDataKind: {|
+ConstrPlutusData: 0, // 0
+Map: 1, // 1
+List: 2, // 2
+Integer: 3, // 3
+Bytes: 4, // 4
|};

/**
*/

declare export var RedeemerTagKind: {|
+Spend: 0, // 0
+Mint: 1, // 1
+Cert: 2, // 2
+Reward: 3, // 3
|};

/**
* JSON <-> PlutusData conversion schemas.
* Follows ScriptDataJsonSchema in cardano-cli defined at:
* https://github.com/input-output-hk/cardano-node/blob/master/cardano-api/src/Cardano/Api/ScriptData.hs#L254
*
* All methods here have the following restrictions due to limitations on dependencies:
* * JSON numbers above u64::MAX (positive) or below i64::MIN (negative) will throw errors
* * Hex strings for bytes don't accept odd-length (half-byte) strings.
* cardano-cli seems to support these however but it seems to be different than just 0-padding
* on either side when tested so proceed with caution
*/

declare export var PlutusDatumSchema: {|
+BasicConversions: 0, // 0
+DetailedSchema: 1, // 1
|};

/**
*/
declare export class Address {
Expand Down Expand Up @@ -652,6 +689,11 @@ declare export class BigInt {
*/
as_u64(): BigNum | void;

/**
* @returns {Int | void}
*/
as_int(): Int | void;

/**
* @param {string} text
* @returns {BigInt}
Expand Down
Loading

0 comments on commit be8542a

Please sign in to comment.