Skip to content

Commit

Permalink
feat(algoapi): create separate types for REST APIs and SDK (#129)
Browse files Browse the repository at this point in the history
fix #120 

BREAKING CHANGE: All APIs and return types from `AlgodClient`, `IndexerClient`, and `KmdClient` have changed. Additional breaking changes:
- `MinBalance(AccountInfo)` constructor has changed to take an `AlgoSdk.Algod.Account` value instead.
- Remove `PrivateKey.SignTransaction`
- Rename `AppEvalDelta` -> `EvalDelta`
- Rename `AppStateDelta` -> `StateDelta`
- Rename `EvalDelta` -> `ValueDelta`
- Rename `EvalDeltaKeyValue` -> `ValueDeltaKeyValue`
- Remove readonly fields from all Transaction types.
- Rename `Multisig` -> `MultisigSig`
  • Loading branch information
jasonboukheir committed Apr 3, 2022
1 parent 1d4d718 commit 0a97a11
Show file tree
Hide file tree
Showing 478 changed files with 13,768 additions and 6,641 deletions.
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"files.exclude": {
"**/Builds": true,
"**/Logs": true,
"**/.DS_Store": true,
"**/.git": true,
"**/.gitmodules": true,
Expand Down
3 changes: 2 additions & 1 deletion Runtime/CareBoo.AlgoSdk.Json/CareBoo.AlgoSdk.Json.asmdef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"references": [
"GUID:e0cd26848372d4e5c891c569017e11f1",
"GUID:2ee6601452ca245499e63674423f6541",
"GUID:70d524b45145c40acbd35603c8e43743"
"GUID:70d524b45145c40acbd35603c8e43743",
"GUID:d8b63aba1907145bea998dd612889d6b"
],
"includePlatforms": [],
"excludePlatforms": [],
Expand Down
13 changes: 12 additions & 1 deletion Runtime/CareBoo.AlgoSdk.Json/JsonReadError.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Unity.Mathematics;

namespace AlgoSdk.Json
{
Expand All @@ -14,13 +15,23 @@ public enum JsonReadError

public class JsonReadException : Exception
{
const int surroundingSize = 50;

public JsonReadException(JsonReadError error, char c, int pos)
: base($"{error} on char '{c}' at pos: {pos}")
{ }

public JsonReadException(JsonReadError error, JsonReader context)
: base($"{error} on char '{context.Char}' at position: {context.Position} in JSON text:\n{context.Text}")
: base($"{error} on char '{context.Char}' at position: {context.Position} in JSON text:"
+ $"\nsurrounding text: {GetSurroundingText(context)}"
+ $"\n{context.Text}")
{ }

static string GetSurroundingText(JsonReader context)
{
var start = math.max(0, context.Position - surroundingSize);
return context.Text.Substring(start, surroundingSize * 2);
}
}

public static class JsonReadErrorExtensions
Expand Down
10 changes: 10 additions & 0 deletions Runtime/CareBoo.AlgoSdk.LowLevel/ByteArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,22 @@ namespace AlgoSdk.LowLevel
{
public interface IArray<T>
{
/// <summary>
/// The length in <see cref="T"/> of this array.
/// </summary>
int Length { get; }

/// <summary>
/// Get/set the element at the index.
/// </summary>
T this[int index] { get; set; }
}

public interface IContiguousArray<T> : IArray<T>
{
/// <summary>
/// Gets the ptr at the beginning of this array.
/// </summary>
unsafe void* GetUnsafePtr();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct ClientMeta

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.ClientMeta>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.ClientMeta>(false).Assign("description", null, (AlgoSdk.WalletConnect.ClientMeta x) => x.Description, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Description = value, AlgoSdk.StringComparer.Instance, false).Assign("url", null, (AlgoSdk.WalletConnect.ClientMeta x) => x.Url, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Url = value, AlgoSdk.StringComparer.Instance, false).Assign("icons", null, (AlgoSdk.WalletConnect.ClientMeta x) => x.IconUrls, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String[] value) => x.IconUrls = value, AlgoSdk.ArrayComparer<System.String, AlgoSdk.StringComparer>.Instance, false).Assign("name", null, (AlgoSdk.WalletConnect.ClientMeta x) => x.Name, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Name = value, AlgoSdk.StringComparer.Instance, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.ClientMeta>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.ClientMeta>(false).Assign("description", (AlgoSdk.WalletConnect.ClientMeta x) => x.Description, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Description = value, AlgoSdk.StringComparer.Instance).Assign("url", (AlgoSdk.WalletConnect.ClientMeta x) => x.Url, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Url = value, AlgoSdk.StringComparer.Instance).Assign("icons", (AlgoSdk.WalletConnect.ClientMeta x) => x.IconUrls, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String[] value) => x.IconUrls = value, AlgoSdk.ArrayComparer<System.String, AlgoSdk.StringComparer>.Instance).Assign("name", (AlgoSdk.WalletConnect.ClientMeta x) => x.Name, (ref AlgoSdk.WalletConnect.ClientMeta x, System.String value) => x.Name = value, AlgoSdk.StringComparer.Instance));
return true;
}
}
Expand Down
8 changes: 4 additions & 4 deletions Runtime/CareBoo.AlgoSdk.WalletConnect/Models/ClientMeta.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ namespace AlgoSdk.WalletConnect
public partial struct ClientMeta
: IEquatable<ClientMeta>
{
[AlgoApiField("description", null)]
[AlgoApiField("description")]
public string Description;

[AlgoApiField("url", null)]
[AlgoApiField("url")]
public string Url;

[AlgoApiField("icons", null)]
[AlgoApiField("icons")]
public string[] IconUrls;

[AlgoApiField("name", null)]
[AlgoApiField("name")]
public string Name;

public bool Equals(ClientMeta other)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct EncryptedPayload

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.EncryptedPayload>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.EncryptedPayload>(false).Assign("iv", null, (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Iv, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Iv = value, false).Assign("hmac", null, (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Signature, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Signature = value, false).Assign("data", null, (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Data, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Data = value, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.EncryptedPayload>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.EncryptedPayload>(false).Assign("iv", (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Iv, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Iv = value).Assign("hmac", (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Signature, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Signature = value).Assign("data", (AlgoSdk.WalletConnect.EncryptedPayload x) => x.Data, (ref AlgoSdk.WalletConnect.EncryptedPayload x, AlgoSdk.Hex value) => x.Data = value));
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ namespace AlgoSdk.WalletConnect
[AlgoApiObject]
public partial struct EncryptedPayload
{
[AlgoApiField("iv", null)]
[AlgoApiField("iv")]
public Hex Iv;

[AlgoApiField("hmac", null)]
[AlgoApiField("hmac")]
public Hex Signature;

[AlgoApiField("data", null)]
[AlgoApiField("data")]
public Hex Data;

public byte[] Sign(byte[] key)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct JsonRpcError

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcError>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcError>(false).Assign("code", null, (AlgoSdk.WalletConnect.JsonRpcError x) => x.Code, (ref AlgoSdk.WalletConnect.JsonRpcError x, System.Int32 value) => x.Code = value, false).Assign("message", null, (AlgoSdk.WalletConnect.JsonRpcError x) => x.Message, (ref AlgoSdk.WalletConnect.JsonRpcError x, System.String value) => x.Message = value, AlgoSdk.StringComparer.Instance, false).Assign("data", null, (AlgoSdk.WalletConnect.JsonRpcError x) => x.Data, (ref AlgoSdk.WalletConnect.JsonRpcError x, AlgoSdk.AlgoApiObject value) => x.Data = value, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcError>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcError>(false).Assign("code", (AlgoSdk.WalletConnect.JsonRpcError x) => x.Code, (ref AlgoSdk.WalletConnect.JsonRpcError x, System.Int32 value) => x.Code = value).Assign("message", (AlgoSdk.WalletConnect.JsonRpcError x) => x.Message, (ref AlgoSdk.WalletConnect.JsonRpcError x, System.String value) => x.Message = value, AlgoSdk.StringComparer.Instance).Assign("data", (AlgoSdk.WalletConnect.JsonRpcError x) => x.Data, (ref AlgoSdk.WalletConnect.JsonRpcError x, AlgoSdk.AlgoApiObject value) => x.Data = value));
return true;
}
}
Expand Down
6 changes: 3 additions & 3 deletions Runtime/CareBoo.AlgoSdk.WalletConnect/Models/JsonRpcError.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ public interface IJsonRpcError
public partial struct JsonRpcError
: IEquatable<JsonRpcError>
{
[AlgoApiField("code", null)]
[AlgoApiField("code")]
public int Code { get; set; }

[AlgoApiField("message", null)]
[AlgoApiField("message")]
public string Message { get; set; }

[AlgoApiField("data", null)]
[AlgoApiField("data")]
public AlgoApiObject Data { get; set; }

public bool Equals(JsonRpcError other)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct JsonRpcRequest

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcRequest>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcRequest>(true).Assign("id", null, (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Id, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.UInt64 value) => x.Id = value, false).Assign("jsonrpc", null, (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.JsonRpc, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.String value) => x.JsonRpc = value, AlgoSdk.StringComparer.Instance, false).Assign("method", null, (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Method, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.String value) => x.Method = value, AlgoSdk.StringComparer.Instance, false).Assign("params", null, (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Params, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, AlgoSdk.AlgoApiObject[] value) => x.Params = value, AlgoSdk.ArrayComparer<AlgoSdk.AlgoApiObject>.Instance, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcRequest>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcRequest>(true).Assign("id", (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Id, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.UInt64 value) => x.Id = value).Assign("jsonrpc", (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.JsonRpc, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.String value) => x.JsonRpc = value, AlgoSdk.StringComparer.Instance).Assign("method", (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Method, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, System.String value) => x.Method = value, AlgoSdk.StringComparer.Instance).Assign("params", (AlgoSdk.WalletConnect.JsonRpcRequest x) => x.Params, (ref AlgoSdk.WalletConnect.JsonRpcRequest x, AlgoSdk.AlgoApiObject[] value) => x.Params = value, AlgoSdk.ArrayComparer<AlgoSdk.AlgoApiObject>.Instance));
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ public partial struct JsonRpcRequest
, IEquatable<JsonRpcRequest>
{
/// <inheritdoc />
[AlgoApiField("id", null)]
[AlgoApiField("id")]
public ulong Id { get; set; }

/// <inheritdoc />
[AlgoApiField("jsonrpc", null)]
[AlgoApiField("jsonrpc")]
public string JsonRpc { get; set; }

/// <inheritdoc />
[AlgoApiField("method", null)]
[AlgoApiField("method")]
public string Method { get; set; }

/// <inheritdoc />
[AlgoApiField("params", null)]
[AlgoApiField("params")]
public AlgoApiObject[] Params { get; set; }

public bool Equals(JsonRpcRequest other)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct JsonRpcResponse

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcResponse>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcResponse>(true).Assign("id", null, (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Id, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.Optional<System.UInt64> value) => x.Id = value, false).Assign("jsonrpc", null, (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.JsonRpc, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, System.String value) => x.JsonRpc = value, AlgoSdk.StringComparer.Instance, false).Assign("result", null, (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Result, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.AlgoApiObject value) => x.Result = value, false).Assign("error", null, (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Error, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.WalletConnect.JsonRpcError value) => x.Error = value, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.JsonRpcResponse>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.JsonRpcResponse>(true).Assign("id", (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Id, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.Optional<System.UInt64> value) => x.Id = value).Assign("jsonrpc", (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.JsonRpc, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, System.String value) => x.JsonRpc = value, AlgoSdk.StringComparer.Instance).Assign("result", (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Result, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.AlgoApiObject value) => x.Result = value).Assign("error", (AlgoSdk.WalletConnect.JsonRpcResponse x) => x.Error, (ref AlgoSdk.WalletConnect.JsonRpcResponse x, AlgoSdk.WalletConnect.JsonRpcError value) => x.Error = value));
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,19 @@ public partial struct JsonRpcResponse
, IEquatable<JsonRpcResponse>
{
/// <inheritdoc />
[AlgoApiField("id", null)]
[AlgoApiField("id")]
public Optional<ulong> Id { get; set; }

/// <inheritdoc />
[AlgoApiField("jsonrpc", null)]
[AlgoApiField("jsonrpc")]
public string JsonRpc { get; set; }

/// <inheritdoc />
[AlgoApiField("result", null)]
[AlgoApiField("result")]
public AlgoApiObject Result { get; set; }

/// <inheritdoc />
[AlgoApiField("error", null)]
[AlgoApiField("error")]
public JsonRpcError Error { get; set; }

/// <inheritdoc />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial struct MultisigMetadata

private static bool @__generated__InitializeAlgoApiFormatters()
{
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.MultisigMetadata>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.MultisigMetadata>(false).Assign("version", null, (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Version, (ref AlgoSdk.WalletConnect.MultisigMetadata x, System.Byte value) => x.Version = value, false).Assign("threshold", null, (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Threshold, (ref AlgoSdk.WalletConnect.MultisigMetadata x, System.Byte value) => x.Threshold = value, false).Assign("addrs", null, (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Addresses, (ref AlgoSdk.WalletConnect.MultisigMetadata x, AlgoSdk.Address[] value) => x.Addresses = value, AlgoSdk.ArrayComparer<AlgoSdk.Address>.Instance, false));
AlgoSdk.AlgoApiFormatterLookup.Add<AlgoSdk.WalletConnect.MultisigMetadata>(new AlgoSdk.AlgoApiObjectFormatter<AlgoSdk.WalletConnect.MultisigMetadata>(false).Assign("version", (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Version, (ref AlgoSdk.WalletConnect.MultisigMetadata x, System.Byte value) => x.Version = value).Assign("threshold", (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Threshold, (ref AlgoSdk.WalletConnect.MultisigMetadata x, System.Byte value) => x.Threshold = value).Assign("addrs", (AlgoSdk.WalletConnect.MultisigMetadata x) => x.Addresses, (ref AlgoSdk.WalletConnect.MultisigMetadata x, AlgoSdk.Address[] value) => x.Addresses = value, AlgoSdk.ArrayComparer<AlgoSdk.Address>.Instance));
return true;
}
}
Expand Down
18 changes: 9 additions & 9 deletions Runtime/CareBoo.AlgoSdk.WalletConnect/Models/MultisigMetadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace AlgoSdk.WalletConnect
{
/// <summary>
/// This struct represents metadata required for signing transactions sent by
/// multisig accounts via WalletConnect. See <see cref="Multisig"/> for more information.
/// multisig accounts via WalletConnect. See <see cref="MultisigSig"/> for more information.
/// </summary>
[AlgoApiObject]
public partial struct MultisigMetadata
Expand All @@ -13,19 +13,19 @@ public partial struct MultisigMetadata
/// <summary>
/// Version of the multisig.
/// </summary>
[AlgoApiField("version", null)]
[AlgoApiField("version")]
public byte Version;

/// <summary>
/// Number of signatures required for valid transaction.
/// </summary>
[AlgoApiField("threshold", null)]
[AlgoApiField("threshold")]
public byte Threshold;

/// <summary>
/// The signers of this multisig.
/// </summary>
[AlgoApiField("addrs", null)]
[AlgoApiField("addrs")]
public Address[] Addresses;

public bool Equals(MultisigMetadata other)
Expand All @@ -36,7 +36,7 @@ public bool Equals(MultisigMetadata other)
;
}

public static implicit operator MultisigMetadata(Multisig msig)
public static implicit operator MultisigMetadata(MultisigSig msig)
{
var addresses = new Address[msig.Subsigs.Length];
for (var i = 0; i < addresses.Length; i++)
Expand All @@ -49,12 +49,12 @@ public bool Equals(MultisigMetadata other)
};
}

public static implicit operator Multisig(MultisigMetadata msigMeta)
public static implicit operator MultisigSig(MultisigMetadata msigMeta)
{
var subsigs = new Multisig.Subsig[msigMeta.Addresses.Length];
var subsigs = new MultisigSig.Subsig[msigMeta.Addresses.Length];
for (var i = 0; i < subsigs.Length; i++)
subsigs[i] = new Multisig.Subsig { PublicKey = msigMeta.Addresses[i] };
return new Multisig
subsigs[i] = new MultisigSig.Subsig { PublicKey = msigMeta.Addresses[i] };
return new MultisigSig
{
Version = msigMeta.Version,
Threshold = msigMeta.Threshold,
Expand Down
Loading

0 comments on commit 0a97a11

Please sign in to comment.