UNPKG

@dstoken-solana/rwa-token-sdk

Version:

RWA Token SDK for the development of permissioned tokens on SVM blockchains.

3,717 lines (3,710 loc) 157 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var anchor = require('@coral-xyz/anchor'); var web3_js = require('@solana/web3.js'); var splToken = require('@solana/spl-token'); var address$2 = "7tXjmbkZVY3Gmg9kDBebcNXT1yC5pyoxxXVLwdbv9tvP"; var metadata$2 = { name: "asset_controller", version: "0.0.1", spec: "0.1.0", description: "The Asset Controller Program (ACP) enables core asset management functionality for newly issued assets, including transfer controls and transaction privacy." }; var instructions$2 = [ { name: "create_asset_controller", docs: [ "create an rwa asset" ], discriminator: [ 97, 185, 6, 250, 248, 242, 68, 105 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "authority" }, { name: "asset_controller", writable: true, pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "asset_mint", writable: true, signer: true }, { name: "extra_metas_account", writable: true }, { name: "policy_engine_account", writable: true }, { name: "identity_registry_account", writable: true }, { name: "policy_engine", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "identity_registry", address: "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "args", type: { defined: { name: "CreateAssetControllerArgs" } } } ] }, { name: "disable_memo_transfer", docs: [ "memo transfer disable" ], discriminator: [ 68, 156, 197, 9, 43, 91, 114, 19 ], accounts: [ { name: "owner", signer: true }, { name: "authority", signer: true }, { name: "asset_mint" }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "token_account", writable: true }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ ] }, { name: "enable_memo_transfer", docs: [ "memo transfer enable" ], discriminator: [ 186, 78, 97, 172, 71, 172, 99, 0 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "owner", signer: true }, { name: "authority", signer: true }, { name: "asset_mint" }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "token_account", writable: true, pda: { seeds: [ { kind: "account", path: "owner" }, { kind: "account", path: "token_program" }, { kind: "account", path: "asset_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ ] }, { name: "freeze_token_account", docs: [ "freeze token account" ], discriminator: [ 138, 168, 178, 109, 205, 224, 209, 93 ], accounts: [ { name: "authority", signer: true }, { name: "asset_mint", writable: true }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "token_account", writable: true }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" } ], args: [ ] }, { name: "issue_tokens", docs: [ "issue shares of the rwa asset" ], discriminator: [ 40, 207, 145, 106, 249, 54, 23, 179 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "authority", writable: true, signer: true }, { name: "asset_mint", writable: true, relations: [ "identity_registry", "tracker_account" ] }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "to" }, { name: "token_account", writable: true, pda: { seeds: [ { kind: "account", path: "to" }, { kind: "account", path: "token_program" }, { kind: "account", path: "asset_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "identity_registry", relations: [ "identity_account" ] }, { name: "identity_account", relations: [ "wallet_identity_account" ] }, { name: "tracker_account", writable: true }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "policy_engine", writable: true }, { name: "wallet_identity_account" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "amount", type: "u64" }, { name: "issuance_timestamp", type: "i64" } ] }, { name: "revoke_tokens", docs: [ "revoke shares of the rwa asset" ], discriminator: [ 215, 42, 15, 134, 173, 80, 33, 21 ], accounts: [ { name: "authority", writable: true, signer: true }, { name: "asset_mint", writable: true, relations: [ "identity_registry", "tracker_account" ] }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "revoke_token_account", writable: true }, { name: "identity_registry", relations: [ "identity_account" ] }, { name: "identity_account", relations: [ "wallet_identity_account" ] }, { name: "tracker_account", writable: true }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "policy_engine", writable: true }, { name: "wallet_identity_account" }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "associated_token_program", address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "amount", type: "u64" }, { name: "reason", type: "string" } ] }, { name: "seize_tokens", docs: [ "seize shares of the rwa asset" ], discriminator: [ 79, 30, 69, 54, 78, 1, 16, 23 ], accounts: [ { name: "authority", writable: true, signer: true }, { name: "asset_mint" }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "destination_token_account", writable: true }, { name: "source_token_account", writable: true }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "amount", type: "u64" }, { name: "reason", type: "string" } ] }, { name: "thaw_token_account", docs: [ "thaw token account" ], discriminator: [ 199, 172, 96, 93, 244, 252, 137, 171 ], accounts: [ { name: "authority", signer: true }, { name: "asset_mint", writable: true }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "token_account", writable: true }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" } ], args: [ ] }, { name: "update_metadata", docs: [ "edit metadata of the rwa asset" ], discriminator: [ 170, 182, 43, 239, 97, 78, 225, 186 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "authority", writable: true, signer: true }, { name: "asset_mint", writable: true }, { name: "asset_controller", pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "token_program", address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "args", type: { defined: { name: "UpdateAssetMetadataArgs" } } } ] } ]; var accounts$2 = [ { name: "AssetControllerAccount", discriminator: [ 70, 136, 149, 138, 12, 87, 52, 105 ] }, { name: "IdentityAccount", discriminator: [ 194, 90, 181, 160, 182, 206, 116, 158 ] }, { name: "IdentityRegistryAccount", discriminator: [ 154, 254, 118, 4, 115, 36, 125, 78 ] }, { name: "PolicyEngineAccount", discriminator: [ 124, 85, 205, 80, 2, 18, 26, 45 ] }, { name: "TrackerAccount", discriminator: [ 83, 95, 166, 148, 57, 30, 90, 210 ] }, { name: "WalletIdentity", discriminator: [ 101, 142, 55, 104, 168, 77, 57, 85 ] } ]; var events$2 = [ { name: "AssetMetadataEvent", discriminator: [ 90, 19, 200, 229, 103, 82, 218, 16 ] }, { name: "BurnEvent", discriminator: [ 33, 89, 47, 117, 82, 124, 238, 250 ] }, { name: "ExtensionMetadataEvent", discriminator: [ 22, 198, 253, 69, 234, 122, 248, 117 ] }, { name: "IssueEvent", discriminator: [ 220, 74, 136, 189, 186, 247, 253, 140 ] }, { name: "RevokeEvent", discriminator: [ 87, 202, 67, 213, 43, 84, 177, 3 ] }, { name: "SeizeEvent", discriminator: [ 100, 186, 127, 43, 145, 98, 208, 78 ] } ]; var errors$2 = [ { code: 6000, name: "TransferMintNotApproved", msg: "Transfer hasnt been approved for the asset mint" }, { code: 6001, name: "TransferFromNotApproved", msg: "Transfer hasnt been approved for from account" }, { code: 6002, name: "TransferToNotApproved", msg: "Transfer hasnt been approved for to account" }, { code: 6003, name: "TransferAmountNotApproved", msg: "Transfer hasnt been approved for the specified amount" }, { code: 6004, name: "InvalidPolicyAccount", msg: "Invalid policy account passed" }, { code: 6005, name: "TransferSlotNotApproved", msg: "Invalid slot for approve account" }, { code: 6006, name: "TransferHistoryFull", msg: "Transfer history is full" }, { code: 6007, name: "Unauthorized", msg: "Unauthorized" }, { code: 6008, name: "InvalidPdaPassedIn", msg: "Pda passed in for transfer is wrong" }, { code: 6009, name: "TokenAccountNotInitialized", msg: "Token account is not initialized" }, { code: 6010, name: "TokenAccountAlreadyInitialized", msg: "Token account is already initialized" }, { code: 6011, name: "InvalidIdentityAccounts", msg: "Invalid identity accounts" }, { code: 6012, name: "InvalidAuthority", msg: "Invalid authority" } ]; var types$2 = [ { name: "AssetControllerAccount", type: { kind: "struct", fields: [ { name: "version", type: "u8" }, { name: "asset_mint", docs: [ "mint pubkey" ], type: "pubkey" }, { name: "authority", docs: [ "authority has the ability to seize, freeze token accounts, etc." ], type: "pubkey" } ] } }, { name: "AssetMetadataEvent", type: { kind: "struct", fields: [ { name: "mint", type: "string" }, { name: "name", type: { option: "string" } }, { name: "symbol", type: { option: "string" } }, { name: "uri", type: { option: "string" } }, { name: "decimals", type: { option: "u8" } } ] } }, { name: "BurnEvent", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "reason", type: "string" }, { name: "wallet", type: "pubkey" }, { name: "mint", type: "pubkey" } ] } }, { name: "Counter", type: { kind: "struct", fields: [ { name: "value", type: "u64" }, { name: "id", type: "u8" }, { name: "identity_filter", type: { defined: { name: "IdentityFilter" } } } ] } }, { name: "CounterLimit", type: { kind: "enum", variants: [ { name: "HoldersLimit", fields: [ { name: "max", type: "u64" }, { name: "min", type: "u64" }, { name: "counter_id", type: "u8" } ] }, { name: "GroupedHoldersLimit", fields: [ { name: "max", type: "u64" }, { name: "min", type: "u64" }, { name: "counters", type: "bytes" } ] }, { name: "PercentageLimit", fields: [ { name: "higher_counter_id", type: "u8" }, { name: "lower_counter_id", type: "u8" }, { name: "min_percentage", type: "u8" }, { name: "max_percentage", type: "u8" } ] } ] } }, { name: "CreateAssetControllerArgs", type: { kind: "struct", fields: [ { name: "decimals", type: "u8" }, { name: "name", type: "string" }, { name: "symbol", type: "string" }, { name: "uri", type: "string" } ] } }, { name: "ExtensionMetadataEvent", type: { kind: "struct", fields: [ { name: "address", type: "string" }, { name: "extension_type", type: "u8" }, { name: "metadata", type: "bytes" } ] } }, { name: "FilterComparison", repr: { kind: "rust" }, type: { kind: "enum", variants: [ { name: "Or" }, { name: "And" } ] } }, { name: "FilterData", type: { kind: "struct", fields: [ { name: "level", type: { defined: { name: "FilterLevel" } } }, { name: "target", type: { defined: { name: "FilterTarget" } } }, { name: "mode", type: { defined: { name: "FilterMode" } } } ] } }, { name: "FilterInner", repr: { kind: "rust" }, type: { kind: "enum", variants: [ { name: "Single", fields: [ { defined: { name: "FilterData" } } ] }, { name: "Tuple", fields: [ { defined: { name: "FilterData" } }, { defined: { name: "FilterComparison" } }, { defined: { name: "FilterData" } } ] }, { name: "Multiple", fields: [ { defined: { name: "FilterComparison" } }, { vec: { defined: { name: "FilterData" } } } ] } ] } }, { name: "FilterLevel", type: { kind: "enum", variants: [ { name: "Level", fields: [ "u8" ] }, { name: "LevelMappingAny", fields: [ "u8" ] }, { name: "LevelMapping", fields: [ { name: "source", type: "u8" }, { name: "target", type: "u8" } ] }, { name: "Country", fields: [ "u8" ] }, { name: "CountryMapping", fields: [ "u8" ] } ] } }, { name: "FilterMode", repr: { kind: "rust" }, type: { kind: "enum", variants: [ { name: "Include" }, { name: "Exclude" } ] } }, { name: "FilterTarget", repr: { kind: "rust" }, type: { kind: "enum", variants: [ { name: "Sender" }, { name: "Receiver" }, { name: "BothAnd" }, { name: "BothOr" } ] } }, { name: "IdentityAccount", type: { kind: "struct", fields: [ { name: "version", docs: [ "version of the account" ], type: "u8" }, { name: "identity_registry", docs: [ "identity registry to which the account belongs" ], type: "pubkey" }, { name: "owner", docs: [ "owner of the identity account" ], type: "pubkey" }, { name: "num_wallets", docs: [ "number of wallets attached to this identity account" ], type: "u16" }, { name: "country", docs: [ "country code of the user" ], type: "u8" }, { name: "levels", type: { vec: { defined: { name: "IdentityLevel" } } } } ] } }, { name: "IdentityFilter", repr: { kind: "rust" }, type: { kind: "enum", variants: [ { name: "Simple", fields: [ { defined: { name: "FilterInner" } } ] }, { name: "IfThen", fields: [ { defined: { name: "FilterInner" } }, { defined: { name: "FilterInner" } } ] } ] } }, { name: "IdentityLevel", type: { kind: "struct", fields: [ { name: "level", type: "u8" }, { name: "expiry", type: "i64" } ] } }, { name: "IdentityRegistryAccount", type: { kind: "struct", fields: [ { name: "version", type: "u8" }, { name: "bump", type: "u8" }, { name: "asset_mint", docs: [ "corresponding asset mint" ], type: "pubkey" }, { name: "authority", docs: [ "authority to manage the registry" ], type: "pubkey" } ] } }, { name: "Issuance", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "issue_time", type: "i64" } ] } }, { name: "IssuancePolicies", type: { kind: "struct", fields: [ { name: "disallow_backdating", type: "bool" }, { name: "max_supply", type: "u64" }, { name: "us_lock_period", type: "i64" }, { name: "non_us_lock_period", type: "i64" } ] } }, { name: "IssueEvent", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "issuance_timestamp", type: "i64" }, { name: "wallet", type: "pubkey" }, { name: "mint", type: "pubkey" } ] } }, { name: "Lock", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "release_time", type: "i64" }, { name: "reason", type: "u64" }, { name: "reason_string", type: "string" } ] } }, { name: "Policy", type: { kind: "struct", fields: [ { name: "hash", type: "string" }, { name: "identity_filter", type: { defined: { name: "IdentityFilter" } } }, { name: "policy_type", type: { defined: { name: "PolicyType" } } }, { name: "custom_error", type: "u8" } ] } }, { name: "PolicyEngineAccount", type: { kind: "struct", fields: [ { name: "version", docs: [ "version" ], type: "u8" }, { name: "asset_mint", docs: [ "asset mint" ], type: "pubkey" }, { name: "authority", docs: [ "authority of the registry" ], type: "pubkey" }, { name: "mapping", docs: [ "generic mapping for levels" ], type: { array: [ "u8", 256 ] } }, { name: "issuance_policies", docs: [ "policies to apply on issuance", "these are partially for storage only" ], type: { defined: { name: "IssuancePolicies" } } }, { name: "policies", docs: [ "policies to check on transfers or balance changes" ], type: { vec: { defined: { name: "Policy" } } } }, { name: "counters", docs: [ "counters to track the number of holders depending on filters" ], type: { vec: { defined: { name: "Counter" } } } }, { name: "counter_limits", docs: [ "limits to apply on existing counters" ], type: { vec: { defined: { name: "CounterLimit" } } } } ] } }, { name: "PolicyType", type: { kind: "enum", variants: [ { name: "IdentityApproval" }, { name: "TransactionAmountLimit", fields: [ { name: "limit", type: "u64" } ] }, { name: "MaxBalance", fields: [ { name: "limit", type: "u64" } ] }, { name: "MinBalance", fields: [ { name: "limit", type: "u64" } ] }, { name: "MinMaxBalance", fields: [ { name: "min", type: "u64" }, { name: "max", type: "u64" } ] }, { name: "TransferPause" }, { name: "ForbiddenIdentityGroup" }, { name: "ForceFullTransfer" }, { name: "BlockFlowbackEndTime", fields: [ { name: "time", type: "i64" } ] } ] } }, { name: "RevokeEvent", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "reason", type: "string" }, { name: "wallet", type: "pubkey" }, { name: "mint", type: "pubkey" } ] } }, { name: "SeizeEvent", type: { kind: "struct", fields: [ { name: "amount", type: "u64" }, { name: "reason", type: "string" }, { name: "wallet", type: "pubkey" }, { name: "to_wallet", type: "pubkey" }, { name: "mint", type: "pubkey" } ] } }, { name: "TrackerAccount", type: { kind: "struct", fields: [ { name: "version", type: "u8" }, { name: "asset_mint", type: "pubkey" }, { name: "identity_account", type: "pubkey" }, { name: "total_amount", type: "u64" }, { name: "issuances", type: { vec: { defined: { name: "Issuance" } } } }, { name: "locks", type: { vec: { defined: { name: "Lock" } } } } ] } }, { name: "UpdateAssetMetadataArgs", type: { kind: "struct", fields: [ { name: "name", type: { option: "string" } }, { name: "symbol", type: { option: "string" } }, { name: "uri", type: { option: "string" } } ] } }, { name: "WalletIdentity", type: { kind: "struct", fields: [ { name: "identity_account", type: "pubkey" }, { name: "wallet", type: "pubkey" } ] } } ]; var AssetController$1 = { address: address$2, metadata: metadata$2, instructions: instructions$2, accounts: accounts$2, events: events$2, errors: errors$2, types: types$2 }; var AssetControllerIdl = /*#__PURE__*/Object.freeze({ __proto__: null, address: address$2, metadata: metadata$2, instructions: instructions$2, accounts: accounts$2, events: events$2, errors: errors$2, types: types$2, 'default': AssetController$1 }); var address$1 = "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA"; var metadata$1 = { name: "identity_registry", version: "0.0.1", spec: "0.1.0", description: "The Identity Registry Program (IRP) manages the configurable issuance and tracking of on-chain identities to enable on-chain transaction permissioning.", repository: "https://github.com/bridgesplit/rwa" }; var instructions$1 = [ { name: "add_level_to_identity_account", docs: [ "add level to identity account" ], discriminator: [ 102, 204, 64, 169, 252, 177, 192, 232 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "identity_registry" }, { name: "identity_account", writable: true, pda: { seeds: [ { kind: "account", path: "identity_registry" }, { kind: "account", path: "identity_account.owner", account: "IdentityAccount" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "policy_engine", writable: true }, { name: "tracker_account" }, { name: "asset_mint", relations: [ "identity_registry" ] }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "levels", type: "bytes" }, { name: "expiries", type: { vec: "i64" } }, { name: "enforce_limits", type: "bool" } ] }, { name: "attach_wallet_to_identity", docs: [ "attach token account to identity account" ], discriminator: [ 61, 129, 252, 190, 8, 202, 179, 90 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "authority", signer: true }, { name: "identity_account", writable: true }, { name: "identity_registry", relations: [ "identity_account" ] }, { name: "asset_mint", relations: [ "identity_registry" ] }, { name: "wallet_identity", writable: true, pda: { seeds: [ { kind: "arg", path: "wallet" }, { kind: "account", path: "asset_mint" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "wallet", type: "pubkey" } ] }, { name: "change_country", discriminator: [ 208, 227, 224, 246, 9, 254, 62, 179 ], accounts: [ { name: "payer", signer: true }, { name: "signer", signer: true }, { name: "identity_registry" }, { name: "identity_account", writable: true, pda: { seeds: [ { kind: "account", path: "identity_registry" }, { kind: "account", path: "identity_account.owner", account: "IdentityAccount" } ] } }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "policy_engine", writable: true }, { name: "tracker_account" }, { name: "asset_mint", relations: [ "identity_registry" ] }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "new_country", type: "u8" }, { name: "enforce_limits", type: "bool" } ] }, { name: "create_identity_account", docs: [ "identity functions", "create identity account" ], discriminator: [ 82, 240, 35, 129, 113, 134, 116, 70 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "identity_registry" }, { name: "identity_account", writable: true, pda: { seeds: [ { kind: "account", path: "identity_registry" }, { kind: "arg", path: "owner" } ] } }, { name: "wallet_identity", writable: true, pda: { seeds: [ { kind: "arg", path: "owner" }, { kind: "account", path: "identity_registry.asset_mint", account: "IdentityRegistryAccount" } ] } }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "tracker_account", writable: true }, { name: "asset_mint" }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "owner", type: "pubkey" }, { name: "level", type: "u8" }, { name: "expiry", type: "i64" }, { name: "country", type: "u8" } ] }, { name: "create_identity_registry", docs: [ "registry functions", "create identity registry" ], discriminator: [ 180, 3, 39, 22, 183, 212, 39, 209 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "asset_mint" }, { name: "identity_registry_account", writable: true, pda: { seeds: [ { kind: "account", path: "asset_mint" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" } ], args: [ { name: "authority", type: "pubkey" } ] }, { name: "detach_wallet_from_identity", docs: [ "detach token account from identity account" ], discriminator: [ 166, 70, 236, 254, 166, 116, 201, 50 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "authority", writable: true, signer: true }, { name: "wallet_identity", writable: true }, { name: "identity_account", writable: true, relations: [ "wallet_identity" ] }, { name: "identity_registry", relations: [ "identity_account" ] }, { name: "token_account", pda: { seeds: [ { kind: "account", path: "wallet_identity.wallet", account: "WalletIdentity" }, { kind: "const", value: [ 6, 221, 246, 225, 238, 117, 143, 222, 24, 66, 93, 188, 228, 108, 205, 218, 182, 26, 252, 77, 131, 185, 13, 39, 254, 189, 249, 40, 216, 161, 139, 252 ] }, { kind: "account", path: "asset_mint" } ], program: { kind: "const", value: [ 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, 219, 233, 248, 89 ] } } }, { name: "asset_mint", relations: [ "identity_registry" ] }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ ] }, { name: "remove_level_from_identity_account", docs: [ "remove level from identity account" ], discriminator: [ 194, 231, 187, 54, 197, 136, 170, 55 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "identity_registry" }, { name: "identity_account", writable: true, pda: { seeds: [ { kind: "account", path: "identity_registry" }, { kind: "account", path: "identity_account.owner", account: "IdentityAccount" } ] } }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "policy_engine", writable: true }, { name: "tracker_account" }, { name: "asset_mint" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "levels", type: "bytes" }, { name: "enforce_limits", type: "bool" } ] }, { name: "revoke_identity_account", docs: [ "revoke user identity account by closing account" ], discriminator: [ 77, 88, 182, 61, 235, 49, 2, 137 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "identity_registry", pda: { seeds: [ { kind: "account", path: "identity_registry.asset_mint", account: "IdentityRegistryAccount" } ] } }, { name: "identity_account", writable: true, pda: { seeds: [ { kind: "account", path: "identity_registry" }, { kind: "account", path: "identity_account.owner", account: "IdentityAccount" } ] }, relations: [ "wallet_identity" ] }, { name: "wallet_identity", writable: true, pda: { seeds: [ { kind: "arg", path: "owner" }, { kind: "account", path: "identity_registry.asset_mint", account: "IdentityRegistryAccount" } ] } }, { name: "policy_engine_program", address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2" }, { name: "tracker_account", writable: true }, { name: "asset_mint" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "owner", type: "pubkey" } ] } ]; var accounts$1 = [ { name: "IdentityAccount", discriminator: [ 194, 90, 181, 160, 182, 206, 116, 158 ] }, { name: "IdentityRegistryAccount", discriminator: [ 154, 254, 118, 4, 115, 36, 125, 78 ] }, { name: "WalletIdentity", discriminator: [ 101, 142, 55, 104, 168, 77, 57, 85 ] } ]; var events$1 = [ { name: "AddLevelsToIdentityEvent", discriminator: [ 106, 66, 2, 157, 98, 27, 247, 14 ] }, { name: "AttachWalletToIdentityEvent", discriminator: [ 16, 40, 24, 145, 131, 77, 48, 72 ] }, { name: "ChangeCountryEvent", discriminator: [ 157, 201, 26, 238, 229, 239, 123, 18 ] }, { name: "CreatedIdentityEvent", discriminator: [ 86, 208, 163, 74, 106, 170, 105, 5 ] }, { name: "DetachWalletFromIdentityEvent", discriminator: [ 198, 117, 190, 61, 34, 148, 12, 148 ] }, { name: "RemoveLevelsFromIdentityEvent", discriminator: [ 41, 204, 239, 52, 86, 107, 45, 212 ] }, { name: "RemovedIdentityEvent", discriminator: [ 210, 181, 206, 189, 126, 87, 18, 55 ] } ]; var errors$1 = [ { code: 6000, name: "LevelAlreadyPresent", msg: "Identity level has already been attached to user" }, { code: 6001, name: "MaxLevelsExceeded", msg: "Number of levels that can be attached to user has been exceeded" }, { code: 6002, name: "LevelNotFound", msg: "Level to be removed not found" }, { code: 6003, name: "UnauthorizedSigner", msg: "Unauthorized signer" }, { code: 6004, name: "LimitReached", msg: "Identity limit reached" }, { code: 6005, name: "TokenAccountAlreadyInitialized", msg: "Token account is already initialized" }, { code: 6006, name: "IdentityCreationRequired", msg: "Identity creation must be enforced for this feature" }, { code: 6007, name: "MultipleWalletsNotAllowed", msg: "Multiple wallets are not allowed" }, { code: 6008, name: "WalletAlreadyInUse", msg: "Wallet already in use" }, { code: 6009, name: "InvalidLevel", msg: "Invalid level" }, { code: 6010, name: "TokenAccountNotEmpty", msg: "Token account is not empty" } ]; var types$1 = [ { name: "AddLevelsToIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "levels", type: "bytes" }, { name: "expiries", type: { vec: "i64" } }, { name: "sender", type: "pubkey" } ] } }, { name: "AttachWalletToIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "wallet", type: "pubkey" }, { name: "sender", type: "pubkey" } ] } }, { name: "ChangeCountryEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "country", type: "u8" }, { name: "sender", type: "pubkey" } ] } }, { name: "CreatedIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "kind", type: "u8" }, { name: "sender", type: "pubkey" }, { name: "owner", type: "pubkey" } ] } }, { name: "DetachWalletFromIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "wallet", type: "pubkey" }, { name: "sender", type: "pubkey" } ] } }, { name: "IdentityAccount", type: { kind: "struct", fields: [ { name: "version", docs: [ "version of the account" ], type: "u8" }, { name: "identity_registry", docs: [ "identity registry to which the account belongs" ], type: "pubkey" }, { name: "owner", docs: [ "owner of the identity account" ], type: "pubkey" }, { name: "num_wallets", docs: [ "number of wallets attached to this identity account" ], type: "u16" }, { name: "country", docs: [ "country code of the user" ], type: "u8" }, { name: "levels", type: { vec: { defined: { name: "IdentityLevel" } } } } ] } }, { name: "IdentityLevel", type: { kind: "struct", fields: [ { name: "level", type: "u8" }, { name: "expiry", type: "i64" } ] } }, { name: "IdentityRegistryAccount", type: { kind: "struct", fields: [ { name: "version", type: "u8" }, { name: "bump", type: "u8" }, { name: "asset_mint", docs: [ "corresponding asset mint" ], type: "pubkey" }, { name: "authority", docs: [ "authority to manage the registry" ], type: "pubkey" } ] } }, { name: "RemoveLevelsFromIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "levels", type: "bytes" }, { name: "sender", type: "pubkey" } ] } }, { name: "RemovedIdentityEvent", type: { kind: "struct", fields: [ { name: "identity", type: "pubkey" }, { name: "mint", type: "pubkey" }, { name: "kind", type: "u8" }, { name: "sender", type: "pubkey" }, { name: "owner", type: "pubkey" } ] } }, { name: "WalletIdentity", type: { kind: "struct", fields: [ { name: "identity_account", type: "pubkey" }, { name: "wallet", type: "pubkey" } ] } } ]; var IdentityRegistry$1 = { address: address$1, metadata: metadata$1, instructions: instructions$1, accounts: accounts$1, events: events$1, errors: errors$1, types: types$1 }; var IdentityRegistryIdl = /*#__PURE__*/Object.freeze({ __proto__: null, address: address$1, metadata: metadata$1, instructions: instructions$1, accounts: accounts$1, events: events$1, errors: errors$1, types: types$1, 'default': IdentityRegistry$1 }); var address = "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"; var metadata = { name: "policy_engine", version: "0.0.1", spec: "0.1.0", description: "The Policy Registry Program (PRP) enables the creation of policies that can be used to control the flow of funds in a programmatic way." }; var instructions = [ { name: "add_lock", discriminator: [ 242, 102, 183, 107, 109, 168, 82, 140 ], accounts: [ { name: "payer", writable: true, signer: true }, { name: "signer", signer: true }, { name: "asset_mint", relations: [ "policy_engine", "identity_registry" ] }, { name: "policy_engine", writable: true }, { name: "identity_registry", relations: [ "identity_account" ] }, { name: "identity_account", relations: [ "tracker_account" ] }, { name: "tracker_account", writable: true }, { name: "system_program", address: "11111111111111111111111111111111" }, { name: "event_authority", pda: { seeds: [ { kind: "const", value: [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { name: "program" } ], args: [ { name: "amount", type: "u64" }, { name: "release_timestamp", type: "i64" }, { name: "reason", type: "u64" }, { name: "reason_string", type: "string" } ] }, { name: "attach_to_policy_engine", docs: [ "policies", "attach a policy" ], d