@puzzlehq/types
Version:
Puzzle <3 Typescript
110 lines (94 loc) • 2.44 kB
text/typescript
import z from 'zod';
export const containsAleoAddressRegex = /aleo1[a-z0-9]{58}/gi;
export const aleoAddressRegex = /^aleo1[a-z0-9]{58}$/i;
export const aleoViewKeyRegex = /^AViewKey1[a-z0-9]{44}$/i;
export const aleoPrivateKeyRegex = /^APrivateKey1[a-z0-9]{47}$/i;
export const aleoTransitionIdRegex = /^au1[a-z0-9]{58}$/i;
export const aleoTransactionIdRegex = /^at1[a-z0-9]{58}$/i;
export const aleoFieldRegex = /^\d+field$/;
export const aleoU32 = /^\d+u32$/;
export const aleoU64 = /^\d+u64$/;
export const zodAddress = z.string().regex(aleoAddressRegex);
export const zodViewKey = z.string().regex(aleoViewKeyRegex);
export const zodPrivateKey = z.string().regex(aleoPrivateKeyRegex);
export const zodTransitionId = z.string().regex(aleoTransitionIdRegex);
export const zodTransactionId = z.string().regex(aleoTransactionIdRegex);
export const zodField = z.string().regex(aleoFieldRegex);
export const zodU32 = z.string().regex(aleoU32);
export const zodU64 = z.string().regex(aleoU64);
export type Block = {
header: Header;
transactions: TransactionWrapper[];
aborted_transaction_ids: string[];
};
export type Header = {
metadata: Metadata;
};
export type Metadata = {
height: number;
timestamp: number;
};
export type TransactionWrapper = {
status: string;
type: string;
index: number;
transaction: Transaction;
finalize: any[];
};
export type Transaction = {
type: string;
id: string;
execution?: Execution;
deployment?: Deployment;
owner?: Owner;
fee?: Fee;
};
export type Execution = {
transitions: Transition[];
global_state_root: string;
proof: string;
};
export type Deployment = {
edition: number;
program: string;
};
export type Owner = {
address: string;
};
export type Fee = {
transition: Transition;
global_state_root: string;
proof: string;
};
export type Transition = {
id: string;
program: string;
function: string;
inputs: Input[];
outputs: Output[];
finalize?: string[];
tpk: string;
tcm: string;
scm: string;
};
export type Input = {
type: InputOutputType;
id: string;
tag?: string;
value?: string;
};
export type Output = {
type: InputOutputType;
id: string;
value: string;
checksum?: string;
};
export enum InputOutputType {
Record = 'record',
OutputRecord = 'outputRecord',
Public = 'public',
Private = 'private',
Constant = 'constant',
Future = 'future',
ExternalRecord = 'external_record',
}