@algorandfoundation/algokit-utils 10.0.0-alpha.6 → 10.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "**"
7
7
  ],
8
8
  "name": "@algorandfoundation/algokit-utils",
9
- "version": "10.0.0-alpha.6",
9
+ "version": "10.0.0-alpha.7",
10
10
  "private": false,
11
11
  "description": "A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build solutions on Algorand.",
12
12
  "author": "Algorand Foundation",
@@ -20,9 +20,9 @@ type BlockAppEvalDelta = {
20
20
  /** [ld] Local state deltas keyed by address index. */
21
21
  localDeltas?: Map<number, Map<Uint8Array, BlockEvalDelta>>;
22
22
  /** [itx] Inner transactions produced by this application execution. */
23
- innerTxns?: SignedTxnInBlock[];
23
+ innerTxns?: SignedTxnWithAD[];
24
24
  /** [sa] Shared accounts referenced by local deltas. */
25
- sharedAccounts?: string[];
25
+ sharedAccounts?: Address[];
26
26
  /** [lg] Application log outputs. */
27
27
  logs?: Uint8Array[];
28
28
  };
@@ -54,7 +54,7 @@ const BlockAppEvalDeltaMeta = {
54
54
  name: "innerTxns",
55
55
  wireKey: "itx",
56
56
  optional: true,
57
- codec: new require_array.ArrayCodec(new require_object_model.ObjectModelCodec(() => SignedTxnInBlockMeta))
57
+ codec: new require_array.ArrayCodec(new require_object_model.ObjectModelCodec(() => SignedTxnWithADMeta))
58
58
  },
