import { AccessAction } from '../common/ledger-access'; import { LedgerHandle } from '../common/ledger-handle'; import { LedgerMeta, LedgerProof } from '../common/ledger-meta'; import { Ledger } from '../records/ledger'; import { LedgerBridge } from '../records/ledger-bridge'; import { LedgerCircle, LedgerCircleSigner } from '../records/ledger-circle'; import { LedgerDomain } from '../records/ledger-domain'; import { LedgerEffect } from '../records/ledger-effect'; import { LedgerIntent } from '../records/ledger-intent'; import { LedgerPolicy } from '../records/ledger-policy'; import { LedgerSchema, SchemaContent } from '../records/ledger-schema'; import { LedgerSigner, LedgerSigningParams } from '../records/ledger-signer'; import { LedgerSymbol } from '../records/ledger-symbol'; import { LedgerWallet } from '../records/ledger-wallet'; export declare enum LayoutRecord { Schema = "schema", Bridge = "bridge", Wallet = "wallet", Circle = "circle", Policy = "policy", Symbol = "symbol", Signer = "signer", Intent = "intent", Effect = "effect", Domain = "domain", Ledger = "ledger", SignerProof = "signer-proof", CircleSigner = "circle-signer" } export declare const LayoutRecords: LayoutRecord[]; export type LayoutInputs = SchemaContent; export type LayoutCustom = { title: string; version?: string; inputs?: LayoutInputs; }; export type BaseLayoutExec = { action?: AccessAction.Create | AccessAction.Update | AccessAction.Drop; merge?: boolean; domain?: null | string; keyPair?: `key@${LedgerHandle}`; }; export type CircleLayoutExec = BaseLayoutExec & { members?: LedgerHandle | LedgerHandle[]; }; export type SignerLayoutExec = BaseLayoutExec & { circles?: LedgerHandle | LedgerHandle[]; password?: string; }; export type ProofLayoutExec = BaseLayoutExec & { handle: LedgerHandle; }; export type BaseLayoutSign = LedgerSigningParams; export type BaseRecordValue> = { data: Partial; meta?: Partial; exec?: TLayoutExec; sign?: BaseLayoutSign; }; export type LayoutRecordsMap = Partial<{ [LayoutRecord.Schema]: BaseRecordValue[]; [LayoutRecord.Bridge]: BaseRecordValue[]; [LayoutRecord.Wallet]: BaseRecordValue[]; [LayoutRecord.Circle]: BaseRecordValue[]; [LayoutRecord.Policy]: BaseRecordValue[]; [LayoutRecord.Symbol]: BaseRecordValue[]; [LayoutRecord.Signer]: BaseRecordValue[]; [LayoutRecord.Intent]: BaseRecordValue[]; [LayoutRecord.Effect]: BaseRecordValue[]; [LayoutRecord.Domain]: BaseRecordValue[]; [LayoutRecord.Ledger]: BaseRecordValue[]; [LayoutRecord.SignerProof]: BaseRecordValue, ProofLayoutExec>[]; [LayoutRecord.CircleSigner]: BaseRecordValue[]; }>; /** * @example * "{{#each symbols}}": { * "handle": "{{handle}}", * "factor": "{{factor}}" * } */ type loopKey = `{{#each ${string}}}`; export type ArrayTemplateFromLoop> = Record>; export type LayoutRecordValues> = BaseRecordValue[] | ArrayTemplateFromLoop; export type LayoutRecordValue> = BaseRecordValue; export type SchemaLayoutValue = { record: LayoutRecord.Schema; values: LayoutRecordValues; }; export type BridgeLayoutValue = { record: LayoutRecord.Bridge; values: LayoutRecordValues; }; export type WalletLayoutValue = { record: LayoutRecord.Wallet; values: LayoutRecordValues; }; export type CircleLayoutValue = { record: LayoutRecord.Circle; values: LayoutRecordValues; }; export type CircleSignerLayoutValue = { record: LayoutRecord.CircleSigner; values: LayoutRecordValues; }; export type PolicyLayoutValue = { record: LayoutRecord.Policy; values: LayoutRecordValues; }; export type IntentLayoutValue = { record: LayoutRecord.Intent; values: LayoutRecordValues; }; export type SignerLayoutValue = { record: LayoutRecord.Signer; values: LayoutRecordValues; }; export type DomainLayoutValue = { record: LayoutRecord.Domain; values: LayoutRecordValues; }; export type EffectLayoutValue = { record: LayoutRecord.Effect; values: LayoutRecordValues; }; export type SymbolLayoutValue = { record: LayoutRecord.Symbol; values: LayoutRecordValues; }; export type LedgerLayoutValue = { record: LayoutRecord.Ledger; values: LayoutRecordValues; }; export type SignerProofLayoutValue = { record: LayoutRecord.SignerProof; values: LayoutRecordValues; }; export type LayoutValue = SchemaLayoutValue | BridgeLayoutValue | WalletLayoutValue | CircleLayoutValue | PolicyLayoutValue | IntentLayoutValue | SignerLayoutValue | DomainLayoutValue | EffectLayoutValue | SymbolLayoutValue | LedgerLayoutValue | SignerProofLayoutValue; /** * Standard representation of a ledger layout. * It can be used to describe existing ledgers, and * consequentially to easily replicate them. */ export type LedgerLayout = { custom: LayoutCustom; values: LayoutValue[]; }; export {};