59
59
  {
60
60
  name: "sharedAccounts",
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","names":["BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta>","numberCodec","bytesCodec","bigIntCodec","BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta>","MapCodec","ObjectModelCodec","ArrayCodec","addressArrayCodec","bytesArrayCodec","BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData>","ApplyDataMeta: ObjectModelMetadata<ApplyData>","SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD>","SignedTransactionMeta","SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock>","booleanCodec","ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates>","BlockHeaderMeta: ObjectModelMetadata<BlockHeader>","stringCodec","addressCodec","BlockMeta: ObjectModelMetadata<Block>"],"sources":["../../../../../packages/algod_client/src/models/block.ts"],"sourcesContent":["import { type SignedTransaction, SignedTransactionMeta } from '@algorandfoundation/algokit-transact'\nimport {\n addressArrayCodec,\n addressCodec,\n Address,\n ArrayCodec,\n bigIntCodec,\n booleanCodec,\n bytesArrayCodec,\n bytesCodec,\n MapCodec,\n ObjectModelCodec,\n numberCodec,\n stringCodec,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\n\n/** BlockEvalDelta represents a TEAL value delta (block/msgpack wire keys). */\nexport type BlockEvalDelta = {\n /** [at] delta action. */\n action: number\n /** [bs] bytes value. */\n bytes?: Uint8Array\n /** [ui] uint value. */\n uint?: bigint\n}\n\nexport const BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta> = {\n name: 'BlockEvalDelta',\n kind: 'object',\n fields: [\n { name: 'action', wireKey: 'at', optional: false, codec: numberCodec },\n { name: 'bytes', wireKey: 'bs', optional: true, codec: bytesCodec },\n { name: 'uint', wireKey: 'ui', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * State changes from application execution, including inner transactions and logs.\n */\nexport type BlockAppEvalDelta = {\n /** [gd] Global state delta for the application. */\n globalDelta?: Map<Uint8Array, BlockEvalDelta>\n /** [ld] Local state deltas keyed by address index. */\n localDeltas?: Map<number, Map<Uint8Array, BlockEvalDelta>>\n /** [itx] Inner transactions produced by this application execution. */\n innerTxns?: SignedTxnInBlock[]\n /** [sa] Shared accounts referenced by local deltas. */\n sharedAccounts?: string[]\n /** [lg] Application log outputs. */\n logs?: Uint8Array[]\n}\n\nexport const BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta> = {\n name: 'BlockAppEvalDelta',\n kind: 'object',\n fields: [\n {\n name: 'globalDelta',\n wireKey: 'gd',\n optional: true,\n codec: new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta)),\n },\n {\n name: 'localDeltas',\n wireKey: 'ld',\n optional: true,\n codec: new MapCodec(numberCodec, new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta))),\n },\n {\n name: 'innerTxns',\n wireKey: 'itx',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnInBlockMeta)),\n },\n {\n name: 'sharedAccounts',\n wireKey: 'sa',\n optional: true,\n codec: addressArrayCodec,\n },\n { name: 'logs', wireKey: 'lg', optional: true, codec: bytesArrayCodec },\n ],\n}\n\n/** Tracking metadata for a specific StateProofType. */\nexport type BlockStateProofTrackingData = {\n /** [v] Vector commitment root of state proof voters. */\n stateProofVotersCommitment?: Uint8Array\n /** [t] Online total weight during state proof round. */\n stateProofOnlineTotalWeight?: bigint\n /** [n] Next round for which state proofs are accepted. */\n stateProofNextRound?: bigint\n}\n\nexport const BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData> = {\n name: 'BlockStateProofTrackingData',\n kind: 'object',\n fields: [\n { name: 'stateProofVotersCommitment', wireKey: 'v', optional: true, codec: bytesCodec },\n { name: 'stateProofOnlineTotalWeight', wireKey: 't', optional: true, codec: bigIntCodec },\n { name: 'stateProofNextRound', wireKey: 'n', optional: true, codec: bigIntCodec },\n ],\n}\n\nexport type ApplyData = {\n closingAmount?: bigint\n assetClosingAmount?: bigint\n senderRewards?: bigint\n receiverRewards?: bigint\n closeRewards?: bigint\n evalDelta?: BlockAppEvalDelta\n configAsset?: bigint\n applicationId?: bigint\n}\n\nexport const ApplyDataMeta: ObjectModelMetadata<ApplyData> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n { name: 'closingAmount', wireKey: 'ca', optional: true, codec: bigIntCodec },\n { name: 'assetClosingAmount', wireKey: 'aca', optional: true, codec: bigIntCodec },\n { name: 'senderRewards', wireKey: 'rs', optional: true, codec: bigIntCodec },\n { name: 'receiverRewards', wireKey: 'rr', optional: true, codec: bigIntCodec },\n { name: 'closeRewards', wireKey: 'rc', optional: true, codec: bigIntCodec },\n { name: 'evalDelta', wireKey: 'dt', optional: true, codec: new ObjectModelCodec(BlockAppEvalDeltaMeta) },\n { name: 'configAsset', wireKey: 'caid', optional: true, codec: bigIntCodec },\n { name: 'applicationId', wireKey: 'apid', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * SignedTxnWithAD is a SignedTransaction with additional ApplyData.\n */\nexport type SignedTxnWithAD = {\n /** The signed transaction. */\n signedTxn: SignedTransaction\n /** Apply data containing transaction execution information. */\n applyData?: ApplyData\n}\n\nexport const SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD> = {\n name: 'SignedTxnWithAD',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTransactionMeta),\n },\n {\n name: 'applyData',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ApplyDataMeta),\n },\n ],\n}\n\n/**\n * SignedTxnInBlock is a SignedTransaction with additional ApplyData and block-specific metadata.\n */\nexport type SignedTxnInBlock = {\n signedTxn: SignedTxnWithAD\n hasGenesisId?: boolean\n hasGenesisHash?: boolean\n}\n\nexport const SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTxnWithADMeta),\n },\n { name: 'hasGenesisId', wireKey: 'hgi', optional: true, codec: booleanCodec },\n { name: 'hasGenesisHash', wireKey: 'hgh', optional: true, codec: booleanCodec },\n ],\n}\n\nexport type ParticipationUpdates = {\n /** [partupdrmv] Expired participation accounts. */\n expiredParticipationAccounts?: string[]\n /** [partupdabs] Absent participation accounts. */\n absentParticipationAccounts?: string[]\n}\n\nexport const ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates> = {\n name: 'ParticipationUpdates',\n kind: 'object',\n fields: [\n {\n name: 'expiredParticipationAccounts',\n wireKey: 'partupdrmv',\n optional: true,\n codec: addressArrayCodec,\n },\n {\n name: 'absentParticipationAccounts',\n wireKey: 'partupdabs',\n optional: true,\n codec: addressArrayCodec,\n },\n ],\n}\n\nexport type BlockHeader = {\n /** [rnd] Round number. */\n round?: bigint\n /** [prev] Previous block hash. */\n previousBlockHash?: Uint8Array\n /** [prev512] Previous block hash using SHA-512. */\n previousBlockHash512?: Uint8Array\n /** [seed] Sortition seed. */\n seed?: Uint8Array\n /** [txn] Root of transaction merkle tree using SHA512_256. */\n transactionsRoot?: Uint8Array\n /** [txn256] Root of transaction vector commitment using SHA256. */\n transactionsRootSha256?: Uint8Array\n /** [txn512] Root of transaction vector commitment using SHA512. */\n transactionsRootSha512?: Uint8Array\n /** [ts] Block timestamp in seconds since epoch. */\n timestamp?: bigint\n /** [gen] Genesis ID. */\n genesisId?: string\n /** [gh] Genesis hash. */\n genesisHash?: Uint8Array\n /** [prp] Proposer address. */\n proposer?: Address\n /** [fc] Fees collected in this block. */\n feesCollected?: bigint\n /** [bi] Bonus incentive for block proposal. */\n bonus?: bigint\n /** [pp] Proposer payout. */\n proposerPayout?: bigint\n /** [fees] FeeSink address. */\n feeSink?: Address\n /** [rwd] RewardsPool address. */\n rewardsPool?: Address\n /** [earn] Rewards level. */\n rewardsLevel?: bigint\n /** [rate] Rewards rate. */\n rewardsRate?: bigint\n /** [frac] Rewards residue. */\n rewardsResidue?: bigint\n /** [rwcalr] Rewards recalculation round. */\n rewardsRecalculationRound?: bigint\n /** [proto] Current consensus protocol. */\n currentProtocol?: string\n /** [nextproto] Next proposed protocol. */\n nextProtocol?: string\n /** [nextyes] Next protocol approvals. */\n nextProtocolApprovals?: bigint\n /** [nextbefore] Next protocol vote deadline. */\n nextProtocolVoteBefore?: bigint\n /** [nextswitch] Next protocol switch round. */\n nextProtocolSwitchOn?: bigint\n /** [upgradeprop] Upgrade proposal. */\n upgradePropose?: string\n /** [upgradedelay] Upgrade delay in rounds. */\n upgradeDelay?: bigint\n /** [upgradeyes] Upgrade approval flag. */\n upgradeApprove?: boolean\n /** [tc] Transaction counter. */\n txnCounter?: bigint\n /** [spt] State proof tracking data keyed by state proof type. */\n stateProofTracking?: Map<number, BlockStateProofTrackingData>\n /** Represents participation account data that needs to be checked/acted on by the network */\n participationUpdates?: ParticipationUpdates\n}\n\nexport const BlockHeaderMeta: ObjectModelMetadata<BlockHeader> = {\n name: 'BlockHeader',\n kind: 'object',\n fields: [\n { name: 'round', wireKey: 'rnd', optional: true, codec: bigIntCodec },\n { name: 'previousBlockHash', wireKey: 'prev', optional: true, codec: bytesCodec },\n { name: 'previousBlockHash512', wireKey: 'prev512', optional: true, codec: bytesCodec },\n { name: 'seed', wireKey: 'seed', optional: true, codec: bytesCodec },\n { name: 'transactionsRoot', wireKey: 'txn', optional: false, codec: bytesCodec },\n { name: 'transactionsRootSha256', wireKey: 'txn256', optional: true, codec: bytesCodec },\n { name: 'transactionsRootSha512', wireKey: 'txn512', optional: true, codec: bytesCodec },\n { name: 'timestamp', wireKey: 'ts', optional: true, codec: bigIntCodec },\n { name: 'genesisId', wireKey: 'gen', optional: true, codec: stringCodec },\n { name: 'genesisHash', wireKey: 'gh', optional: true, codec: bytesCodec },\n { name: 'proposer', wireKey: 'prp', optional: true, codec: addressCodec },\n { name: 'feesCollected', wireKey: 'fc', optional: true, codec: bigIntCodec },\n { name: 'bonus', wireKey: 'bi', optional: true, codec: bigIntCodec },\n { name: 'proposerPayout', wireKey: 'pp', optional: true, codec: bigIntCodec },\n { name: 'feeSink', wireKey: 'fees', optional: true, codec: addressCodec },\n { name: 'rewardsPool', wireKey: 'rwd', optional: true, codec: addressCodec },\n { name: 'rewardsLevel', wireKey: 'earn', optional: true, codec: bigIntCodec },\n { name: 'rewardsRate', wireKey: 'rate', optional: true, codec: bigIntCodec },\n { name: 'rewardsResidue', wireKey: 'frac', optional: true, codec: bigIntCodec },\n { name: 'rewardsRecalculationRound', wireKey: 'rwcalr', optional: true, codec: bigIntCodec },\n { name: 'currentProtocol', wireKey: 'proto', optional: true, codec: stringCodec },\n { name: 'nextProtocol', wireKey: 'nextproto', optional: true, codec: stringCodec },\n { name: 'nextProtocolApprovals', wireKey: 'nextyes', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolVoteBefore', wireKey: 'nextbefore', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolSwitchOn', wireKey: 'nextswitch', optional: true, codec: bigIntCodec },\n { name: 'upgradePropose', wireKey: 'upgradeprop', optional: true, codec: stringCodec },\n { name: 'upgradeDelay', wireKey: 'upgradedelay', optional: true, codec: bigIntCodec },\n { name: 'upgradeApprove', wireKey: 'upgradeyes', optional: true, codec: booleanCodec },\n { name: 'txnCounter', wireKey: 'tc', optional: true, codec: bigIntCodec },\n {\n name: 'stateProofTracking',\n wireKey: 'spt',\n optional: true,\n codec: new MapCodec(numberCodec, new ObjectModelCodec(BlockStateProofTrackingDataMeta)),\n },\n {\n name: 'participationUpdates',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ParticipationUpdatesMeta),\n },\n ],\n}\n\n/**\n * Block contains the BlockHeader and the list of transactions (Payset).\n */\nexport type Block = {\n /** The block information (Header) */\n header: BlockHeader\n\n /** [txns] Block transactions (Payset). */\n payset?: SignedTxnInBlock[]\n}\n\nexport const BlockMeta: ObjectModelMetadata<Block> = {\n name: 'Block',\n kind: 'object',\n fields: [\n { name: 'header', flattened: true, optional: false, codec: new ObjectModelCodec(BlockHeaderMeta) },\n {\n name: 'payset',\n wireKey: 'txns',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(SignedTxnInBlockMeta)),\n },\n ],\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,MAAaA,qBAA0D;CACrE,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GAAE,MAAM;GAAU,SAAS;GAAM,UAAU;GAAO,OAAOC;GAAa;EACtE;GAAE,MAAM;GAAS,SAAS;GAAM,UAAU;GAAM,OAAOC;GAAY;EACnE;GAAE,MAAM;GAAQ,SAAS;GAAM,UAAU;GAAM,OAAOC;GAAa;EACpE;CACF;AAkBD,MAAaC,wBAAgE;CAC3E,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GACE,MAAM;GACN,SAAS;GACT,UAAU;GACV,OAAO,IAAIC,qBAASH,0BAAY,IAAII,sCAAiB,mBAAmB,CAAC;GAC1E;EACD;GACE,MAAM;GACN,SAAS;GACT,UAAU;GACV,OAAO,IAAID,qBAASJ,4BAAa,IAAII,qBAASH,0BAAY,IAAII,sCAAiB,mBAAmB,CAAC,CAAC;GACrG;EACD;GACE,MAAM;GACN,SAAS;GACT,UAAU;GACV,OAAO,IAAIC,yBAAW,IAAID,4CAAuB,qBAAqB,CAAC;GACxE;EACD;GACE,MAAM;GACN,SAAS;GACT,UAAU;GACV,OAAOE;GACR;EACD;GAAE,MAAM;GAAQ,SAAS;GAAM,UAAU;GAAM,OAAOC;GAAiB;EACxE;CACF;AAYD,MAAaC,kCAAoF;CAC/F,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GAAE,MAAM;GAA8B,SAAS;GAAK,UAAU;GAAM,OAAOR;GAAY;EACvF;GAAE,MAAM;GAA+B,SAAS;GAAK,UAAU;GAAM,OAAOC;GAAa;EACzF;GAAE,MAAM;GAAuB,SAAS;GAAK,UAAU;GAAM,OAAOA;GAAa;EAClF;CACF;AAaD,MAAaQ,gBAAgD;CAC3D,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GAAE,MAAM;GAAiB,SAAS;GAAM,UAAU;GAAM,OAAOR;GAAa;EAC5E;GAAE,MAAM;GAAsB,SAAS;GAAO,UAAU;GAAM,OAAOA;GAAa;EAClF;GAAE,MAAM;GAAiB,SAAS;GAAM,UAAU;GAAM,OAAOA;GAAa;EAC5E;GAAE,MAAM;GAAmB,SAAS;GAAM,UAAU;GAAM,OAAOA;GAAa;EAC9E;GAAE,MAAM;GAAgB,SAAS;GAAM,UAAU;GAAM,OAAOA;GAAa;EAC3E;GAAE,MAAM;GAAa,SAAS;GAAM,UAAU;GAAM,OAAO,IAAIG,sCAAiB,sBAAsB;GAAE;EACxG;GAAE,MAAM;GAAe,SAAS;GAAQ,UAAU;GAAM,OAAOH;GAAa;EAC5E;GAAE,MAAM;GAAiB,SAAS;GAAQ,UAAU;GAAM,OAAOA;GAAa;EAC/E;CACF;AAYD,MAAaS,sBAA4D;CACvE,MAAM;CACN,MAAM;CACN,QAAQ,CACN;EACE,MAAM;EACN,WAAW;EACX,UAAU;EACV,OAAO,IAAIN,sCAAiBO,sDAAsB;EACnD,EACD;EACE,MAAM;EACN,WAAW;EACX,UAAU;EACV,OAAO,IAAIP,sCAAiB,cAAc;EAC3C,CACF;CACF;AAWD,MAAaQ,uBAA8D;CACzE,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GACE,MAAM;GACN,WAAW;GACX,UAAU;GACV,OAAO,IAAIR,sCAAiB,oBAAoB;GACjD;EACD;GAAE,MAAM;GAAgB,SAAS;GAAO,UAAU;GAAM,OAAOS;GAAc;EAC7E;GAAE,MAAM;GAAkB,SAAS;GAAO,UAAU;GAAM,OAAOA;GAAc;EAChF;CACF;AASD,MAAaC,2BAAsE;CACjF,MAAM;CACN,MAAM;CACN,QAAQ,CACN;EACE,MAAM;EACN,SAAS;EACT,UAAU;EACV,OAAOR;EACR,EACD;EACE,MAAM;EACN,SAAS;EACT,UAAU;EACV,OAAOA;EACR,CACF;CACF;AAmED,MAAaS,kBAAoD;CAC/D,MAAM;CACN,MAAM;CACN,QAAQ;EACN;GAAE,MAAM;GAAS,SAAS;GAAO,UAAU;GAAM,OAAOd;GAAa;EACrE;GAAE,MAAM;GAAqB,SAAS;GAAQ,UAAU;GAAM,OAAOD;GAAY;EACjF;GAAE,MAAM;GAAwB,SAAS;GAAW,UAAU;GAAM,OAAOA;GAAY;EACvF;GAAE,MAAM;GAAQ,SAAS;GAAQ,UAAU;GAAM,OAAOA;GAAY;EACpE;GAAE,MAAM;GAAoB,SAAS;GAAO,UAAU;GAAO,OAAOA;GAAY;EAChF;GAAE,MAAM;GAA0B,SAAS;GAAU,UAAU;GAAM,OAAOA;GAAY;EACxF;GAAE,MAAM;GAA0B,SAAS;GAAU,UAAU;GAAM,OAAOA;GAAY;EACxF;GAAE,MAAM;GAAa,SAAS;GAAM,UAAU;GAAM,OAAOC;GAAa;EACxE;GAAE,MAAM;GAAa,SAAS;GAAO,UAAU;GAAM,OAAOe;GAAa;EACzE;GAAE,MAAM;GAAe,SAAS;GAAM,UAAU;GAAM,OAAOhB;GAAY;EACzE;GAAE,MAAM;GAAY,SAAS;GAAO,UAAU;GAAM,OAAOiB;GAAc;EACzE;GAAE,MAAM;GAAiB,SAAS;GAAM,UAAU;GAAM,OAAOhB;GAAa;EAC5E;GAAE,MAAM;GAAS,SAAS;GAAM,UAAU;GAAM,OAAOA;GAAa;EACpE;GAAE,MAAM;GAAkB,SAAS;GAAM,UAAU;GAAM,OAAOA;GAAa;EAC7E;GAAE,MAAM;GAAW,SAAS;GAAQ,UAAU;GAAM,OAAOgB;GAAc;EACzE;GAAE,MAAM;GAAe,SAAS;GAAO,UAAU;GAAM,OAAOA;GAAc;EAC5E;GAAE,MAAM;GAAgB,SAAS;GAAQ,UAAU;GAAM,OAAOhB;GAAa;EAC7E;GAAE,MAAM;GAAe,SAAS;GAAQ,UAAU;GAAM,OAAOA;GAAa;EAC5E;GAAE,MAAM;GAAkB,SAAS;GAAQ,UAAU;GAAM,OAAOA;GAAa;EAC/E;GAAE,MAAM;GAA6B,SAAS;GAAU,UAAU;GAAM,OAAOA;GAAa;EAC5F;GAAE,MAAM;GAAmB,SAAS;GAAS,UAAU;GAAM,OAAOe;GAAa;EACjF;GAAE,MAAM;GAAgB,SAAS;GAAa,UAAU;GAAM,OAAOA;GAAa;EAClF;GAAE,MAAM;GAAyB,SAAS;GAAW,UAAU;GAAM,OAAOf;GAAa;EACzF;GAAE,MAAM;GAA0B,SAAS;GAAc,UAAU;GAAM,OAAOA;GAAa;EAC7F;GAAE,MAAM;GAAwB,SAAS;GAAc,UAAU;GAAM,OAAOA;GAAa;EAC3F;GAAE,MAAM;GAAkB,SAAS;GAAe,UAAU;GAAM,OAAOe;GAAa;EACtF;GAAE,MAAM;GAAgB,SAAS;GAAgB,UAAU;GAAM,OAAOf;GAAa;EACrF;GAAE,MAAM;GAAkB,SAAS;GAAc,UAAU;GAAM,OAAOY;GAAc;EACtF;GAAE,MAAM;GAAc,SAAS;GAAM,UAAU;GAAM,OAAOZ;GAAa;EACzE;GACE,MAAM;GACN,SAAS;GACT,UAAU;GACV,OAAO,IAAIE,qBAASJ,4BAAa,IAAIK,sCAAiB,gCAAgC,CAAC;GACxF;EACD;GACE,MAAM;GACN,WAAW;GACX,UAAU;GACV,OAAO,IAAIA,sCAAiB,yBAAyB;GACtD;EACF;CACF;AAaD,MAAac,YAAwC;CACnD,MAAM;CACN,MAAM;CACN,QAAQ,CACN;EAAE,MAAM;EAAU,WAAW;EAAM,UAAU;EAAO,OAAO,IAAId,sCAAiB,gBAAgB;EAAE,EAClG;EACE,MAAM;EACN,SAAS;EACT,UAAU;EACV,OAAO,IAAIC,yBAAW,IAAID,sCAAiB,qBAAqB,CAAC;EAClE,CACF;CACF"}
1
+ {"version":3,"file":"block.js","names":["BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta>","numberCodec","bytesCodec","bigIntCodec","BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta>","MapCodec","ObjectModelCodec","ArrayCodec","addressArrayCodec","bytesArrayCodec","BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData>","ApplyDataMeta: ObjectModelMetadata<ApplyData>","SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD>","SignedTransactionMeta","SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock>","booleanCodec","ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates>","BlockHeaderMeta: ObjectModelMetadata<BlockHeader>","stringCodec","addressCodec","BlockMeta: ObjectModelMetadata<Block>"],"sources":["../../../../../packages/algod_client/src/models/block.ts"],"sourcesContent":["import {\n Address,\n ArrayCodec,\n MapCodec,\n ObjectModelCodec,\n addressArrayCodec,\n addressCodec,\n bigIntCodec,\n booleanCodec,\n bytesArrayCodec,\n bytesCodec,\n numberCodec,\n stringCodec,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\nimport { SignedTransactionMeta, type SignedTransaction } from '@algorandfoundation/algokit-transact'\n\n/** BlockEvalDelta represents a TEAL value delta (block/msgpack wire keys). */\nexport type BlockEvalDelta = {\n /** [at] delta action. */\n action: number\n /** [bs] bytes value. */\n bytes?: Uint8Array\n /** [ui] uint value. */\n uint?: bigint\n}\n\nexport const BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta> = {\n name: 'BlockEvalDelta',\n kind: 'object',\n fields: [\n { name: 'action', wireKey: 'at', optional: false, codec: numberCodec },\n { name: 'bytes', wireKey: 'bs', optional: true, codec: bytesCodec },\n { name: 'uint', wireKey: 'ui', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * State changes from application execution, including inner transactions and logs.\n */\nexport type BlockAppEvalDelta = {\n /** [gd] Global state delta for the application. */\n globalDelta?: Map<Uint8Array, BlockEvalDelta>\n /** [ld] Local state deltas keyed by address index. */\n localDeltas?: Map<number, Map<Uint8Array, BlockEvalDelta>>\n /** [itx] Inner transactions produced by this application execution. */\n innerTxns?: SignedTxnWithAD[]\n /** [sa] Shared accounts referenced by local deltas. */\n sharedAccounts?: Address[]\n /** [lg] Application log outputs. */\n logs?: Uint8Array[]\n}\n\nexport const BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta> = {\n name: 'BlockAppEvalDelta',\n kind: 'object',\n fields: [\n {\n name: 'globalDelta',\n wireKey: 'gd',\n optional: true,\n codec: new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta)),\n },\n {\n name: 'localDeltas',\n wireKey: 'ld',\n optional: true,\n codec: new MapCodec(numberCodec, new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta))),\n },\n {\n name: 'innerTxns',\n wireKey: 'itx',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnWithADMeta)),\n },\n {\n name: 'sharedAccounts',\n wireKey: 'sa',\n optional: true,\n codec: addressArrayCodec,\n },\n { name: 'logs', wireKey: 'lg', optional: true, codec: bytesArrayCodec },\n ],\n}\n\n/** Tracking metadata for a specific StateProofType. */\nexport type BlockStateProofTrackingData = {\n /** [v] Vector commitment root of state proof voters. */\n stateProofVotersCommitment?: Uint8Array\n /** [t] Online total weight during state proof round. */\n stateProofOnlineTotalWeight?: bigint\n /** [n] Next round for which state proofs are accepted. */\n stateProofNextRound?: bigint\n}\n\nexport const BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData> = {\n name: 'BlockStateProofTrackingData',\n kind: 'object',\n fields: [\n { name: 'stateProofVotersCommitment', wireKey: 'v', optional: true, codec: bytesCodec },\n { name: 'stateProofOnlineTotalWeight', wireKey: 't', optional: true, codec: bigIntCodec },\n { name: 'stateProofNextRound', wireKey: 'n', optional: true, codec: bigIntCodec },\n ],\n}\n\nexport type ApplyData = {\n closingAmount?: bigint\n assetClosingAmount?: bigint\n senderRewards?: bigint\n receiverRewards?: bigint\n closeRewards?: bigint\n evalDelta?: BlockAppEvalDelta\n configAsset?: bigint\n applicationId?: bigint\n}\n\nexport const ApplyDataMeta: ObjectModelMetadata<ApplyData> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n { name: 'closingAmount', wireKey: 'ca', optional: true, codec: bigIntCodec },\n { name: 'assetClosingAmount', wireKey: 'aca', optional: true, codec: bigIntCodec },\n { name: 'senderRewards', wireKey: 'rs', optional: true, codec: bigIntCodec },\n { name: 'receiverRewards', wireKey: 'rr', optional: true, codec: bigIntCodec },\n { name: 'closeRewards', wireKey: 'rc', optional: true, codec: bigIntCodec },\n { name: 'evalDelta', wireKey: 'dt', optional: true, codec: new ObjectModelCodec(BlockAppEvalDeltaMeta) },\n { name: 'configAsset', wireKey: 'caid', optional: true, codec: bigIntCodec },\n { name: 'applicationId', wireKey: 'apid', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * SignedTxnWithAD is a SignedTransaction with additional ApplyData.\n */\nexport type SignedTxnWithAD = {\n /** The signed transaction. */\n signedTxn: SignedTransaction\n /** Apply data containing transaction execution information. */\n applyData?: ApplyData\n}\n\nexport const SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD> = {\n name: 'SignedTxnWithAD',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTransactionMeta),\n },\n {\n name: 'applyData',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ApplyDataMeta),\n },\n ],\n}\n\n/**\n * SignedTxnInBlock is a SignedTransaction with additional ApplyData and block-specific metadata.\n */\nexport type SignedTxnInBlock = {\n signedTxn: SignedTxnWithAD\n hasGenesisId?: boolean\n hasGenesisHash?: boolean\n}\n\nexport const SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTxnWithADMeta),\n },\n { name: 'hasGenesisId', wireKey: 'hgi', optional: true, codec: booleanCodec },\n { name: 'hasGenesisHash', wireKey: 'hgh', optional: true, codec: booleanCodec },\n ],\n}\n\nexport type ParticipationUpdates = {\n /** [partupdrmv] Expired participation accounts. */\n expiredParticipationAccounts?: string[]\n /** [partupdabs] Absent participation accounts. */\n absentParticipationAccounts?: string[]\n}\n\nexport const ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates> = {\n name: 'ParticipationUpdates',\n kind: 'object',\n fields: [\n {\n name: 'expiredParticipationAccounts',\n wireKey: 'partupdrmv',\n optional: true,\n codec: addressArrayCodec,\n },\n {\n name: 'absentParticipationAccounts',\n wireKey: 'partupdabs',\n optional: true,\n codec: addressArrayCodec,\n },\n ],\n}\n\nexport type BlockHeader = {\n /** [rnd] Round number. */\n round?: bigint\n /** [prev] Previous block hash. */\n previousBlockHash?: Uint8Array\n /** [prev512] Previous block hash using SHA-512. */\n previousBlockHash512?: Uint8Array\n /** [seed] Sortition seed. */\n seed?: Uint8Array\n /** [txn] Root of transaction merkle tree using SHA512_256. */\n transactionsRoot?: Uint8Array\n /** [txn256] Root of transaction vector commitment using SHA256. */\n transactionsRootSha256?: Uint8Array\n /** [txn512] Root of transaction vector commitment using SHA512. */\n transactionsRootSha512?: Uint8Array\n /** [ts] Block timestamp in seconds since epoch. */\n timestamp?: bigint\n /** [gen] Genesis ID. */\n genesisId?: string\n /** [gh] Genesis hash. */\n genesisHash?: Uint8Array\n /** [prp] Proposer address. */\n proposer?: Address\n /** [fc] Fees collected in this block. */\n feesCollected?: bigint\n /** [bi] Bonus incentive for block proposal. */\n bonus?: bigint\n /** [pp] Proposer payout. */\n proposerPayout?: bigint\n /** [fees] FeeSink address. */\n feeSink?: Address\n /** [rwd] RewardsPool address. */\n rewardsPool?: Address\n /** [earn] Rewards level. */\n rewardsLevel?: bigint\n /** [rate] Rewards rate. */\n rewardsRate?: bigint\n /** [frac] Rewards residue. */\n rewardsResidue?: bigint\n /** [rwcalr] Rewards recalculation round. */\n rewardsRecalculationRound?: bigint\n /** [proto] Current consensus protocol. */\n currentProtocol?: string\n /** [nextproto] Next proposed protocol. */\n nextProtocol?: string\n /** [nextyes] Next protocol approvals. */\n nextProtocolApprovals?: bigint\n /** [nextbefore] Next protocol vote deadline. */\n nextProtocolVoteBefore?: bigint\n /** [nextswitch] Next protocol switch round. */\n nextProtocolSwitchOn?: bigint\n /** [upgradeprop] Upgrade proposal. */\n upgradePropose?: string\n /** [upgradedelay] Upgrade delay in rounds. */\n upgradeDelay?: bigint\n /** [upgradeyes] Upgrade approval flag. */\n upgradeApprove?: boolean\n /** [tc] Transaction counter. */\n txnCounter?: bigint\n /** [spt] State proof tracking data keyed by state proof type. */\n stateProofTracking?: Map<number, BlockStateProofTrackingData>\n /** Represents participation account data that needs to be checked/acted on by the network */\n participationUpdates?: ParticipationUpdates\n}\n\nexport const BlockHeaderMeta: ObjectModelMetadata<BlockHeader> = {\n name: 'BlockHeader',\n kind: 'object',\n fields: [\n { name: 'round', wireKey: 'rnd', optional: true, codec: bigIntCodec },\n { name: 'previousBlockHash', wireKey: 'prev', optional: true, codec: bytesCodec },\n { name: 'previousBlockHash512', wireKey: 'prev512', optional: true, codec: bytesCodec },\n { name: 'seed', wireKey: 'seed', optional: true, codec: bytesCodec },\n { name: 'transactionsRoot', wireKey: 'txn', optional: false, codec: bytesCodec },\n { name: 'transactionsRootSha256', wireKey: 'txn256', optional: true, codec: bytesCodec },\n { name: 'transactionsRootSha512', wireKey: 'txn512', optional: true, codec: bytesCodec },\n { name: 'timestamp', wireKey: 'ts', optional: true, codec: bigIntCodec },\n { name: 'genesisId', wireKey: 'gen', optional: true, codec: stringCodec },\n { name: 'genesisHash', wireKey: 'gh', optional: true, codec: bytesCodec },\n { name: 'proposer', wireKey: 'prp', optional: true, codec: addressCodec },\n { name: 'feesCollected', wireKey: 'fc', optional: true, codec: bigIntCodec },\n { name: 'bonus', wireKey: 'bi', optional: true, codec: bigIntCodec },\n { name: 'proposerPayout', wireKey: 'pp', optional: true, codec: bigIntCodec },\n { name: 'feeSink', wireKey: 'fees', optional: true, codec: addressCodec },\n { name: 'rewardsPool', wireKey: 'rwd', optional: true, codec: addressCodec },\n { name: 'rewardsLevel', wireKey: 'earn', optional: true, codec: bigIntCodec },\n { name: 'rewardsRate', wireKey: 'rate', optional: true, codec: bigIntCodec },\n { name: 'rewardsResidue', wireKey: 'frac', optional: true, codec: bigIntCodec },\n { name: 'rewardsRecalculationRound', wireKey: 'rwcalr', optional: true, codec: bigIntCodec },\n { name: 'currentProtocol', wireKey: 'proto', optional: true, codec: stringCodec },\n { name: 'nextProtocol', wireKey: 'nextproto', optional: true, codec: stringCodec },\n { name: 'nextProtocolApprovals', wireKey: 'nextyes', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolVoteBefore', wireKey: 'nextbefore', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolSwitchOn', wireKey: 'nextswitch', optional: true, codec: bigIntCodec },\n { name: 'upgradePropose', wireKey: 'upgradeprop', optional: true, codec: stringCodec },\n { name: 'upgradeDelay', wireKey: 'upgradedelay', optional: true, codec: bigIntCodec },\n { name: 'upgradeApprove', wireKey: 'upgradeyes', optional: true, codec: booleanCodec },\n { name: 'txnCounter', wireKey: 'tc', optional: true, codec: bigIntCodec },\n {\n name: 'stateProofTracking',\n wireKey: 'spt',\n optional: true,\n codec: new MapCodec(numberCodec, new ObjectModelCodec(BlockStateProofTrackingDataMeta)),\n },\n {\n name: 'participationUpdates',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ParticipationUpdatesMeta),\n },\n ],\n}\n\n/**\n * Block contains the BlockHeader and the list of transactions (Payset).\n */\nexport type Block = {\n /** The block information (Header) */\n header: BlockHeader\n\n /** [txns] Block transactions (Payset). */\n payset?: SignedTxnInBlock[]\n}\n\nexport const BlockMeta: ObjectModelMetadata<Block> = {\n name: 'Block',\n kind: 'object',\n fields: [\n { name: 'header', flattened: true, optional: false, codec: new ObjectModelCodec(BlockHeaderMeta) },\n {\n name: 'payset',\n wireKey: 'txns',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(SignedTxnInBlockMeta)),\n },\n ],\n}\n"],"mappings":"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"}
@@ -54,7 +54,7 @@ const BlockAppEvalDeltaMeta = {
54
54
  name: "innerTxns",
55
55
  wireKey: "itx",
56
56
  optional: true,
57
- codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnInBlockMeta))
57
+ codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnWithADMeta))
58
58
  },
59
59
  {
60
60
  name: "sharedAccounts",
@@ -1 +1 @@
1
- {"version":3,"file":"block.mjs","names":["BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta>","BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta>","BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData>","ApplyDataMeta: ObjectModelMetadata<ApplyData>","SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD>","SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock>","ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates>","BlockHeaderMeta: ObjectModelMetadata<BlockHeader>","BlockMeta: ObjectModelMetadata<Block>"],"sources":["../../../../../packages/algod_client/src/models/block.ts"],"sourcesContent":["import { type SignedTransaction, SignedTransactionMeta } from '@algorandfoundation/algokit-transact'\nimport {\n addressArrayCodec,\n addressCodec,\n Address,\n ArrayCodec,\n bigIntCodec,\n booleanCodec,\n bytesArrayCodec,\n bytesCodec,\n MapCodec,\n ObjectModelCodec,\n numberCodec,\n stringCodec,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\n\n/** BlockEvalDelta represents a TEAL value delta (block/msgpack wire keys). */\nexport type BlockEvalDelta = {\n /** [at] delta action. */\n action: number\n /** [bs] bytes value. */\n bytes?: Uint8Array\n /** [ui] uint value. */\n uint?: bigint\n}\n\nexport const BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta> = {\n name: 'BlockEvalDelta',\n kind: 'object',\n fields: [\n { name: 'action', wireKey: 'at', optional: false, codec: numberCodec },\n { name: 'bytes', wireKey: 'bs', optional: true, codec: bytesCodec },\n { name: 'uint', wireKey: 'ui', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * State changes from application execution, including inner transactions and logs.\n */\nexport type BlockAppEvalDelta = {\n /** [gd] Global state delta for the application. */\n globalDelta?: Map<Uint8Array, BlockEvalDelta>\n /** [ld] Local state deltas keyed by address index. */\n localDeltas?: Map<number, Map<Uint8Array, BlockEvalDelta>>\n /** [itx] Inner transactions produced by this application execution. */\n innerTxns?: SignedTxnInBlock[]\n /** [sa] Shared accounts referenced by local deltas. */\n sharedAccounts?: string[]\n /** [lg] Application log outputs. */\n logs?: Uint8Array[]\n}\n\nexport const BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta> = {\n name: 'BlockAppEvalDelta',\n kind: 'object',\n fields: [\n {\n name: 'globalDelta',\n wireKey: 'gd',\n optional: true,\n codec: new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta)),\n },\n {\n name: 'localDeltas',\n wireKey: 'ld',\n optional: true,\n codec: new MapCodec(numberCodec, new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta))),\n },\n {\n name: 'innerTxns',\n wireKey: 'itx',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnInBlockMeta)),\n },\n {\n name: 'sharedAccounts',\n wireKey: 'sa',\n optional: true,\n codec: addressArrayCodec,\n },\n { name: 'logs', wireKey: 'lg', optional: true, codec: bytesArrayCodec },\n ],\n}\n\n/** Tracking metadata for a specific StateProofType. */\nexport type BlockStateProofTrackingData = {\n /** [v] Vector commitment root of state proof voters. */\n stateProofVotersCommitment?: Uint8Array\n /** [t] Online total weight during state proof round. */\n stateProofOnlineTotalWeight?: bigint\n /** [n] Next round for which state proofs are accepted. */\n stateProofNextRound?: bigint\n}\n\nexport const BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData> = {\n name: 'BlockStateProofTrackingData',\n kind: 'object',\n fields: [\n { name: 'stateProofVotersCommitment', wireKey: 'v', optional: true, codec: bytesCodec },\n { name: 'stateProofOnlineTotalWeight', wireKey: 't', optional: true, codec: bigIntCodec },\n { name: 'stateProofNextRound', wireKey: 'n', optional: true, codec: bigIntCodec },\n ],\n}\n\nexport type ApplyData = {\n closingAmount?: bigint\n assetClosingAmount?: bigint\n senderRewards?: bigint\n receiverRewards?: bigint\n closeRewards?: bigint\n evalDelta?: BlockAppEvalDelta\n configAsset?: bigint\n applicationId?: bigint\n}\n\nexport const ApplyDataMeta: ObjectModelMetadata<ApplyData> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n { name: 'closingAmount', wireKey: 'ca', optional: true, codec: bigIntCodec },\n { name: 'assetClosingAmount', wireKey: 'aca', optional: true, codec: bigIntCodec },\n { name: 'senderRewards', wireKey: 'rs', optional: true, codec: bigIntCodec },\n { name: 'receiverRewards', wireKey: 'rr', optional: true, codec: bigIntCodec },\n { name: 'closeRewards', wireKey: 'rc', optional: true, codec: bigIntCodec },\n { name: 'evalDelta', wireKey: 'dt', optional: true, codec: new ObjectModelCodec(BlockAppEvalDeltaMeta) },\n { name: 'configAsset', wireKey: 'caid', optional: true, codec: bigIntCodec },\n { name: 'applicationId', wireKey: 'apid', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * SignedTxnWithAD is a SignedTransaction with additional ApplyData.\n */\nexport type SignedTxnWithAD = {\n /** The signed transaction. */\n signedTxn: SignedTransaction\n /** Apply data containing transaction execution information. */\n applyData?: ApplyData\n}\n\nexport const SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD> = {\n name: 'SignedTxnWithAD',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTransactionMeta),\n },\n {\n name: 'applyData',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ApplyDataMeta),\n },\n ],\n}\n\n/**\n * SignedTxnInBlock is a SignedTransaction with additional ApplyData and block-specific metadata.\n */\nexport type SignedTxnInBlock = {\n signedTxn: SignedTxnWithAD\n hasGenesisId?: boolean\n hasGenesisHash?: boolean\n}\n\nexport const SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTxnWithADMeta),\n },\n { name: 'hasGenesisId', wireKey: 'hgi', optional: true, codec: booleanCodec },\n { name: 'hasGenesisHash', wireKey: 'hgh', optional: true, codec: booleanCodec },\n ],\n}\n\nexport type ParticipationUpdates = {\n /** [partupdrmv] Expired participation accounts. */\n expiredParticipationAccounts?: string[]\n /** [partupdabs] Absent participation accounts. */\n absentParticipationAccounts?: string[]\n}\n\nexport const ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates> = {\n name: 'ParticipationUpdates',\n kind: 'object',\n fields: [\n {\n name: 'expiredParticipationAccounts',\n wireKey: 'partupdrmv',\n optional: true,\n codec: addressArrayCodec,\n },\n {\n name: 'absentParticipationAccounts',\n wireKey: 'partupdabs',\n optional: true,\n codec: addressArrayCodec,\n },\n ],\n}\n\nexport type BlockHeader = {\n /** [rnd] Round number. */\n round?: bigint\n /** [prev] Previous block hash. */\n previousBlockHash?: Uint8Array\n /** [prev512] Previous block hash using SHA-512. */\n previousBlockHash512?: Uint8Array\n /** [seed] Sortition seed. */\n seed?: Uint8Array\n /** [txn] Root of transaction merkle tree using SHA512_256. */\n transactionsRoot?: Uint8Array\n /** [txn256] Root of transaction vector commitment using SHA256. */\n transactionsRootSha256?: Uint8Array\n /** [txn512] Root of transaction vector commitment using SHA512. */\n transactionsRootSha512?: Uint8Array\n /** [ts] Block timestamp in seconds since epoch. */\n timestamp?: bigint\n /** [gen] Genesis ID. */\n genesisId?: string\n /** [gh] Genesis hash. */\n genesisHash?: Uint8Array\n /** [prp] Proposer address. */\n proposer?: Address\n /** [fc] Fees collected in this block. */\n feesCollected?: bigint\n /** [bi] Bonus incentive for block proposal. */\n bonus?: bigint\n /** [pp] Proposer payout. */\n proposerPayout?: bigint\n /** [fees] FeeSink address. */\n feeSink?: Address\n /** [rwd] RewardsPool address. */\n rewardsPool?: Address\n /** [earn] Rewards level. */\n rewardsLevel?: bigint\n /** [rate] Rewards rate. */\n rewardsRate?: bigint\n /** [frac] Rewards residue. */\n rewardsResidue?: bigint\n /** [rwcalr] Rewards recalculation round. */\n rewardsRecalculationRound?: bigint\n /** [proto] Current consensus protocol. */\n currentProtocol?: string\n /** [nextproto] Next proposed protocol. */\n nextProtocol?: string\n /** [nextyes] Next protocol approvals. */\n nextProtocolApprovals?: bigint\n /** [nextbefore] Next protocol vote deadline. */\n nextProtocolVoteBefore?: bigint\n /** [nextswitch] Next protocol switch round. */\n nextProtocolSwitchOn?: bigint\n /** [upgradeprop] Upgrade proposal. */\n upgradePropose?: string\n /** [upgradedelay] Upgrade delay in rounds. */\n upgradeDelay?: bigint\n /** [upgradeyes] Upgrade approval flag. */\n upgradeApprove?: boolean\n /** [tc] Transaction counter. */\n txnCounter?: bigint\n /** [spt] State proof tracking data keyed by state proof type. */\n stateProofTracking?: Map<number, BlockStateProofTrackingData>\n /** Represents participation account data that needs to be checked/acted on by the network */\n participationUpdates?: ParticipationUpdates\n}\n\nexport const BlockHeaderMeta: ObjectModelMetadata<BlockHeader> = {\n name: 'BlockHeader',\n kind: 'object',\n fields: [\n { name: 'round', wireKey: 'rnd', optional: true, codec: bigIntCodec },\n { name: 'previousBlockHash', wireKey: 'prev', optional: true, codec: bytesCodec },\n { name: 'previousBlockHash512', wireKey: 'prev512', optional: true, codec: bytesCodec },\n { name: 'seed', wireKey: 'seed', optional: true, codec: bytesCodec },\n { name: 'transactionsRoot', wireKey: 'txn', optional: false, codec: bytesCodec },\n { name: 'transactionsRootSha256', wireKey: 'txn256', optional: true, codec: bytesCodec },\n { name: 'transactionsRootSha512', wireKey: 'txn512', optional: true, codec: bytesCodec },\n { name: 'timestamp', wireKey: 'ts', optional: true, codec: bigIntCodec },\n { name: 'genesisId', wireKey: 'gen', optional: true, codec: stringCodec },\n { name: 'genesisHash', wireKey: 'gh', optional: true, codec: bytesCodec },\n { name: 'proposer', wireKey: 'prp', optional: true, codec: addressCodec },\n { name: 'feesCollected', wireKey: 'fc', optional: true, codec: bigIntCodec },\n { name: 'bonus', wireKey: 'bi', optional: true, codec: bigIntCodec },\n { name: 'proposerPayout', wireKey: 'pp', optional: true, codec: bigIntCodec },\n { name: 'feeSink', wireKey: 'fees', optional: true, codec: addressCodec },\n { name: 'rewardsPool', wireKey: 'rwd', optional: true, codec: addressCodec },\n { name: 'rewardsLevel', wireKey: 'earn', optional: true, codec: bigIntCodec },\n { name: 'rewardsRate', wireKey: 'rate', optional: true, codec: bigIntCodec },\n { name: 'rewardsResidue', wireKey: 'frac', optional: true, codec: bigIntCodec },\n { name: 'rewardsRecalculationRound', wireKey: 'rwcalr', optional: true, codec: bigIntCodec },\n { name: 'currentProtocol', wireKey: 'proto', optional: true, codec: stringCodec },\n { name: 'nextProtocol', wireKey: 'nextproto', optional: true, codec: stringCodec },\n { name: 'nextProtocolApprovals', wireKey: 'nextyes', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolVoteBefore', wireKey: 'nextbefore', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolSwitchOn', wireKey: 'nextswitch', optional: true, codec: bigIntCodec },\n { name: 'upgradePropose', wireKey: 'upgradeprop', optional: true, codec: stringCodec },\n { name: 'upgradeDelay', wireKey: 'upgradedelay', optional: true, codec: bigIntCodec },\n { name: 'upgradeApprove', wireKey: 'upgradeyes', optional: true, codec: booleanCodec },\n { name: 'txnCounter', wireKey: 'tc', optional: true, codec: bigIntCodec },\n {\n name: 'stateProofTracking',\n wireKey: 'spt',\n optional: true,\n codec: new MapCodec(numberCodec, new ObjectModelCodec(BlockStateProofTrackingDataMeta)),\n },\n {\n name: 'participationUpdates',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ParticipationUpdatesMeta),\n },\n ],\n}\n\n/**\n * Block contains the BlockHeader and the list of transactions (Payset).\n */\nexport type Block = {\n /** The block information (Header) */\n header: BlockHeader\n\n /** [txns] Block transactions (Payset). */\n payset?: SignedTxnInBlock[]\n}\n\nexport const BlockMeta: ObjectModelMetadata<Block> = {\n name: 'Block',\n kind: 'object',\n fields: [\n { name: 'header', flattened: true, optional: false, codec: new ObjectModelCodec(BlockHeaderMeta) },\n {\n name: 'payset',\n wireKey: 'txns',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(SignedTxnInBlockMeta)),\n },\n ],\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"block.mjs","names":["BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta>","BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta>","BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData>","ApplyDataMeta: ObjectModelMetadata<ApplyData>","SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD>","SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock>","ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates>","BlockHeaderMeta: ObjectModelMetadata<BlockHeader>","BlockMeta: ObjectModelMetadata<Block>"],"sources":["../../../../../packages/algod_client/src/models/block.ts"],"sourcesContent":["import {\n Address,\n ArrayCodec,\n MapCodec,\n ObjectModelCodec,\n addressArrayCodec,\n addressCodec,\n bigIntCodec,\n booleanCodec,\n bytesArrayCodec,\n bytesCodec,\n numberCodec,\n stringCodec,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\nimport { SignedTransactionMeta, type SignedTransaction } from '@algorandfoundation/algokit-transact'\n\n/** BlockEvalDelta represents a TEAL value delta (block/msgpack wire keys). */\nexport type BlockEvalDelta = {\n /** [at] delta action. */\n action: number\n /** [bs] bytes value. */\n bytes?: Uint8Array\n /** [ui] uint value. */\n uint?: bigint\n}\n\nexport const BlockEvalDeltaMeta: ObjectModelMetadata<BlockEvalDelta> = {\n name: 'BlockEvalDelta',\n kind: 'object',\n fields: [\n { name: 'action', wireKey: 'at', optional: false, codec: numberCodec },\n { name: 'bytes', wireKey: 'bs', optional: true, codec: bytesCodec },\n { name: 'uint', wireKey: 'ui', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * State changes from application execution, including inner transactions and logs.\n */\nexport type BlockAppEvalDelta = {\n /** [gd] Global state delta for the application. */\n globalDelta?: Map<Uint8Array, BlockEvalDelta>\n /** [ld] Local state deltas keyed by address index. */\n localDeltas?: Map<number, Map<Uint8Array, BlockEvalDelta>>\n /** [itx] Inner transactions produced by this application execution. */\n innerTxns?: SignedTxnWithAD[]\n /** [sa] Shared accounts referenced by local deltas. */\n sharedAccounts?: Address[]\n /** [lg] Application log outputs. */\n logs?: Uint8Array[]\n}\n\nexport const BlockAppEvalDeltaMeta: ObjectModelMetadata<BlockAppEvalDelta> = {\n name: 'BlockAppEvalDelta',\n kind: 'object',\n fields: [\n {\n name: 'globalDelta',\n wireKey: 'gd',\n optional: true,\n codec: new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta)),\n },\n {\n name: 'localDeltas',\n wireKey: 'ld',\n optional: true,\n codec: new MapCodec(numberCodec, new MapCodec(bytesCodec, new ObjectModelCodec(BlockEvalDeltaMeta))),\n },\n {\n name: 'innerTxns',\n wireKey: 'itx',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(() => SignedTxnWithADMeta)),\n },\n {\n name: 'sharedAccounts',\n wireKey: 'sa',\n optional: true,\n codec: addressArrayCodec,\n },\n { name: 'logs', wireKey: 'lg', optional: true, codec: bytesArrayCodec },\n ],\n}\n\n/** Tracking metadata for a specific StateProofType. */\nexport type BlockStateProofTrackingData = {\n /** [v] Vector commitment root of state proof voters. */\n stateProofVotersCommitment?: Uint8Array\n /** [t] Online total weight during state proof round. */\n stateProofOnlineTotalWeight?: bigint\n /** [n] Next round for which state proofs are accepted. */\n stateProofNextRound?: bigint\n}\n\nexport const BlockStateProofTrackingDataMeta: ObjectModelMetadata<BlockStateProofTrackingData> = {\n name: 'BlockStateProofTrackingData',\n kind: 'object',\n fields: [\n { name: 'stateProofVotersCommitment', wireKey: 'v', optional: true, codec: bytesCodec },\n { name: 'stateProofOnlineTotalWeight', wireKey: 't', optional: true, codec: bigIntCodec },\n { name: 'stateProofNextRound', wireKey: 'n', optional: true, codec: bigIntCodec },\n ],\n}\n\nexport type ApplyData = {\n closingAmount?: bigint\n assetClosingAmount?: bigint\n senderRewards?: bigint\n receiverRewards?: bigint\n closeRewards?: bigint\n evalDelta?: BlockAppEvalDelta\n configAsset?: bigint\n applicationId?: bigint\n}\n\nexport const ApplyDataMeta: ObjectModelMetadata<ApplyData> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n { name: 'closingAmount', wireKey: 'ca', optional: true, codec: bigIntCodec },\n { name: 'assetClosingAmount', wireKey: 'aca', optional: true, codec: bigIntCodec },\n { name: 'senderRewards', wireKey: 'rs', optional: true, codec: bigIntCodec },\n { name: 'receiverRewards', wireKey: 'rr', optional: true, codec: bigIntCodec },\n { name: 'closeRewards', wireKey: 'rc', optional: true, codec: bigIntCodec },\n { name: 'evalDelta', wireKey: 'dt', optional: true, codec: new ObjectModelCodec(BlockAppEvalDeltaMeta) },\n { name: 'configAsset', wireKey: 'caid', optional: true, codec: bigIntCodec },\n { name: 'applicationId', wireKey: 'apid', optional: true, codec: bigIntCodec },\n ],\n}\n\n/**\n * SignedTxnWithAD is a SignedTransaction with additional ApplyData.\n */\nexport type SignedTxnWithAD = {\n /** The signed transaction. */\n signedTxn: SignedTransaction\n /** Apply data containing transaction execution information. */\n applyData?: ApplyData\n}\n\nexport const SignedTxnWithADMeta: ObjectModelMetadata<SignedTxnWithAD> = {\n name: 'SignedTxnWithAD',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTransactionMeta),\n },\n {\n name: 'applyData',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ApplyDataMeta),\n },\n ],\n}\n\n/**\n * SignedTxnInBlock is a SignedTransaction with additional ApplyData and block-specific metadata.\n */\nexport type SignedTxnInBlock = {\n signedTxn: SignedTxnWithAD\n hasGenesisId?: boolean\n hasGenesisHash?: boolean\n}\n\nexport const SignedTxnInBlockMeta: ObjectModelMetadata<SignedTxnInBlock> = {\n name: 'SignedTxnInBlock',\n kind: 'object',\n fields: [\n {\n name: 'signedTxn',\n flattened: true,\n optional: false,\n codec: new ObjectModelCodec(SignedTxnWithADMeta),\n },\n { name: 'hasGenesisId', wireKey: 'hgi', optional: true, codec: booleanCodec },\n { name: 'hasGenesisHash', wireKey: 'hgh', optional: true, codec: booleanCodec },\n ],\n}\n\nexport type ParticipationUpdates = {\n /** [partupdrmv] Expired participation accounts. */\n expiredParticipationAccounts?: string[]\n /** [partupdabs] Absent participation accounts. */\n absentParticipationAccounts?: string[]\n}\n\nexport const ParticipationUpdatesMeta: ObjectModelMetadata<ParticipationUpdates> = {\n name: 'ParticipationUpdates',\n kind: 'object',\n fields: [\n {\n name: 'expiredParticipationAccounts',\n wireKey: 'partupdrmv',\n optional: true,\n codec: addressArrayCodec,\n },\n {\n name: 'absentParticipationAccounts',\n wireKey: 'partupdabs',\n optional: true,\n codec: addressArrayCodec,\n },\n ],\n}\n\nexport type BlockHeader = {\n /** [rnd] Round number. */\n round?: bigint\n /** [prev] Previous block hash. */\n previousBlockHash?: Uint8Array\n /** [prev512] Previous block hash using SHA-512. */\n previousBlockHash512?: Uint8Array\n /** [seed] Sortition seed. */\n seed?: Uint8Array\n /** [txn] Root of transaction merkle tree using SHA512_256. */\n transactionsRoot?: Uint8Array\n /** [txn256] Root of transaction vector commitment using SHA256. */\n transactionsRootSha256?: Uint8Array\n /** [txn512] Root of transaction vector commitment using SHA512. */\n transactionsRootSha512?: Uint8Array\n /** [ts] Block timestamp in seconds since epoch. */\n timestamp?: bigint\n /** [gen] Genesis ID. */\n genesisId?: string\n /** [gh] Genesis hash. */\n genesisHash?: Uint8Array\n /** [prp] Proposer address. */\n proposer?: Address\n /** [fc] Fees collected in this block. */\n feesCollected?: bigint\n /** [bi] Bonus incentive for block proposal. */\n bonus?: bigint\n /** [pp] Proposer payout. */\n proposerPayout?: bigint\n /** [fees] FeeSink address. */\n feeSink?: Address\n /** [rwd] RewardsPool address. */\n rewardsPool?: Address\n /** [earn] Rewards level. */\n rewardsLevel?: bigint\n /** [rate] Rewards rate. */\n rewardsRate?: bigint\n /** [frac] Rewards residue. */\n rewardsResidue?: bigint\n /** [rwcalr] Rewards recalculation round. */\n rewardsRecalculationRound?: bigint\n /** [proto] Current consensus protocol. */\n currentProtocol?: string\n /** [nextproto] Next proposed protocol. */\n nextProtocol?: string\n /** [nextyes] Next protocol approvals. */\n nextProtocolApprovals?: bigint\n /** [nextbefore] Next protocol vote deadline. */\n nextProtocolVoteBefore?: bigint\n /** [nextswitch] Next protocol switch round. */\n nextProtocolSwitchOn?: bigint\n /** [upgradeprop] Upgrade proposal. */\n upgradePropose?: string\n /** [upgradedelay] Upgrade delay in rounds. */\n upgradeDelay?: bigint\n /** [upgradeyes] Upgrade approval flag. */\n upgradeApprove?: boolean\n /** [tc] Transaction counter. */\n txnCounter?: bigint\n /** [spt] State proof tracking data keyed by state proof type. */\n stateProofTracking?: Map<number, BlockStateProofTrackingData>\n /** Represents participation account data that needs to be checked/acted on by the network */\n participationUpdates?: ParticipationUpdates\n}\n\nexport const BlockHeaderMeta: ObjectModelMetadata<BlockHeader> = {\n name: 'BlockHeader',\n kind: 'object',\n fields: [\n { name: 'round', wireKey: 'rnd', optional: true, codec: bigIntCodec },\n { name: 'previousBlockHash', wireKey: 'prev', optional: true, codec: bytesCodec },\n { name: 'previousBlockHash512', wireKey: 'prev512', optional: true, codec: bytesCodec },\n { name: 'seed', wireKey: 'seed', optional: true, codec: bytesCodec },\n { name: 'transactionsRoot', wireKey: 'txn', optional: false, codec: bytesCodec },\n { name: 'transactionsRootSha256', wireKey: 'txn256', optional: true, codec: bytesCodec },\n { name: 'transactionsRootSha512', wireKey: 'txn512', optional: true, codec: bytesCodec },\n { name: 'timestamp', wireKey: 'ts', optional: true, codec: bigIntCodec },\n { name: 'genesisId', wireKey: 'gen', optional: true, codec: stringCodec },\n { name: 'genesisHash', wireKey: 'gh', optional: true, codec: bytesCodec },\n { name: 'proposer', wireKey: 'prp', optional: true, codec: addressCodec },\n { name: 'feesCollected', wireKey: 'fc', optional: true, codec: bigIntCodec },\n { name: 'bonus', wireKey: 'bi', optional: true, codec: bigIntCodec },\n { name: 'proposerPayout', wireKey: 'pp', optional: true, codec: bigIntCodec },\n { name: 'feeSink', wireKey: 'fees', optional: true, codec: addressCodec },\n { name: 'rewardsPool', wireKey: 'rwd', optional: true, codec: addressCodec },\n { name: 'rewardsLevel', wireKey: 'earn', optional: true, codec: bigIntCodec },\n { name: 'rewardsRate', wireKey: 'rate', optional: true, codec: bigIntCodec },\n { name: 'rewardsResidue', wireKey: 'frac', optional: true, codec: bigIntCodec },\n { name: 'rewardsRecalculationRound', wireKey: 'rwcalr', optional: true, codec: bigIntCodec },\n { name: 'currentProtocol', wireKey: 'proto', optional: true, codec: stringCodec },\n { name: 'nextProtocol', wireKey: 'nextproto', optional: true, codec: stringCodec },\n { name: 'nextProtocolApprovals', wireKey: 'nextyes', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolVoteBefore', wireKey: 'nextbefore', optional: true, codec: bigIntCodec },\n { name: 'nextProtocolSwitchOn', wireKey: 'nextswitch', optional: true, codec: bigIntCodec },\n { name: 'upgradePropose', wireKey: 'upgradeprop', optional: true, codec: stringCodec },\n { name: 'upgradeDelay', wireKey: 'upgradedelay', optional: true, codec: bigIntCodec },\n { name: 'upgradeApprove', wireKey: 'upgradeyes', optional: true, codec: booleanCodec },\n { name: 'txnCounter', wireKey: 'tc', optional: true, codec: bigIntCodec },\n {\n name: 'stateProofTracking',\n wireKey: 'spt',\n optional: true,\n codec: new MapCodec(numberCodec, new ObjectModelCodec(BlockStateProofTrackingDataMeta)),\n },\n {\n name: 'participationUpdates',\n flattened: true,\n optional: true,\n codec: new ObjectModelCodec(ParticipationUpdatesMeta),\n },\n ],\n}\n\n/**\n * Block contains the BlockHeader and the list of transactions (Payset).\n */\nexport type Block = {\n /** The block information (Header) */\n header: BlockHeader\n\n /** [txns] Block transactions (Payset). */\n payset?: SignedTxnInBlock[]\n}\n\nexport const BlockMeta: ObjectModelMetadata<Block> = {\n name: 'Block',\n kind: 'object',\n fields: [\n { name: 'header', flattened: true, optional: false, codec: new ObjectModelCodec(BlockHeaderMeta) },\n {\n name: 'payset',\n wireKey: 'txns',\n optional: true,\n codec: new ArrayCodec(new ObjectModelCodec(SignedTxnInBlockMeta)),\n },\n ],\n}\n"],"mappings":"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"}
@@ -358,8 +358,8 @@ declare class AlgorandClientTransactionCreator {
358
358
  validityWindow?: number | bigint | undefined;
359
359
  firstValidRound?: bigint | undefined;
360
360
  lastValidRound?: bigint | undefined;
361
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
362
361
  args?: Uint8Array[] | undefined;
362
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
363
363
  accountReferences?: ReadableAddress[] | undefined;
364
364
  appReferences?: bigint[] | undefined;
365
365
  assetReferences?: bigint[] | undefined;
@@ -575,6 +575,7 @@ declare class AlgorandClientTransactionCreator {
575
575
  lastValidRound?: bigint | undefined;
576
576
  approvalProgram: string | Uint8Array;
577
577
  clearStateProgram: string | Uint8Array;
578
+ extraProgramPages?: number | undefined;
578
579
  onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
579
580
  accountReferences?: ReadableAddress[] | undefined;
580
581
  appReferences?: bigint[] | undefined;
@@ -588,7 +589,6 @@ declare class AlgorandClientTransactionCreator {
588
589
  localInts: number;
589
590
  localByteSlices: number;
590
591
  } | undefined;
591
- extraProgramPages?: number | undefined;
592
592
  method: ABIMethod;
593
593
  args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
594
594
  sender: SendingAddress;
@@ -625,8 +625,8 @@ declare class AlgorandClientTransactionCreator {
625
625
  validityWindow?: number | bigint | undefined;
626
626
  firstValidRound?: bigint | undefined;
627
627
  lastValidRound?: bigint | undefined;
628
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
629
628
  args?: Uint8Array[] | undefined;
629
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
630
630
  accountReferences?: ReadableAddress[] | undefined;
631
631
  appReferences?: bigint[] | undefined;
632
632
  assetReferences?: bigint[] | undefined;
@@ -750,8 +750,8 @@ declare class AlgorandClientTransactionCreator {
750
750
  validityWindow?: number | bigint | undefined;
751
751
  firstValidRound?: bigint | undefined;
752
752
  lastValidRound?: bigint | undefined;
753
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
754
753
  args?: Uint8Array[] | undefined;
754
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
755
755
  accountReferences?: ReadableAddress[] | undefined;
756
756
  appReferences?: bigint[] | undefined;
757
757
  assetReferences?: bigint[] | undefined;
@@ -871,8 +871,8 @@ declare class AlgorandClientTransactionCreator {
871
871
  validityWindow?: number | bigint | undefined;
872
872
  firstValidRound?: bigint | undefined;
873
873
  lastValidRound?: bigint | undefined;
874
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
875
874
  args?: Uint8Array[] | undefined;
875
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
876
876
  accountReferences?: ReadableAddress[] | undefined;
877
877
  appReferences?: bigint[] | undefined;
878
878
  assetReferences?: bigint[] | undefined;
@@ -992,8 +992,8 @@ declare class AlgorandClientTransactionCreator {
992
992
  validityWindow?: number | bigint | undefined;
993
993
  firstValidRound?: bigint | undefined;
994
994
  lastValidRound?: bigint | undefined;
995
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
996
995
  args?: Uint8Array[] | undefined;
996
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
997
997
  accountReferences?: ReadableAddress[] | undefined;
998
998
  appReferences?: bigint[] | undefined;
999
999
  assetReferences?: bigint[] | undefined;
@@ -489,8 +489,8 @@ declare class AlgorandClientTransactionSender {
489
489
  validityWindow?: number | bigint | undefined;
490
490
  firstValidRound?: bigint | undefined;
491
491
  lastValidRound?: bigint | undefined;
492
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
493
492
  args?: Uint8Array[] | undefined;
493
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
494
494
  accountReferences?: ReadableAddress[] | undefined;
495
495
  appReferences?: bigint[] | undefined;
496
496
  assetReferences?: bigint[] | undefined;
@@ -759,6 +759,7 @@ declare class AlgorandClientTransactionSender {
759
759
  lastValidRound?: bigint | undefined;
760
760
  approvalProgram: string | Uint8Array;
761
761
  clearStateProgram: string | Uint8Array;
762
+ extraProgramPages?: number | undefined;
762
763
  onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
763
764
  accountReferences?: ReadableAddress[] | undefined;
764
765
  appReferences?: bigint[] | undefined;
@@ -772,7 +773,6 @@ declare class AlgorandClientTransactionSender {
772
773
  localInts: number;
773
774
  localByteSlices: number;
774
775
  } | undefined;
775
- extraProgramPages?: number | undefined;
776
776
  method: ABIMethod;
777
777
  args?: (Transaction | ABIValue | TransactionWithSigner | AppMethodCall<{
778
778
  sender: SendingAddress;
@@ -809,8 +809,8 @@ declare class AlgorandClientTransactionSender {
809
809
  validityWindow?: number | bigint | undefined;
810
810
  firstValidRound?: bigint | undefined;
811
811
  lastValidRound?: bigint | undefined;
812
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
813
812
  args?: Uint8Array[] | undefined;
813
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
814
814
  accountReferences?: ReadableAddress[] | undefined;
815
815
  appReferences?: bigint[] | undefined;
816
816
  assetReferences?: bigint[] | undefined;
@@ -941,8 +941,8 @@ declare class AlgorandClientTransactionSender {
941
941
  validityWindow?: number | bigint | undefined;
942
942
  firstValidRound?: bigint | undefined;
943
943
  lastValidRound?: bigint | undefined;
944
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
945
944
  args?: Uint8Array[] | undefined;
945
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
946
946
  accountReferences?: ReadableAddress[] | undefined;
947
947
  appReferences?: bigint[] | undefined;
948
948
  assetReferences?: bigint[] | undefined;
@@ -1069,8 +1069,8 @@ declare class AlgorandClientTransactionSender {
1069
1069
  validityWindow?: number | bigint | undefined;
1070
1070
  firstValidRound?: bigint | undefined;
1071
1071
  lastValidRound?: bigint | undefined;
1072
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
1073
1072
  args?: Uint8Array[] | undefined;
1073
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
1074
1074
  accountReferences?: ReadableAddress[] | undefined;
1075
1075
  appReferences?: bigint[] | undefined;
1076
1076
  assetReferences?: bigint[] | undefined;
@@ -1197,8 +1197,8 @@ declare class AlgorandClientTransactionSender {
1197
1197
  validityWindow?: number | bigint | undefined;
1198
1198
  firstValidRound?: bigint | undefined;
1199
1199
  lastValidRound?: bigint | undefined;
1200
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
1201
1200
  args?: Uint8Array[] | undefined;
1201
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
1202
1202
  accountReferences?: ReadableAddress[] | undefined;
1203
1203
  appReferences?: bigint[] | undefined;
1204
1204
  assetReferences?: bigint[] | undefined;
@@ -523,8 +523,8 @@ declare class AppClient {
523
523
  validityWindow?: number | bigint | undefined;
524
524
  firstValidRound?: bigint | undefined;
525
525
  lastValidRound?: bigint | undefined;
526
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
527
526
  args?: Uint8Array[] | undefined;
527
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
528
528
  accountReferences?: ReadableAddress[] | undefined;
529
529
  appReferences?: bigint[] | undefined;
530
530
  assetReferences?: bigint[] | undefined;
@@ -624,8 +624,8 @@ declare class AppClient {
624
624
  validityWindow?: number | bigint | undefined;
625
625
  firstValidRound?: bigint | undefined;
626
626
  lastValidRound?: bigint | undefined;
627
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
628
627
  args?: Uint8Array[] | undefined;
628
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
629
629
  accountReferences?: ReadableAddress[] | undefined;
630
630
  appReferences?: bigint[] | undefined;
631
631
  assetReferences?: bigint[] | undefined;
@@ -725,8 +725,8 @@ declare class AppClient {
725
725
  validityWindow?: number | bigint | undefined;
726
726
  firstValidRound?: bigint | undefined;
727
727
  lastValidRound?: bigint | undefined;
728
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
729
728
  args?: Uint8Array[] | undefined;
729
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
730
730
  accountReferences?: ReadableAddress[] | undefined;
731
731
  appReferences?: bigint[] | undefined;
732
732
  assetReferences?: bigint[] | undefined;
@@ -825,8 +825,8 @@ declare class AppClient {
825
825
  validityWindow?: number | bigint | undefined;
826
826
  firstValidRound?: bigint | undefined;
827
827
  lastValidRound?: bigint | undefined;
828
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
829
828
  args?: Uint8Array[] | undefined;
829
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
830
830
  accountReferences?: ReadableAddress[] | undefined;
831
831
  appReferences?: bigint[] | undefined;
832
832
  assetReferences?: bigint[] | undefined;
@@ -925,8 +925,8 @@ declare class AppClient {
925
925
  validityWindow?: number | bigint | undefined;
926
926
  firstValidRound?: bigint | undefined;
927
927
  lastValidRound?: bigint | undefined;
928
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
929
928
  args?: Uint8Array[] | undefined;
929
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
930
930
  accountReferences?: ReadableAddress[] | undefined;
931
931
  appReferences?: bigint[] | undefined;
932
932
  assetReferences?: bigint[] | undefined;
@@ -281,8 +281,8 @@ declare class AppFactory {
281
281
  validityWindow?: number | bigint | undefined;
282
282
  firstValidRound?: bigint | undefined;
283
283
  lastValidRound?: bigint | undefined;
284
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
285
284
  args?: Uint8Array[] | undefined;
285
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
286
286
  accountReferences?: ReadableAddress[] | undefined;
287
287
  appReferences?: bigint[] | undefined;
288
288
  assetReferences?: bigint[] | undefined;
@@ -383,8 +383,8 @@ declare class AppFactory {
383
383
  validityWindow?: number | bigint | undefined;
384
384
  firstValidRound?: bigint | undefined;
385
385
  lastValidRound?: bigint | undefined;
386
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
387
386
  args?: Uint8Array[] | undefined;
387
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
388
388
  accountReferences?: ReadableAddress[] | undefined;
389
389
  appReferences?: bigint[] | undefined;
390
390
  assetReferences?: bigint[] | undefined;
@@ -485,8 +485,8 @@ declare class AppFactory {
485
485
  validityWindow?: number | bigint | undefined;
486
486
  firstValidRound?: bigint | undefined;
487
487
  lastValidRound?: bigint | undefined;
488
- onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
489
488
  args?: Uint8Array[] | undefined;
489
+ onComplete?: OnApplicationComplete.NoOp | OnApplicationComplete.OptIn | OnApplicationComplete.CloseOut | OnApplicationComplete.UpdateApplication | OnApplicationComplete.DeleteApplication | undefined;
490
490
  accountReferences?: ReadableAddress[] | undefined;
491
491
  appReferences?: bigint[] | undefined;
492
492
  assetReferences?: bigint[] | undefined;
package/types/app-spec.js CHANGED
@@ -35,16 +35,23 @@ function arc32ToArc56(appSpec) {
35
35
  if (c.update_application && ["ALL", type].includes(c.update_application)) actions$1.push("UpdateApplication");
36
36
  return actions$1;
37
37
  };
38
- const getDefaultArgValue = (type, defaultArg) => {
38
+ const getDefaultArgValue = (defaultArg) => {
39
39
  if (!defaultArg) return void 0;
40
40
  if (defaultArg.source === "abi-method") return {
41
41
  source: "method",
42
42
  data: defaultArg.data.name
43
43
  };
44
+ const mappedSource = defaultArg.source === "constant" ? "literal" : defaultArg.source === "global-state" ? "global" : "local";
45
+ let defaultValueType = void 0;
46
+ if (mappedSource === "literal") {
47
+ if (typeof defaultArg.data === "number") defaultValueType = "uint64";
48
+ else if (typeof defaultArg.data === "string") defaultValueType = "AVMString";
49
+ }
50
+ const argData = typeof defaultArg.data === "number" ? require_abi_type.ABIType.from("uint64").encode(defaultArg.data) : typeof defaultArg.data === "string" ? new TextEncoder().encode(defaultArg.data) : defaultArg.data;
44
51
  return {
45
- source: defaultArg.source === "constant" ? "literal" : defaultArg.source === "global-state" ? "global" : "local",
46
- data: Buffer.from(typeof defaultArg.data === "number" ? require_abi_type.ABIType.from("uint64").encode(defaultArg.data) : defaultArg.data).toString("base64"),
47
- type: type === "string" ? "AVMString" : type
52
+ source: mappedSource,
53
+ data: Buffer.from(argData).toString("base64"),
54
+ type: defaultValueType
48
55
  };
49
56
  };
50
57
  return {
@@ -60,7 +67,7 @@ function arc32ToArc56(appSpec) {
60
67
  type: a.type,
61
68
  desc: a.desc,
62
69
  struct: a.name ? hint(m)?.structs?.[a.name]?.name : void 0,
63
- defaultValue: getDefaultArgValue(a.type, !a.name ? void 0 : hint(m)?.default_arguments?.[a.name])
70
+ defaultValue: getDefaultArgValue(!a.name ? void 0 : hint(m)?.default_arguments?.[a.name])
64
71
  })),
65
72
  returns: {
66
73
  type: m.returns.type,
@@ -1 +1 @@
1
- {"version":3,"file":"app-spec.js","names":["hint","actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[]","actions","ABITypeClass"],"sources":["../../src/types/app-spec.ts"],"sourcesContent":["import {\n ABIMethod,\n ABIType as ABITypeClass,\n ARC28Event,\n Arc56Contract,\n Arc56Method,\n StorageKey,\n StructField,\n} from '@algorandfoundation/algokit-abi'\n\n/**\n * Converts an ARC-32 Application Specification to an ARC-56 Contract\n * @param appSpec The ARC-32 Application Specification\n * @returns The ARC-56 Contract\n * @example\n * ```typescript\n * const arc56AppSpec = arc32ToArc56(arc32AppSpec)\n * ```\n */\nexport function arc32ToArc56(appSpec: AppSpec): Arc56Contract {\n const arc32Structs = Object.values(appSpec.hints).flatMap((hint) => Object.entries(hint.structs ?? {}))\n const structs = Object.fromEntries(\n arc32Structs.map(([_, struct]) => {\n const fields = struct.elements.map((e) => ({ name: e[0], type: e[1] }))\n return [struct.name, fields]\n }),\n ) satisfies { [structName: string]: StructField[] }\n const hint = (m: ABIMethodParams) => appSpec.hints[getABIMethodParamsSignature(m)] as Hint | undefined\n const actions = (m: ABIMethodParams, type: 'CREATE' | 'CALL') => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return hint(m)?.call_config !== undefined ? callConfigToActions(hint(m)?.call_config!, type) : []\n }\n const bareActions = (type: 'CREATE' | 'CALL') => {\n return callConfigToActions(appSpec.bare_call_config, type)\n }\n const callConfigToActions = (c: CallConfig, type: 'CREATE' | 'CALL') => {\n const actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[] = []\n if (c.close_out && ['ALL', type].includes(c.close_out)) actions.push('CloseOut')\n if (c.delete_application && ['ALL', type].includes(c.delete_application)) actions.push('DeleteApplication')\n if (c.no_op && ['ALL', type].includes(c.no_op)) actions.push('NoOp')\n if (c.opt_in && ['ALL', type].includes(c.opt_in)) actions.push('OptIn')\n if (c.update_application && ['ALL', type].includes(c.update_application)) actions.push('UpdateApplication')\n return actions\n }\n const getDefaultArgValue = (\n type: string,\n defaultArg: DefaultArgument | undefined,\n ): Arc56Contract['methods'][0]['args'][0]['defaultValue'] => {\n if (!defaultArg) return undefined\n\n if (defaultArg.source === 'abi-method') {\n return {\n source: 'method',\n data: defaultArg.data.name,\n }\n }\n\n return {\n source: defaultArg.source === 'constant' ? 'literal' : defaultArg.source === 'global-state' ? 'global' : 'local',\n data: Buffer.from(\n typeof defaultArg.data === 'number' ? ABITypeClass.from('uint64').encode(defaultArg.data) : defaultArg.data,\n ).toString('base64'),\n type: type === 'string' ? 'AVMString' : type,\n }\n }\n\n return {\n arcs: [],\n name: appSpec.contract.name,\n desc: appSpec.contract.desc,\n structs: structs,\n methods: appSpec.contract.methods.map(\n (m) =>\n ({\n name: m.name,\n desc: m.desc,\n args: m.args.map((a) => ({\n name: a.name,\n type: a.type,\n desc: a.desc,\n struct: a.name ? hint(m)?.structs?.[a.name]?.name : undefined,\n defaultValue: getDefaultArgValue(a.type, !a.name ? undefined : hint(m)?.default_arguments?.[a.name]),\n })),\n returns: {\n type: m.returns.type,\n desc: m.returns.desc,\n struct: hint(m)?.structs?.output?.name,\n },\n events: [],\n readonly: hint(m)?.read_only,\n actions: {\n create: actions(m, 'CREATE') as Arc56Method['actions']['create'],\n call: actions(m, 'CALL'),\n },\n }) satisfies Arc56Method,\n ),\n state: {\n schema: {\n global: {\n ints: appSpec.state.global.num_uints,\n bytes: appSpec.state.global.num_byte_slices,\n },\n local: {\n ints: appSpec.state.local.num_uints,\n bytes: appSpec.state.local.num_byte_slices,\n },\n },\n keys: {\n global: Object.fromEntries(\n Object.entries(appSpec.schema.global.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n local: Object.fromEntries(\n Object.entries(appSpec.schema.local.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n box: {},\n },\n maps: {\n global: {},\n local: {},\n box: {},\n },\n },\n source: appSpec.source,\n bareActions: {\n create: bareActions('CREATE') as unknown as Arc56Contract['bareActions']['create'],\n call: bareActions('CALL'),\n },\n byteCode: undefined,\n compilerInfo: undefined,\n events: undefined,\n networks: undefined,\n scratchVariables: undefined,\n sourceInfo: undefined,\n templateVariables: undefined,\n } satisfies Arc56Contract\n}\n\nfunction getABIMethodParamsSignature(params: ABIMethodParams) {\n const args = params.args.map((a) => a.type).join(',')\n return `${params.name}(${args})${params.returns.type}`\n}\n\n/** An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 */\nexport interface AppSpec {\n /** Method call hints */\n hints: HintSpec\n /** The TEAL source */\n source: AppSources\n /** The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md */\n contract: ABIContractParams\n /** The values that make up the local and global state */\n schema: SchemaSpec\n /** The rolled-up schema allocation values for local and global state */\n state: StateSchemaSpec\n /** The config of all BARE calls (i.e. non ABI calls with no args) */\n bare_call_config: CallConfig\n}\n\ninterface ABIContractParams {\n name: string\n desc?: string\n networks?: ABIContractNetworks\n methods: ABIMethodParams[]\n events?: ARC28Event[]\n}\n\ninterface ABIContractNetworks {\n [network: string]: ABIContractNetworkInfo\n}\n\ninterface ABIContractNetworkInfo {\n appID: number\n}\n\ninterface ABIMethodParams {\n name: string\n desc?: string\n args: ABIMethodArgParams[]\n returns: ABIMethodReturnParams\n /** Optional, is it a read-only method (according to [ARC-22](https://arc.algorand.foundation/ARCs/arc-0022)) */\n readonly?: boolean\n /** [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this method */\n events?: ARC28Event[]\n}\n\ninterface ABIMethodArgParams {\n type: string\n name?: string\n desc?: string\n}\n\ninterface ABIMethodReturnParams {\n type: string\n desc?: string\n}\n\n/** A lookup of encoded method call spec to hint */\nexport type HintSpec = Record<string, Hint>\n\n/** The TEAL source of a contract */\nexport interface AppSources {\n /** The TEAL source of the approval program */\n approval: string\n /** The TEAL source of the clear program */\n clear: string\n}\n\n/** The various call configs:\n * * `NEVER`: Will not be called\n * * `CALL`: Can be called during a non-create call i.e. app id != 0\n * * `CREATE`: Can be called during a create call i.e. app id = 0\n * * `ALL`: Can be during a create OR non-create call\n **/\nexport type CallConfigValue = 'NEVER' | 'CALL' | 'CREATE' | 'ALL'\n\n/** Call configuration for a method */\nexport interface CallConfig {\n /** NoOp call config */\n no_op?: CallConfigValue\n /** Opt-in call config */\n opt_in?: CallConfigValue\n /** Close out call config */\n close_out?: CallConfigValue\n /** Update call config */\n update_application?: CallConfigValue\n /** Delete call config */\n delete_application?: CallConfigValue\n}\n\n/** Hint information for a given method call to allow client generation */\nexport interface Hint {\n /** Any user-defined struct/tuple types used in the method call, keyed by parameter name or `output` for return type */\n structs?: Record<string, Struct>\n read_only?: boolean\n default_arguments?: Record<string, DefaultArgument>\n call_config: CallConfig\n}\n\n/** The name of a field */\nexport type FieldName = string\n\n/** The string name of an ABI type */\nexport type ABIType = string\n\n/** The elements of the struct/tuple: `FieldName`, `ABIType` */\nexport type StructElement = [FieldName, ABIType]\n\n/** A user-defined struct/tuple type */\nexport interface Struct {\n /** The name of the type */\n name: string\n /** The elements (in order) that make up the struct/tuple */\n elements: StructElement[]\n}\n\n/**\n * Defines a strategy for obtaining a default value for a given ABI arg.\n */\nexport type DefaultArgument =\n | {\n /**\n * The default value should be fetched by invoking an ABI method\n */\n source: 'abi-method'\n data: ABIMethod\n }\n | {\n /**\n * The default value should be fetched from global state\n */\n source: 'global-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value should be fetched from the local state of the sender user\n */\n source: 'local-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value is a constant.\n */\n source: 'constant'\n /**\n * The static default value to use.\n */\n data: string | number\n }\n\n/** AVM data type */\nexport type AVMType = 'uint64' | 'bytes'\n\n/** Declared schema value specification */\nexport interface DeclaredSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The name of the key */\n key: string\n /** A description of the variable */\n descr?: string\n /** Whether or not the value is set statically (at create time only) or dynamically */\n static?: boolean\n}\n\n/** Reserved schema value specification */\nexport interface ReservedSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The description of the reserved storage space */\n descr: string\n /** The maximum number of slots to reserve */\n max_keys: number\n}\n\n/** The schema for global and local storage */\nexport interface SchemaSpec {\n /** The local storage schema */\n local: Schema\n /** The global storage schema */\n global: Schema\n}\n\n/** The storage schema definition */\nexport interface Schema {\n /** Declared storage schema */\n declared: Record<string, DeclaredSchemaValueSpec>\n /** Reserved storage schema */\n reserved: Record<string, ReservedSchemaValueSpec>\n}\n\n/** The rolled-up schema allocation specification for local and global state */\nexport interface StateSchemaSpec {\n /** Global storage spec */\n global: StateSchema\n /** Local storage spec */\n local: StateSchema\n}\n\n/** Schema spec summary for global or local storage */\nexport type StateSchema = {\n /** Number of uint slots */\n num_uints: number\n /** Number of byte slots */\n num_byte_slices: number\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-spec.js","names":["hint","actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[]","actions","defaultValueType: string | undefined","ABITypeClass"],"sources":["../../src/types/app-spec.ts"],"sourcesContent":["import {\n ABIMethod,\n ABIType as ABITypeClass,\n ARC28Event,\n Arc56Contract,\n Arc56Method,\n StorageKey,\n StructField,\n} from '@algorandfoundation/algokit-abi'\n\n/**\n * Converts an ARC-32 Application Specification to an ARC-56 Contract\n * @param appSpec The ARC-32 Application Specification\n * @returns The ARC-56 Contract\n * @example\n * ```typescript\n * const arc56AppSpec = arc32ToArc56(arc32AppSpec)\n * ```\n */\nexport function arc32ToArc56(appSpec: AppSpec): Arc56Contract {\n const arc32Structs = Object.values(appSpec.hints).flatMap((hint) => Object.entries(hint.structs ?? {}))\n const structs = Object.fromEntries(\n arc32Structs.map(([_, struct]) => {\n const fields = struct.elements.map((e) => ({ name: e[0], type: e[1] }))\n return [struct.name, fields]\n }),\n ) satisfies { [structName: string]: StructField[] }\n const hint = (m: ABIMethodParams) => appSpec.hints[getABIMethodParamsSignature(m)] as Hint | undefined\n const actions = (m: ABIMethodParams, type: 'CREATE' | 'CALL') => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return hint(m)?.call_config !== undefined ? callConfigToActions(hint(m)?.call_config!, type) : []\n }\n const bareActions = (type: 'CREATE' | 'CALL') => {\n return callConfigToActions(appSpec.bare_call_config, type)\n }\n const callConfigToActions = (c: CallConfig, type: 'CREATE' | 'CALL') => {\n const actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[] = []\n if (c.close_out && ['ALL', type].includes(c.close_out)) actions.push('CloseOut')\n if (c.delete_application && ['ALL', type].includes(c.delete_application)) actions.push('DeleteApplication')\n if (c.no_op && ['ALL', type].includes(c.no_op)) actions.push('NoOp')\n if (c.opt_in && ['ALL', type].includes(c.opt_in)) actions.push('OptIn')\n if (c.update_application && ['ALL', type].includes(c.update_application)) actions.push('UpdateApplication')\n return actions\n }\n const getDefaultArgValue = (defaultArg: DefaultArgument | undefined): Arc56Contract['methods'][0]['args'][0]['defaultValue'] => {\n if (!defaultArg) return undefined\n\n if (defaultArg.source === 'abi-method') {\n return {\n source: 'method',\n data: defaultArg.data.name,\n }\n }\n\n const mappedSource = defaultArg.source === 'constant' ? 'literal' : defaultArg.source === 'global-state' ? 'global' : 'local'\n\n // type is only set for literal source\n let defaultValueType: string | undefined = undefined\n if (mappedSource === 'literal') {\n if (typeof defaultArg.data === 'number') {\n defaultValueType = 'uint64'\n } else if (typeof defaultArg.data === 'string') {\n defaultValueType = 'AVMString'\n }\n }\n\n const argData =\n typeof defaultArg.data === 'number'\n ? ABITypeClass.from('uint64').encode(defaultArg.data)\n : typeof defaultArg.data === 'string'\n ? new TextEncoder().encode(defaultArg.data)\n : defaultArg.data\n\n return {\n source: mappedSource,\n data: Buffer.from(argData).toString('base64'),\n type: defaultValueType,\n }\n }\n\n return {\n arcs: [],\n name: appSpec.contract.name,\n desc: appSpec.contract.desc,\n structs: structs,\n methods: appSpec.contract.methods.map(\n (m) =>\n ({\n name: m.name,\n desc: m.desc,\n args: m.args.map((a) => ({\n name: a.name,\n type: a.type,\n desc: a.desc,\n struct: a.name ? hint(m)?.structs?.[a.name]?.name : undefined,\n defaultValue: getDefaultArgValue(!a.name ? undefined : hint(m)?.default_arguments?.[a.name]),\n })),\n returns: {\n type: m.returns.type,\n desc: m.returns.desc,\n struct: hint(m)?.structs?.output?.name,\n },\n events: [],\n readonly: hint(m)?.read_only,\n actions: {\n create: actions(m, 'CREATE') as Arc56Method['actions']['create'],\n call: actions(m, 'CALL'),\n },\n }) satisfies Arc56Method,\n ),\n state: {\n schema: {\n global: {\n ints: appSpec.state.global.num_uints,\n bytes: appSpec.state.global.num_byte_slices,\n },\n local: {\n ints: appSpec.state.local.num_uints,\n bytes: appSpec.state.local.num_byte_slices,\n },\n },\n keys: {\n global: Object.fromEntries(\n Object.entries(appSpec.schema.global.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n local: Object.fromEntries(\n Object.entries(appSpec.schema.local.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n box: {},\n },\n maps: {\n global: {},\n local: {},\n box: {},\n },\n },\n source: appSpec.source,\n bareActions: {\n create: bareActions('CREATE') as unknown as Arc56Contract['bareActions']['create'],\n call: bareActions('CALL'),\n },\n byteCode: undefined,\n compilerInfo: undefined,\n events: undefined,\n networks: undefined,\n scratchVariables: undefined,\n sourceInfo: undefined,\n templateVariables: undefined,\n } satisfies Arc56Contract\n}\n\nfunction getABIMethodParamsSignature(params: ABIMethodParams) {\n const args = params.args.map((a) => a.type).join(',')\n return `${params.name}(${args})${params.returns.type}`\n}\n\n/** An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 */\nexport interface AppSpec {\n /** Method call hints */\n hints: HintSpec\n /** The TEAL source */\n source: AppSources\n /** The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md */\n contract: ABIContractParams\n /** The values that make up the local and global state */\n schema: SchemaSpec\n /** The rolled-up schema allocation values for local and global state */\n state: StateSchemaSpec\n /** The config of all BARE calls (i.e. non ABI calls with no args) */\n bare_call_config: CallConfig\n}\n\ninterface ABIContractParams {\n name: string\n desc?: string\n networks?: ABIContractNetworks\n methods: ABIMethodParams[]\n events?: ARC28Event[]\n}\n\ninterface ABIContractNetworks {\n [network: string]: ABIContractNetworkInfo\n}\n\ninterface ABIContractNetworkInfo {\n appID: number\n}\n\ninterface ABIMethodParams {\n name: string\n desc?: string\n args: ABIMethodArgParams[]\n returns: ABIMethodReturnParams\n /** Optional, is it a read-only method (according to [ARC-22](https://arc.algorand.foundation/ARCs/arc-0022)) */\n readonly?: boolean\n /** [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this method */\n events?: ARC28Event[]\n}\n\ninterface ABIMethodArgParams {\n type: string\n name?: string\n desc?: string\n}\n\ninterface ABIMethodReturnParams {\n type: string\n desc?: string\n}\n\n/** A lookup of encoded method call spec to hint */\nexport type HintSpec = Record<string, Hint>\n\n/** The TEAL source of a contract */\nexport interface AppSources {\n /** The TEAL source of the approval program */\n approval: string\n /** The TEAL source of the clear program */\n clear: string\n}\n\n/** The various call configs:\n * * `NEVER`: Will not be called\n * * `CALL`: Can be called during a non-create call i.e. app id != 0\n * * `CREATE`: Can be called during a create call i.e. app id = 0\n * * `ALL`: Can be during a create OR non-create call\n **/\nexport type CallConfigValue = 'NEVER' | 'CALL' | 'CREATE' | 'ALL'\n\n/** Call configuration for a method */\nexport interface CallConfig {\n /** NoOp call config */\n no_op?: CallConfigValue\n /** Opt-in call config */\n opt_in?: CallConfigValue\n /** Close out call config */\n close_out?: CallConfigValue\n /** Update call config */\n update_application?: CallConfigValue\n /** Delete call config */\n delete_application?: CallConfigValue\n}\n\n/** Hint information for a given method call to allow client generation */\nexport interface Hint {\n /** Any user-defined struct/tuple types used in the method call, keyed by parameter name or `output` for return type */\n structs?: Record<string, Struct>\n read_only?: boolean\n default_arguments?: Record<string, DefaultArgument>\n call_config: CallConfig\n}\n\n/** The name of a field */\nexport type FieldName = string\n\n/** The string name of an ABI type */\nexport type ABIType = string\n\n/** The elements of the struct/tuple: `FieldName`, `ABIType` */\nexport type StructElement = [FieldName, ABIType]\n\n/** A user-defined struct/tuple type */\nexport interface Struct {\n /** The name of the type */\n name: string\n /** The elements (in order) that make up the struct/tuple */\n elements: StructElement[]\n}\n\n/**\n * Defines a strategy for obtaining a default value for a given ABI arg.\n */\nexport type DefaultArgument =\n | {\n /**\n * The default value should be fetched by invoking an ABI method\n */\n source: 'abi-method'\n data: ABIMethod\n }\n | {\n /**\n * The default value should be fetched from global state\n */\n source: 'global-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value should be fetched from the local state of the sender user\n */\n source: 'local-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value is a constant.\n */\n source: 'constant'\n /**\n * The static default value to use.\n */\n data: string | number\n }\n\n/** AVM data type */\nexport type AVMType = 'uint64' | 'bytes'\n\n/** Declared schema value specification */\nexport interface DeclaredSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The name of the key */\n key: string\n /** A description of the variable */\n descr?: string\n /** Whether or not the value is set statically (at create time only) or dynamically */\n static?: boolean\n}\n\n/** Reserved schema value specification */\nexport interface ReservedSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The description of the reserved storage space */\n descr: string\n /** The maximum number of slots to reserve */\n max_keys: number\n}\n\n/** The schema for global and local storage */\nexport interface SchemaSpec {\n /** The local storage schema */\n local: Schema\n /** The global storage schema */\n global: Schema\n}\n\n/** The storage schema definition */\nexport interface Schema {\n /** Declared storage schema */\n declared: Record<string, DeclaredSchemaValueSpec>\n /** Reserved storage schema */\n reserved: Record<string, ReservedSchemaValueSpec>\n}\n\n/** The rolled-up schema allocation specification for local and global state */\nexport interface StateSchemaSpec {\n /** Global storage spec */\n global: StateSchema\n /** Local storage spec */\n local: StateSchema\n}\n\n/** Schema spec summary for global or local storage */\nexport type StateSchema = {\n /** Number of uint slots */\n num_uints: number\n /** Number of byte slots */\n num_byte_slices: number\n}\n"],"mappings":"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"}
@@ -35,16 +35,23 @@ function arc32ToArc56(appSpec) {
35
35
  if (c.update_application && ["ALL", type].includes(c.update_application)) actions$1.push("UpdateApplication");
36
36
  return actions$1;
37
37
  };
38
- const getDefaultArgValue = (type, defaultArg) => {
38
+ const getDefaultArgValue = (defaultArg) => {
39
39
  if (!defaultArg) return void 0;
40
40
  if (defaultArg.source === "abi-method") return {
41
41
  source: "method",
42
42
  data: defaultArg.data.name
43
43
  };
44
+ const mappedSource = defaultArg.source === "constant" ? "literal" : defaultArg.source === "global-state" ? "global" : "local";
45
+ let defaultValueType = void 0;
46
+ if (mappedSource === "literal") {
47
+ if (typeof defaultArg.data === "number") defaultValueType = "uint64";
48
+ else if (typeof defaultArg.data === "string") defaultValueType = "AVMString";
49
+ }
50
+ const argData = typeof defaultArg.data === "number" ? ABIType.from("uint64").encode(defaultArg.data) : typeof defaultArg.data === "string" ? new TextEncoder().encode(defaultArg.data) : defaultArg.data;
44
51
  return {
45
- source: defaultArg.source === "constant" ? "literal" : defaultArg.source === "global-state" ? "global" : "local",
46
- data: Buffer.from(typeof defaultArg.data === "number" ? ABIType.from("uint64").encode(defaultArg.data) : defaultArg.data).toString("base64"),
47
- type: type === "string" ? "AVMString" : type
52
+ source: mappedSource,
53
+ data: Buffer.from(argData).toString("base64"),
54
+ type: defaultValueType
48
55
  };
49
56
  };
50
57
  return {
@@ -60,7 +67,7 @@ function arc32ToArc56(appSpec) {
60
67
  type: a.type,
61
68
  desc: a.desc,
62
69
  struct: a.name ? hint(m)?.structs?.[a.name]?.name : void 0,
63
- defaultValue: getDefaultArgValue(a.type, !a.name ? void 0 : hint(m)?.default_arguments?.[a.name])
70
+ defaultValue: getDefaultArgValue(!a.name ? void 0 : hint(m)?.default_arguments?.[a.name])
64
71
  })),
65
72
  returns: {
66
73
  type: m.returns.type,
@@ -1 +1 @@
1
- {"version":3,"file":"app-spec.mjs","names":["hint","actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[]","actions","ABITypeClass"],"sources":["../../src/types/app-spec.ts"],"sourcesContent":["import {\n ABIMethod,\n ABIType as ABITypeClass,\n ARC28Event,\n Arc56Contract,\n Arc56Method,\n StorageKey,\n StructField,\n} from '@algorandfoundation/algokit-abi'\n\n/**\n * Converts an ARC-32 Application Specification to an ARC-56 Contract\n * @param appSpec The ARC-32 Application Specification\n * @returns The ARC-56 Contract\n * @example\n * ```typescript\n * const arc56AppSpec = arc32ToArc56(arc32AppSpec)\n * ```\n */\nexport function arc32ToArc56(appSpec: AppSpec): Arc56Contract {\n const arc32Structs = Object.values(appSpec.hints).flatMap((hint) => Object.entries(hint.structs ?? {}))\n const structs = Object.fromEntries(\n arc32Structs.map(([_, struct]) => {\n const fields = struct.elements.map((e) => ({ name: e[0], type: e[1] }))\n return [struct.name, fields]\n }),\n ) satisfies { [structName: string]: StructField[] }\n const hint = (m: ABIMethodParams) => appSpec.hints[getABIMethodParamsSignature(m)] as Hint | undefined\n const actions = (m: ABIMethodParams, type: 'CREATE' | 'CALL') => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return hint(m)?.call_config !== undefined ? callConfigToActions(hint(m)?.call_config!, type) : []\n }\n const bareActions = (type: 'CREATE' | 'CALL') => {\n return callConfigToActions(appSpec.bare_call_config, type)\n }\n const callConfigToActions = (c: CallConfig, type: 'CREATE' | 'CALL') => {\n const actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[] = []\n if (c.close_out && ['ALL', type].includes(c.close_out)) actions.push('CloseOut')\n if (c.delete_application && ['ALL', type].includes(c.delete_application)) actions.push('DeleteApplication')\n if (c.no_op && ['ALL', type].includes(c.no_op)) actions.push('NoOp')\n if (c.opt_in && ['ALL', type].includes(c.opt_in)) actions.push('OptIn')\n if (c.update_application && ['ALL', type].includes(c.update_application)) actions.push('UpdateApplication')\n return actions\n }\n const getDefaultArgValue = (\n type: string,\n defaultArg: DefaultArgument | undefined,\n ): Arc56Contract['methods'][0]['args'][0]['defaultValue'] => {\n if (!defaultArg) return undefined\n\n if (defaultArg.source === 'abi-method') {\n return {\n source: 'method',\n data: defaultArg.data.name,\n }\n }\n\n return {\n source: defaultArg.source === 'constant' ? 'literal' : defaultArg.source === 'global-state' ? 'global' : 'local',\n data: Buffer.from(\n typeof defaultArg.data === 'number' ? ABITypeClass.from('uint64').encode(defaultArg.data) : defaultArg.data,\n ).toString('base64'),\n type: type === 'string' ? 'AVMString' : type,\n }\n }\n\n return {\n arcs: [],\n name: appSpec.contract.name,\n desc: appSpec.contract.desc,\n structs: structs,\n methods: appSpec.contract.methods.map(\n (m) =>\n ({\n name: m.name,\n desc: m.desc,\n args: m.args.map((a) => ({\n name: a.name,\n type: a.type,\n desc: a.desc,\n struct: a.name ? hint(m)?.structs?.[a.name]?.name : undefined,\n defaultValue: getDefaultArgValue(a.type, !a.name ? undefined : hint(m)?.default_arguments?.[a.name]),\n })),\n returns: {\n type: m.returns.type,\n desc: m.returns.desc,\n struct: hint(m)?.structs?.output?.name,\n },\n events: [],\n readonly: hint(m)?.read_only,\n actions: {\n create: actions(m, 'CREATE') as Arc56Method['actions']['create'],\n call: actions(m, 'CALL'),\n },\n }) satisfies Arc56Method,\n ),\n state: {\n schema: {\n global: {\n ints: appSpec.state.global.num_uints,\n bytes: appSpec.state.global.num_byte_slices,\n },\n local: {\n ints: appSpec.state.local.num_uints,\n bytes: appSpec.state.local.num_byte_slices,\n },\n },\n keys: {\n global: Object.fromEntries(\n Object.entries(appSpec.schema.global.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n local: Object.fromEntries(\n Object.entries(appSpec.schema.local.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n box: {},\n },\n maps: {\n global: {},\n local: {},\n box: {},\n },\n },\n source: appSpec.source,\n bareActions: {\n create: bareActions('CREATE') as unknown as Arc56Contract['bareActions']['create'],\n call: bareActions('CALL'),\n },\n byteCode: undefined,\n compilerInfo: undefined,\n events: undefined,\n networks: undefined,\n scratchVariables: undefined,\n sourceInfo: undefined,\n templateVariables: undefined,\n } satisfies Arc56Contract\n}\n\nfunction getABIMethodParamsSignature(params: ABIMethodParams) {\n const args = params.args.map((a) => a.type).join(',')\n return `${params.name}(${args})${params.returns.type}`\n}\n\n/** An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 */\nexport interface AppSpec {\n /** Method call hints */\n hints: HintSpec\n /** The TEAL source */\n source: AppSources\n /** The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md */\n contract: ABIContractParams\n /** The values that make up the local and global state */\n schema: SchemaSpec\n /** The rolled-up schema allocation values for local and global state */\n state: StateSchemaSpec\n /** The config of all BARE calls (i.e. non ABI calls with no args) */\n bare_call_config: CallConfig\n}\n\ninterface ABIContractParams {\n name: string\n desc?: string\n networks?: ABIContractNetworks\n methods: ABIMethodParams[]\n events?: ARC28Event[]\n}\n\ninterface ABIContractNetworks {\n [network: string]: ABIContractNetworkInfo\n}\n\ninterface ABIContractNetworkInfo {\n appID: number\n}\n\ninterface ABIMethodParams {\n name: string\n desc?: string\n args: ABIMethodArgParams[]\n returns: ABIMethodReturnParams\n /** Optional, is it a read-only method (according to [ARC-22](https://arc.algorand.foundation/ARCs/arc-0022)) */\n readonly?: boolean\n /** [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this method */\n events?: ARC28Event[]\n}\n\ninterface ABIMethodArgParams {\n type: string\n name?: string\n desc?: string\n}\n\ninterface ABIMethodReturnParams {\n type: string\n desc?: string\n}\n\n/** A lookup of encoded method call spec to hint */\nexport type HintSpec = Record<string, Hint>\n\n/** The TEAL source of a contract */\nexport interface AppSources {\n /** The TEAL source of the approval program */\n approval: string\n /** The TEAL source of the clear program */\n clear: string\n}\n\n/** The various call configs:\n * * `NEVER`: Will not be called\n * * `CALL`: Can be called during a non-create call i.e. app id != 0\n * * `CREATE`: Can be called during a create call i.e. app id = 0\n * * `ALL`: Can be during a create OR non-create call\n **/\nexport type CallConfigValue = 'NEVER' | 'CALL' | 'CREATE' | 'ALL'\n\n/** Call configuration for a method */\nexport interface CallConfig {\n /** NoOp call config */\n no_op?: CallConfigValue\n /** Opt-in call config */\n opt_in?: CallConfigValue\n /** Close out call config */\n close_out?: CallConfigValue\n /** Update call config */\n update_application?: CallConfigValue\n /** Delete call config */\n delete_application?: CallConfigValue\n}\n\n/** Hint information for a given method call to allow client generation */\nexport interface Hint {\n /** Any user-defined struct/tuple types used in the method call, keyed by parameter name or `output` for return type */\n structs?: Record<string, Struct>\n read_only?: boolean\n default_arguments?: Record<string, DefaultArgument>\n call_config: CallConfig\n}\n\n/** The name of a field */\nexport type FieldName = string\n\n/** The string name of an ABI type */\nexport type ABIType = string\n\n/** The elements of the struct/tuple: `FieldName`, `ABIType` */\nexport type StructElement = [FieldName, ABIType]\n\n/** A user-defined struct/tuple type */\nexport interface Struct {\n /** The name of the type */\n name: string\n /** The elements (in order) that make up the struct/tuple */\n elements: StructElement[]\n}\n\n/**\n * Defines a strategy for obtaining a default value for a given ABI arg.\n */\nexport type DefaultArgument =\n | {\n /**\n * The default value should be fetched by invoking an ABI method\n */\n source: 'abi-method'\n data: ABIMethod\n }\n | {\n /**\n * The default value should be fetched from global state\n */\n source: 'global-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value should be fetched from the local state of the sender user\n */\n source: 'local-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value is a constant.\n */\n source: 'constant'\n /**\n * The static default value to use.\n */\n data: string | number\n }\n\n/** AVM data type */\nexport type AVMType = 'uint64' | 'bytes'\n\n/** Declared schema value specification */\nexport interface DeclaredSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The name of the key */\n key: string\n /** A description of the variable */\n descr?: string\n /** Whether or not the value is set statically (at create time only) or dynamically */\n static?: boolean\n}\n\n/** Reserved schema value specification */\nexport interface ReservedSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The description of the reserved storage space */\n descr: string\n /** The maximum number of slots to reserve */\n max_keys: number\n}\n\n/** The schema for global and local storage */\nexport interface SchemaSpec {\n /** The local storage schema */\n local: Schema\n /** The global storage schema */\n global: Schema\n}\n\n/** The storage schema definition */\nexport interface Schema {\n /** Declared storage schema */\n declared: Record<string, DeclaredSchemaValueSpec>\n /** Reserved storage schema */\n reserved: Record<string, ReservedSchemaValueSpec>\n}\n\n/** The rolled-up schema allocation specification for local and global state */\nexport interface StateSchemaSpec {\n /** Global storage spec */\n global: StateSchema\n /** Local storage spec */\n local: StateSchema\n}\n\n/** Schema spec summary for global or local storage */\nexport type StateSchema = {\n /** Number of uint slots */\n num_uints: number\n /** Number of byte slots */\n num_byte_slices: number\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-spec.mjs","names":["hint","actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[]","actions","defaultValueType: string | undefined","ABITypeClass"],"sources":["../../src/types/app-spec.ts"],"sourcesContent":["import {\n ABIMethod,\n ABIType as ABITypeClass,\n ARC28Event,\n Arc56Contract,\n Arc56Method,\n StorageKey,\n StructField,\n} from '@algorandfoundation/algokit-abi'\n\n/**\n * Converts an ARC-32 Application Specification to an ARC-56 Contract\n * @param appSpec The ARC-32 Application Specification\n * @returns The ARC-56 Contract\n * @example\n * ```typescript\n * const arc56AppSpec = arc32ToArc56(arc32AppSpec)\n * ```\n */\nexport function arc32ToArc56(appSpec: AppSpec): Arc56Contract {\n const arc32Structs = Object.values(appSpec.hints).flatMap((hint) => Object.entries(hint.structs ?? {}))\n const structs = Object.fromEntries(\n arc32Structs.map(([_, struct]) => {\n const fields = struct.elements.map((e) => ({ name: e[0], type: e[1] }))\n return [struct.name, fields]\n }),\n ) satisfies { [structName: string]: StructField[] }\n const hint = (m: ABIMethodParams) => appSpec.hints[getABIMethodParamsSignature(m)] as Hint | undefined\n const actions = (m: ABIMethodParams, type: 'CREATE' | 'CALL') => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return hint(m)?.call_config !== undefined ? callConfigToActions(hint(m)?.call_config!, type) : []\n }\n const bareActions = (type: 'CREATE' | 'CALL') => {\n return callConfigToActions(appSpec.bare_call_config, type)\n }\n const callConfigToActions = (c: CallConfig, type: 'CREATE' | 'CALL') => {\n const actions: ('NoOp' | 'OptIn' | 'CloseOut' | 'ClearState' | 'UpdateApplication' | 'DeleteApplication')[] = []\n if (c.close_out && ['ALL', type].includes(c.close_out)) actions.push('CloseOut')\n if (c.delete_application && ['ALL', type].includes(c.delete_application)) actions.push('DeleteApplication')\n if (c.no_op && ['ALL', type].includes(c.no_op)) actions.push('NoOp')\n if (c.opt_in && ['ALL', type].includes(c.opt_in)) actions.push('OptIn')\n if (c.update_application && ['ALL', type].includes(c.update_application)) actions.push('UpdateApplication')\n return actions\n }\n const getDefaultArgValue = (defaultArg: DefaultArgument | undefined): Arc56Contract['methods'][0]['args'][0]['defaultValue'] => {\n if (!defaultArg) return undefined\n\n if (defaultArg.source === 'abi-method') {\n return {\n source: 'method',\n data: defaultArg.data.name,\n }\n }\n\n const mappedSource = defaultArg.source === 'constant' ? 'literal' : defaultArg.source === 'global-state' ? 'global' : 'local'\n\n // type is only set for literal source\n let defaultValueType: string | undefined = undefined\n if (mappedSource === 'literal') {\n if (typeof defaultArg.data === 'number') {\n defaultValueType = 'uint64'\n } else if (typeof defaultArg.data === 'string') {\n defaultValueType = 'AVMString'\n }\n }\n\n const argData =\n typeof defaultArg.data === 'number'\n ? ABITypeClass.from('uint64').encode(defaultArg.data)\n : typeof defaultArg.data === 'string'\n ? new TextEncoder().encode(defaultArg.data)\n : defaultArg.data\n\n return {\n source: mappedSource,\n data: Buffer.from(argData).toString('base64'),\n type: defaultValueType,\n }\n }\n\n return {\n arcs: [],\n name: appSpec.contract.name,\n desc: appSpec.contract.desc,\n structs: structs,\n methods: appSpec.contract.methods.map(\n (m) =>\n ({\n name: m.name,\n desc: m.desc,\n args: m.args.map((a) => ({\n name: a.name,\n type: a.type,\n desc: a.desc,\n struct: a.name ? hint(m)?.structs?.[a.name]?.name : undefined,\n defaultValue: getDefaultArgValue(!a.name ? undefined : hint(m)?.default_arguments?.[a.name]),\n })),\n returns: {\n type: m.returns.type,\n desc: m.returns.desc,\n struct: hint(m)?.structs?.output?.name,\n },\n events: [],\n readonly: hint(m)?.read_only,\n actions: {\n create: actions(m, 'CREATE') as Arc56Method['actions']['create'],\n call: actions(m, 'CALL'),\n },\n }) satisfies Arc56Method,\n ),\n state: {\n schema: {\n global: {\n ints: appSpec.state.global.num_uints,\n bytes: appSpec.state.global.num_byte_slices,\n },\n local: {\n ints: appSpec.state.local.num_uints,\n bytes: appSpec.state.local.num_byte_slices,\n },\n },\n keys: {\n global: Object.fromEntries(\n Object.entries(appSpec.schema.global.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n local: Object.fromEntries(\n Object.entries(appSpec.schema.local.declared).map((s) => [\n s[0],\n {\n key: Buffer.from(s[1].key, 'utf-8').toString('base64'),\n keyType: 'AVMString',\n valueType: s[1].type === 'uint64' ? 'AVMUint64' : 'AVMBytes',\n desc: s[1].descr,\n } satisfies StorageKey,\n ]),\n ),\n box: {},\n },\n maps: {\n global: {},\n local: {},\n box: {},\n },\n },\n source: appSpec.source,\n bareActions: {\n create: bareActions('CREATE') as unknown as Arc56Contract['bareActions']['create'],\n call: bareActions('CALL'),\n },\n byteCode: undefined,\n compilerInfo: undefined,\n events: undefined,\n networks: undefined,\n scratchVariables: undefined,\n sourceInfo: undefined,\n templateVariables: undefined,\n } satisfies Arc56Contract\n}\n\nfunction getABIMethodParamsSignature(params: ABIMethodParams) {\n const args = params.args.map((a) => a.type).join(',')\n return `${params.name}(${args})${params.returns.type}`\n}\n\n/** An ARC-0032 Application Specification see https://github.com/algorandfoundation/ARCs/pull/150 */\nexport interface AppSpec {\n /** Method call hints */\n hints: HintSpec\n /** The TEAL source */\n source: AppSources\n /** The ABI-0004 contract definition see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0004.md */\n contract: ABIContractParams\n /** The values that make up the local and global state */\n schema: SchemaSpec\n /** The rolled-up schema allocation values for local and global state */\n state: StateSchemaSpec\n /** The config of all BARE calls (i.e. non ABI calls with no args) */\n bare_call_config: CallConfig\n}\n\ninterface ABIContractParams {\n name: string\n desc?: string\n networks?: ABIContractNetworks\n methods: ABIMethodParams[]\n events?: ARC28Event[]\n}\n\ninterface ABIContractNetworks {\n [network: string]: ABIContractNetworkInfo\n}\n\ninterface ABIContractNetworkInfo {\n appID: number\n}\n\ninterface ABIMethodParams {\n name: string\n desc?: string\n args: ABIMethodArgParams[]\n returns: ABIMethodReturnParams\n /** Optional, is it a read-only method (according to [ARC-22](https://arc.algorand.foundation/ARCs/arc-0022)) */\n readonly?: boolean\n /** [ARC-28](https://arc.algorand.foundation/ARCs/arc-0028) events that MAY be emitted by this method */\n events?: ARC28Event[]\n}\n\ninterface ABIMethodArgParams {\n type: string\n name?: string\n desc?: string\n}\n\ninterface ABIMethodReturnParams {\n type: string\n desc?: string\n}\n\n/** A lookup of encoded method call spec to hint */\nexport type HintSpec = Record<string, Hint>\n\n/** The TEAL source of a contract */\nexport interface AppSources {\n /** The TEAL source of the approval program */\n approval: string\n /** The TEAL source of the clear program */\n clear: string\n}\n\n/** The various call configs:\n * * `NEVER`: Will not be called\n * * `CALL`: Can be called during a non-create call i.e. app id != 0\n * * `CREATE`: Can be called during a create call i.e. app id = 0\n * * `ALL`: Can be during a create OR non-create call\n **/\nexport type CallConfigValue = 'NEVER' | 'CALL' | 'CREATE' | 'ALL'\n\n/** Call configuration for a method */\nexport interface CallConfig {\n /** NoOp call config */\n no_op?: CallConfigValue\n /** Opt-in call config */\n opt_in?: CallConfigValue\n /** Close out call config */\n close_out?: CallConfigValue\n /** Update call config */\n update_application?: CallConfigValue\n /** Delete call config */\n delete_application?: CallConfigValue\n}\n\n/** Hint information for a given method call to allow client generation */\nexport interface Hint {\n /** Any user-defined struct/tuple types used in the method call, keyed by parameter name or `output` for return type */\n structs?: Record<string, Struct>\n read_only?: boolean\n default_arguments?: Record<string, DefaultArgument>\n call_config: CallConfig\n}\n\n/** The name of a field */\nexport type FieldName = string\n\n/** The string name of an ABI type */\nexport type ABIType = string\n\n/** The elements of the struct/tuple: `FieldName`, `ABIType` */\nexport type StructElement = [FieldName, ABIType]\n\n/** A user-defined struct/tuple type */\nexport interface Struct {\n /** The name of the type */\n name: string\n /** The elements (in order) that make up the struct/tuple */\n elements: StructElement[]\n}\n\n/**\n * Defines a strategy for obtaining a default value for a given ABI arg.\n */\nexport type DefaultArgument =\n | {\n /**\n * The default value should be fetched by invoking an ABI method\n */\n source: 'abi-method'\n data: ABIMethod\n }\n | {\n /**\n * The default value should be fetched from global state\n */\n source: 'global-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value should be fetched from the local state of the sender user\n */\n source: 'local-state'\n /**\n * The key of the state variable\n */\n data: string\n }\n | {\n /**\n * The default value is a constant.\n */\n source: 'constant'\n /**\n * The static default value to use.\n */\n data: string | number\n }\n\n/** AVM data type */\nexport type AVMType = 'uint64' | 'bytes'\n\n/** Declared schema value specification */\nexport interface DeclaredSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The name of the key */\n key: string\n /** A description of the variable */\n descr?: string\n /** Whether or not the value is set statically (at create time only) or dynamically */\n static?: boolean\n}\n\n/** Reserved schema value specification */\nexport interface ReservedSchemaValueSpec {\n /** The type of value */\n type: AVMType\n /** The description of the reserved storage space */\n descr: string\n /** The maximum number of slots to reserve */\n max_keys: number\n}\n\n/** The schema for global and local storage */\nexport interface SchemaSpec {\n /** The local storage schema */\n local: Schema\n /** The global storage schema */\n global: Schema\n}\n\n/** The storage schema definition */\nexport interface Schema {\n /** Declared storage schema */\n declared: Record<string, DeclaredSchemaValueSpec>\n /** Reserved storage schema */\n reserved: Record<string, ReservedSchemaValueSpec>\n}\n\n/** The rolled-up schema allocation specification for local and global state */\nexport interface StateSchemaSpec {\n /** Global storage spec */\n global: StateSchema\n /** Local storage spec */\n local: StateSchema\n}\n\n/** Schema spec summary for global or local storage */\nexport type StateSchema = {\n /** Number of uint slots */\n num_uints: number\n /** Number of byte slots */\n num_byte_slices: number\n}\n"],"mappings":"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"}